(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...
修飾符 許可權修飾符
四種形式許可權修飾符的訪問情況 publicprotected不寫private 同乙個類中 四種都可以 同一包中的不同類 除了private剩下都可以 不同包下的子類 public protected 可以 不同包下的不同類 只有public可以 許可權修飾符 public protected 預...
修飾符,關鍵字
params修飾符 注 引數的最後乙個修飾符用於向方法傳遞數量不定的引數,關鍵字params必須與乙個單獨的一維陣列,並且應該是引數列表的最後一項,並且每個方法宣告中,只能有乙個params修飾符。如下所示 static void main name console.writeline ssn ss...