1. 某些列不插入內容,值是多少?
自動填充NULL
2. NOT NULL是干嘛的?
不能為NULL類型,因為NULL類型查詢的時候需要加語句 IS NULL 或者IS NOT NULL
效率低,查詢速度慢,開發中我們一般不可以設置為默認的能插入NULL類型。
所以會使用NOT NULL來限制使用NULL類型。
3. 既然沒有默認值了,我們如何手動設置默認值?
使用哪個DEFAULT
1 -- 設置兩個列id和name 2 -- id內容不能為NULL 默認值0 3 -- name內容不能為NULL 默認值空字符串 4 CREATE TABLE t14 ( 5 id INT NOT NULL DEFAULT 0, 6 name CHAR(10) NOT NULL DEFAULT '' 7 ); 8 INSERT INTO t14 VALUES (1,'listi'); 9 INSERT INTO t14 (id) VALUES (2); 10 SELECT * FROM t14; 11 SELECT * FROM t14 WHERE name='';
1. 什么是主鍵?
PRIMARY KEY,能夠區分每一行的列
以會員為例
我們為了區分他們,往往給每一個會員加一個獨一五二的會員號,這個會員號就是主鍵,主要在唯一
的號碼上加。
2. 設置主鍵后一定不能重復
不重復的是不是都可以是主鍵?比如說手機號,email,也不重復。
當然不是,它還具備這么幾個特征,有順序,並且遞增或者遞減的一般才會加主鍵。
一張表中,不聲明主鍵也可以,取決於你表中數據有沒有有順序遞增或者遞減的列數據。
3. 兩種聲明主鍵的方式:
1 -- 在需要加主鍵的后面跟着主鍵語句 2 CREATE TABLE t15 ( 3 id INT PRIMARY KEY, 4 name CHAR(5) 5 ); 6 -- 在語句的最后再聲明一行聲明哪個列名要加主鍵 7 CREATE TABLE t16 ( 8 id INT, 9 name CHAR(5), 10 PRIMARY KEY(id) 11 ); 12 -- 不可以添加重復的信息 13 INSERT INTO t15 VALUES (3,'list'); 14 INSERT INTO t15 VALUES (3,'list');
4.主鍵往往和 AUTO_INCREMENT 一起使用
這並不意味着,他們兩個必須要綁定在一起使用,我們一般會把自增的列加上主鍵,提升效率。
但有時候,我們非要用email做主鍵,讓email這一個列提高效率,也是可以的。
5.AUTO_INCREMENT不可單獨使⽤
使用自增選項,必須要有索引設置,否則會報錯。
索引還有,普通索引INDEX,唯一UNIQUE,全文索引FULLTEXT。
表創建完畢后,能否添加 1 個列?刪除 1 個列?修改一個列?
新增一個列,或者刪除修改一個列,這屬於 DDL 操作,數據庫定義語言。
區分數據的增刪改,插⼊數據是指表中的數據,不會影響到表的結構。
新建user_info 表:
1 -- id,名字,性別,體重 2 CREATE TABLE user_info( 3 id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 4 username CHAR(20) NOT NULL DEFAULT '', 5 gender TINYINT UNSIGNED NOT NULL DEFAULT 0, 6 weight TINYINT UNSIGNED NOT NULL DEFAULT 0 7 )ENGINE=MyISAM DEFAULT CHARSET=utf8;
語法:
ALTER TABLE 表名 ADD 列名 列類型 列屬性... (新列 默認在表的最后)
ALTER TABLE 表名 ADD 列名 列類型 列屬性... AFTER 列名 (新列出現指定列后)
ALTER TABLE 表名 ADD 列名 列類型 列屬性... FIRST (新列為第 1 列)
ALTER TABLE 表名 CHANGE 舊列名 新列名 新類型 列屬性....
ALTER TABLE 表名 MODIFY 列名 新屬性....
ALTER TABLE 表名 DROP [COLUNM] 列名
1 -- 1.添加一個列,默認新增列追加在表的最后 2 ALTER TABLE user_info ADD height TINYINT UNSIGNED NOT NULL DEFAULT 0; 3 -- 查看表結構 4 DESC user_info; 5 -- 2.刪除身高列 6 ALTER TABLE user_info DROP height; 7 DESC user_info; 8 -- 3.再增加身⾼列,放在username后面 9 ALTER TABLE user_info ADD height TINYINT NOT NULL DEFAULT 0 AFTER username; 10 DESC user_info; 11 -- 4.現在人的身高越來越高,255的TINYINT已經不夠存了,我們需要改變列類型,改成SMALLINT 12 -- 使用CHANGE可以將列名一起修改了. 13 ALTER TABLE user_info CHANGE height shengao SMALLINT NOT NULL DEFAULT 0; 14 DESC user_info; 15 -- 5.MODIFY 也可以修改列,跟CHANGE區別在於,MODIFY不可以修改列名 16 ALTER TABLE user_info MODIFY shengao TINYINT NOT NULL DEFAULT 0; 17 DE