1. 查看表
SHOW TABLES
SHOW CREATE TABLE students
查看所有表
查看如何創(chuàng)建表
2. 創(chuàng)建表
- 如果你僅想在一個表不存在時創(chuàng)建它趋箩,應(yīng)該在表名后給出IFNOT EXISTS啄踊。這樣做不檢查已有表的模式是否與你打算創(chuàng)建的表模式相匹配。它只是查看表名是否存在,并且僅在表名不存在時創(chuàng)建它
- 使用CREATE TABLE 語句
- 新表的的名字蛇数,在關(guān)鍵字CREATE TABLE 之后
- 表列的名字和定義,用逗號分隔
CREATE TABLE students (
id int NOT NULL AUTO_INCREMENT,
name char(50) NOT NULL,
address char(200) NOT NULL,
email char(50) NOT NULL,
PRIMARY KEY(id))
查看表結(jié)構(gòu)
DESC students
3. NULL值
- NULL值就是沒有值或缺值。允許NULL值的列也允許在插入行時不給出該列的值啸箫。不允許NULL值的列不接受該列沒有值的行,換句話說伞芹,在插入或更新行時忘苛,該列必須有值
例:
CREATE TABLE orders(
order_num int NOT NULL AUTO_INCREMENT,
order_date datetime NOT NULL,
cust_id int NOT NULL,
PRIMARY_KEY(order_num));
這條語句創(chuàng)建本書中所用的orders表。orders包含3個列唱较,分別是訂單號扎唾、訂單日期和客戶ID。所有3個列都需要南缓,因此每個列的定義都含有關(guān)鍵字NOT NULL胸遇。這將會阻止插入沒有值的列。如果試圖插入沒有值的列西乖,將返回錯誤狐榔,且插入失敗
CREATE TABLE vendors(
vend_id int NOT NULL AUTO_INCREMENT, vend_name char(50) NOT NULL ,
vend_address char(50) NULL , vend_city char(50) NULL ,
vend_state char(5) NULL , vend_zip char(10) NULL ,
vend_country char(50) NULL , PRIMARY KEY (vend_id));
這條語句創(chuàng)建本書中使用的vendors表坛增。供應(yīng)商ID和供應(yīng)字列是必需的,因此指定為NOT NULL薄腻。其余5個列全都允許NULL值收捣,所以不指定NOT NULL。NULL為默認設(shè)置庵楷,如果不指定NOT NULL罢艾,則認為指定的是NULL
不要把NULL值與空串相混淆。NULL值是沒有值尽纽,它不是空串咐蚯。如果指定''(兩個單引號,其間沒有字符)弄贿,這在NOT NULL列中是允許的春锋。空串是一個有效的值差凹,它不是無值期奔。NULL值用關(guān)鍵字NULL而不是空串指定
4. 主鍵
- 表中的任何列都可以作為主鍵,只要它滿足以下條件:
任意兩行都不具有相同的主鍵值
每個行都必須具有一個主鍵值(主鍵列不允許NULL值)
5. 自增
使用AUTO_INCREMENT
customers表中的顧客由列cust_id唯一標識危尿,每個顧客有一個唯一編號呐萌。類似,orders表中的每個訂單有一個唯一的訂單號谊娇,這個訂單號存儲在列order_num中肺孤。
這些編號除它們是唯一的以外沒有別的特殊意義。在增加一個新顧客或新訂單時济欢,需要一個新的顧客ID或訂單號赠堵。這些編號可以任意,只要它們是唯一的即可船逮。顯然顾腊,使用的最簡單的編號是下一個編號粤铭,所謂下一個編號是大于當(dāng)前最大編號的編號挖胃。例如,如果cust_id的最大編號為10005梆惯,則插入表中的下一個顧客可以具有等于10006的cust_id
6. 默認值
指定默認值
如果在插入行時沒有給出值酱鸭,MySQL允許指定此時使用的默認值。
默認值用CREATE TABLE語句的列定義中的DEFAULT關(guān)鍵字指定垛吗。
CREATE TABLE students(
stu_id int NOT NULL AUTO_INCREMENT,
birthday date NOT NULL,
navtive_plac varchar(50) NOT NULL DEFAULT “山西長治”,
PRIMARY_KEY(order_num));
7. 更新表
- 為更新表定義凹髓,可使用ALTER TABLE語句。但是怯屉,理想狀態(tài)下蔚舀,當(dāng)表中存儲數(shù)據(jù)以后饵沧,該表就不應(yīng)該再被更新。在表的設(shè)計過程中需要花費大量時間來考慮赌躺,以便后期不對該表進行大的改動狼牺。
- 為了使用ALTER TABLE更改表結(jié)構(gòu),必須給出下面的信息:
在ALTER TABLE之后給出要更改的表名(該表必須存在礼患,否則將出錯)
添加一列:
ALTER TABLE orders ADD phone int(11);
刪除一列:
ALTER TABLE orders DROP COLUMN phone;
小心使用ALTER TABLE 使用ALTER TABLE要極為小心是钥,應(yīng)該在進行改動前做一個完整的備份(模式和數(shù)據(jù)的備份)。數(shù)據(jù)庫表的更改不能撤銷缅叠,如果增加了不需要的列悄泥,可能不能刪除它們。類似地肤粱,如果刪除了不應(yīng)該刪除的列弹囚,可能會丟失該列中的所有數(shù)據(jù)
8. 刪除表
- 刪除表(刪除整個表而不是其內(nèi)容)非常簡單,使用DROP TABLE語句即可:
- DROP TABLE orders;
9. 重命名表
- 使用RENAME TABLE語句可以重命名一個表:
- RENAME TABLE orders to orders1;
CREATE TABLE用來創(chuàng)建新表
ALTERTABLE用來更改表列
DROP TABLE用來完整地刪除一個表