(1).null和not null
not null不可以插入null,但可以插入空值。
數值型、字元型、日期型都可以插入null,但只有字元型可以插入空值。
使用方法如下:
mysql> create database test_db;
query ok, 1 row affected (0.00 sec)
mysql> use test_db;
database changed
mysql> create table `notnull_table`(name varchar(20) not null);
query ok, 0 rows affected (0.02 sec)
mysql> insert into notnull_table values (null); //設定not null的列是不允許插入null的
error 1048 (23000): column 'name' cannot be null
mysql> insert into notnull_table values (''); //但可以插入空值
query ok, 1 row affected (0.00 sec)
mysql> insert into notnull_table values ('jack');
query ok, 1 row affected (0.01 sec)
空值與null的區別:空值不占用空間,但null占用空間(計算1位元組)。
not null比null的效率高。這是因為null不是空值,占用空間,所以進行字段比較時,null會參與字段比較,對效率有一部分影響。而且索引不會儲存null值,索引的效率會下降很多。
(2).default
de****t,預設值。
mysql> create table default_table(id int not null,name varchar(20) not null default 'test');
query ok, 0 rows affected (0.03 sec)
mysql> insert into default_table(id) values(1);
query ok, 1 row affected (0.00 sec)
mysql> select * from default_table;
| id | name |
| 1 | test |
1 row in set (0.00 sec)
注意:如果字元型字段沒有設定default,可以為null時,預設為null;不可以為null時,報錯。enum單獨處理,預設為第乙個元素。時間字段沒有default,預設為當前時間。
(3).auto_increment
auto_increment,自動增長,每次自動加1,只能用於數值型。不過用上auto_increment好像就必須為主鍵,不然mysql會報1075的錯誤資訊。
mysql> create table auto_table(id bigint auto_increment primary key,name varchar(20));
query ok, 0 rows affected (0.02 sec)
mysql> insert into auto_table(name) values('name');
query ok, 1 row affected (0.00 sec)
mysql> select * from auto_table;
| id | name |
| 1 | name |
1 row in set (0.00 sec)
(4).擴充套件:清除表資料,包括auto_increment值
一般情況下,刪除表資料會使用delete命令,但是delete是沒有辦法清除auto_increment值的。如下:
mysql> select * from auto_table;
| id | name |
| 1 | name |
1 row in set (0.00 sec)
mysql> delete from auto_table;
query ok, 1 row affected (0.03 sec)
mysql> insert into auto_table(name) values('name2');
query ok, 1 row affected (0.01 sec)
mysql> select * from auto_table;
| id | name |
| 2 | name2 |
1 row in set (0.00 sec)
這時候就需要使用truncate命令。如下:
mysql> select * from auto_table;
| id | name |
| 2 | name2 |
1 row in set (0.00 sec)
mysql> truncate table auto_table;
query ok, 0 rows affected (0.02 sec)
mysql> insert into auto_table(name) values('name3');
query ok, 1 row affected (0.01 sec)
mysql> select * from auto_table;
| id | name |
| 1 | name3 |
1 row in set (0.00 sec)
注意:truncate會清除表的所有資料。如果只想清除auto_increment值,不要使用該命令。
(5).擴充套件
其實除了以上幾個,還存在檢查約束、外來鍵約束、主鍵約束和唯一約束,而主鍵約束和唯一約束也是索引。
mysql中修飾符 Mysql欄位修飾符(約束)
1 null和not null not null不可以插入null,但可以插入空值。數值型 字元型 日期型都可以插入null,但只有字元型可以插入空值。使用方法如下 mysql create database test db query ok,1 row affected 0.00 sec mysq...
mysql 字段 MySQL欄位型別詳解
mysql支援大量的列型別,它可以被分為3類 數字型別 日期和時間型別以及字串 字元 型別。本節首先給出可用型別的乙個概述,並且總結每個列型別的儲存需求,然後提供每個類中的型別性質的更詳細的描述。概述有意簡化,更詳細的說明應該考慮到有關特定列型別的附加資訊,例如你能為其指定值的允許格式。由mysql...
mysql表示字段 MySQL欄位型別
1 字段型別 字段型別分別為 數值型別 字串型別 日期時間型別。1.1 數值型別 數值型別分為整數型別和小數型別。整數型別為tinyint smallint mediumint int bigint。小數型別分為浮點型和定點型,有float double decimal。1.1.1 tinyint ...