CREATE TABLE
的做用是建立表。很少說,先建立個簡單的學生表。code
CREATE TABLE students ( id int, name char(16) NOT NULL, primary key (id) );
這裏沒寫 ENGINE=InnoDB
,由於這是新 MariaDB 的默認值。索引
那麼進入正題,CREATE TABLE
的語法以下。入門
CREATE TABLE [表名] ( [列名] [類型] [約束和其餘屬性], [列名] [類型] [約束和其餘屬性], .... [其餘表配置] );
很容易看出,括號裏面寫的是表的相關配置,包括列定義,主鍵定義,索引定義等等。table
在建立表時能夠指定默認值,有默認值的列在插入時能夠不填。class
語法以下。配置
CREATE TABLE [表] ( [列] [類型] DEFAULT [值], );
便可爲一個列設定默認值。語法
非空約束很是常見。好比說,咱們要記錄學生信息,包括學號、成績、姓名,那麼學生姓名能不能留空呢?顯然不行,由於沒有姓名的記錄讓誰看都是一臉懵逼,這破壞了一條記錄的完整性。引用
建立非空約束的語法以下。im
CREATE TABLE [表] ( [列] [類型] NOT NULL, );
這就建立了非空約束。非空約束下,插入數據時不能不填寫這個列。命名
若是須要要求可空,那麼這樣作。但通常不用特意寫,不少DBMS
的列默認建立就是可空的。
CREATE TABLE [表] ( [列] [類型] NULL, );
ALTER TABLE
能夠修改表定義,添加刪除列,修改約束,等等。
舉例,在一個只有學號和姓名兩個列的學生表加入一個新的成績列,代碼以下。
ALTER TABLE students ADD score int;
語法基本是這樣。
ALTER TABLE [表名] ADD [列名] [類型] [其餘屬性和約束];
後面列的定義寫法基本和CREATE TABLE
時差很少。
和添加列差很少,但刪除的關鍵字不是DELETE
,而是DROP
。
ALTER TABLE [表名] DROP [列名];
外鍵約束其實保證的是引用完整性,外鍵約束的列的值必須引用了一個有效的行,或者是NULL
。
舉例來講,咱們先有兩個表。
學生表
id | name | class |
---|---|---|
1 | student 1 | 1 |
2 | student 2 | 2 |
3 | student 3 | 3 |
班級表
id | level |
---|---|
1 | Lv5 |
2 | Lv4 |
3 | Lv3 |
爲了讓學生表的class
關聯到班級表的id
,咱們要這樣作。
ALTER TABLE students ADD CONSTRAINT fk_students_classes FOREIGN KEY (class) REFERENCES classes (id);
語法基本是這樣子的
ALTER TABLE [保存外鍵的表] ADD CONSTRAINT [外鍵約束的名字,通常fk開頭] FOREIGN KEY ([外鍵名]) REFERENCES [引用的表名] ([引用的鍵名])
比較複雜。
那麼終於到了期待已久的刪庫跑路階段。
刪除表的語法很是簡單,那麼從一開始活到如今的這所學校終於幹不下去了,校長決定遣散學生。
DROP TABLE students;
人走光了。
校長決定把學校改爲夜總會,因而他寫道:
RENAME TABLE school TO night_club;
要是換行有這麼容易就行了……(你敢說回車看看)