MySQL 24小時入門筆記
創建表
CREATE TABLE
CREATE TABLE
的作用是創建表。不多說,先創建個簡單的學生表。
CREATE TABLE students (
id int,
name char(16) NOT NULL,
primary key (id)
);
這裏沒寫 ENGINE=InnoDB
,因爲這是新 MariaDB 的默認值。
那麼進入正題,CREATE TABLE
的語法如下。
CREATE TABLE [表名] (
[列名] [類型] [約束和其他屬性],
[列名] [類型] [約束和其他屬性],
....
[其他表配置]
);
很容易看出,括號裏面寫的是表的相關配置,包括列定義,主鍵定義,索引定義等等。
默認值
在創建表時可以指定默認值,有默認值的列在插入時可以不填。
語法如下。
CREATE TABLE [表] (
[列] [類型] DEFAULT [值],
);
即可爲一個列設定默認值。
非空
非空約束非常常見。比如說,我們要記錄學生信息,包括學號、成績、姓名,那麼學生姓名能不能留空呢?顯然不行,因爲沒有姓名的記錄讓誰看都是一臉懵逼,這破壞了一條記錄的完整性。
創建非空約束的語法如下。
CREATE TABLE [表] (
[列] [類型] NOT NULL,
);
這就創建了非空約束。非空約束下,插入數據時不能不填寫這個列。
如果需要要求可空,那麼這樣做。但一般不用特地寫,很多DBMS
的列默認創建就是可空的。
CREATE TABLE [表] (
[列] [類型] NULL,
);
修改表
ALTER TABLE
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;
要是換行有這麼容易就好了……(你敢說回車看看)