mysql修飾 Mysql欄位修飾符(約束)

2021-10-17 12:30:35 字數 2901 閱讀 4290

(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 ...