MySQL 24小時入門筆記(4)表的創建、修改、刪除 原

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

舉例來說,我們先有兩個表。

學生表

idnameclass
1student 11
2student 22
3student 33

班級表

idlevel
1Lv5
2Lv4
3Lv3

爲了讓學生表的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;

要是換行有這麼容易就好了……(你敢說回車看看)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章