例題SQL語句詳解-資料庫基本操作7-資料型別拓展
阿新 • • 發佈:2018-12-10
|
1.6 資料型別——boolean
MySQL不支援boolean型別,true和false在資料庫中對應1和0。
mysql> create table t15(
-> field boolean
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t15 values (true),(false); # true和false在資料庫中對應1和0
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from t15;
+-------+
| field |
+-------+
| 1 |
| 0 |
+-------+
2 rows in set (0.00 sec)
1.7 關於資料型別的思考題
- 手機號碼一般使用什麼資料型別儲存? char
- 電話號碼使用什麼資料型別 varchar
- 性別一般使用什麼資料型別儲存? char enum
- 學生年齡資訊一般使用什麼資料型別儲存? tinyint
- 照片資訊一般使用什麼資料型別儲存? binary
- 薪水一般使用什麼資料型別儲存? decimal
多學一招:一個欄位到底選數字還是字元,取決於有沒有計算的可能,如果沒有計算的可能即使是數字也要用字元型別,比如手機號、QQ號,…
1.8 列屬性——是否為空(null | not null)
null:可以為空
not null:不可以為空
思考題
- 學員姓名允許為空嗎? 非空
- 家庭地址允許為空嗎? 非空
- 電子郵件資訊允許為空嗎? 可以為空
- 考試成績允許為空嗎? 可以為空
1.9 列屬性——預設值(default)
1、如果一個欄位沒有插入值,可以預設插入一個指定的值。
2、default關鍵字用來插入預設值
mysql> create table t16(
-> id int unsigned,
-> addr varchar(20) not null default '地址不詳'
-> );
Query OK, 0 rows affected (0.06 sec)
mysql> insert into t16 values (1,'北京'),(2,default);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from t16;
+------+----------+
| id | addr |
+------+----------+
| 1 | 北京 |
| 2 | 地址不詳 |
+------+----------+
2 rows in set (0.00 sec)
1.10 列屬性——自動增長(auto_increment)
1、欄位的值從1開始,每次遞增1,特點就在欄位中的資料不可能重複,適合為記錄生成唯一的id
2、自動增長都是無符號整數。
3、在MySQL中,auto_increment必須是主鍵。但是主鍵不一定是自動增長的。
4、如果要給自動增長列插入資料,使用null關鍵字。
5、自動增長列上的資料被刪除,預設情況下此記錄的編號不再使用。
1.11 列屬性——主鍵(primary key)
主鍵:唯一標識表中記錄的一個或一組列
主鍵的特點:不能重複,不能為空
一個表只能有一個主鍵,主鍵可以有多個欄位組成。
主鍵的作用:
1、 保證資料完整性
2、 加快查詢速度
1.11.1 新增主鍵
方法一:建立表的時候新增主鍵
mysql> create table t17(
-> id varchar(5) primary key, # 建立主鍵
-> name varchar(10) not null
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t17 values ('s2531','tom'),('s2532','berry');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from t17;
+-------+-------+
| id | name |
+-------+-------+
| s2531 | tom |
| s2532 | berry |
+-------+-------+
2 rows in set (0.00 sec)
# 如果插入主鍵相同資料會報錯
mysql> insert into t17 values ('s2531','tom');
ERROR 1062 (23000): Duplicate entry 's2531' for key 'PRIMARY'
# 主鍵不能插入null值
mysql> insert into t17 values (null,'tom');
ERROR 1048 (23000): Column 'id' cannot be null
方法二:建立表的時候新增主鍵
mysql> create table t18(
-> id int,
-> name varchar(10),
-> primary key(id)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> desc t18;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
方法三:更改表的時候新增主鍵
mysql> create table t20(
-> id int,
-> name varchar(10)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> alter table t20 add primary key (id); # 更改表新增主鍵
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc t20;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)