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

MySQL 24小時入門筆記

建立表

CREATE TABLE

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能夠修改表定義,添加刪除列,修改約束,等等。

添加列

舉例,在一個只有學號和姓名兩個列的學生表加入一個新的成績列,代碼以下。

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;

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

相關文章
相關標籤/搜索