亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

INSERT INTO tb2(age) values(10);這條記錄為什么可以執行?

root@b test>CREATE TABLE tb2(

? ? -> username varchar(100) NOT NULL,

? ? -> age TINYINT NULL

? ? -> );

Query OK, 0 rows affected (1.70 sec)


root@b test>SHOW COLUMNS FROM tb2;

+----------+--------------+------+-----+---------+-------+

| Field ? ?| Type ? ? ? ? | Null | Key | Default | Extra |

+----------+--------------+------+-----+---------+-------+

| username | varchar(100) | NO ? | ? ? | NULL ? ?| ? ? ? |

| age ? ? ?| tinyint(4) ? | YES ?| ? ? | NULL ? ?| ? ? ? |

+----------+--------------+------+-----+---------+-------+

2 rows in set (0.03 sec)


root@b test>INSERT INTO tb2(username) values('Tom');

Query OK, 1 row affected (0.04 sec)


root@b test>INSERT INTO tb2(age) values(10);

Query OK, 1 row affected, 1 warning (0.04 sec)


root@b test>SHOW WARNINGS;

+---------+------+-----------------------------------------------+

| Level ? | Code | Message ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |

+---------+------+-----------------------------------------------+

| Warning | 1364 | Field 'username' doesn't have a default value |

+---------+------+-----------------------------------------------+

1 row in set (0.02 sec)


root@b test>INSERT INTO tb2 values('Jerri',NULL);

Query OK, 1 row affected (0.56 sec)


root@b test>INSERT INTO tb2 values(NULL,21);

ERROR 1048 (23000): Column 'username' cannot be null

root@b test>SELECT t.* FROM tb2 t;

+----------+------+

| username | age ?|

+----------+------+

| Tom ? ? ?| NULL |

| ? ? ? ? ?| ? 10 |

| Jerri ? ?| NULL |

+----------+------+

3 rows in set (0.00 sec)


正在回答

2 回答

在table的后面用小括號可以注明你想賦值的字段,單獨賦值是被允許的,非空約束存在的意義是:一次性或者小括號選定欲給這個字段賦值的時候,必須要賦值,而不是說沒有選定這個字段進行賦值時候,同列的其他字段就無法被賦值。

0 回復 有任何疑惑可以回復我~
#1

shuiyibu 提問者

非常感謝!
2016-01-07 回復 有任何疑惑可以回復我~

http://img1.sycdn.imooc.com//568dcce00001cf7605680235.jpg

以上就是插入表數據的三種方式,我們可以通過指定部分字段去插入數據(第一條insert),那么其他字段的值就默認為null,也可以通過指定所有字段去插入數據(第二條insert),這種方式與第三條insert是等價的,即我們也可以不指定列名去插入數據,這種情況,你必須去指定所有字段的對應值,即使指定為null!

0 回復 有任何疑惑可以回復我~
#1

shuiyibu 提問者

THX
2016-01-07 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
與MySQL的零距離接觸
  • 參與學習       396743    人
  • 解答問題       3497    個

本課程涵蓋全部MySQL數據庫的基礎,學習MySQL數據庫的基礎知識

進入課程

INSERT INTO tb2(age) values(10);這條記錄為什么可以執行?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號