1 查看表結構
查看表結構是指查看數據庫中已存在的表的定義。查看表結構的語句包括 語句和 SHOW TABLE 語句。通過這兩個語句,可以查看表的字段名、字段的數據類型、完整性約束條件等。
1.1 查看表基本結構語句
MySQL 中, 語句可以查看表的基本定義。其中包括、字段名、字段數據類型、是否為主鍵和默認值等。
DESCRIBE?表名?;
DESC?或?DESCRIBE?student7;
1.2 查看表詳細結構語句 SHOW TABLE
MySQL 中, SHOW TABLE 語句可以查看表的詳細定義。該語句可以查看表的字段名、字段的數據類型、完整性約束條件等信息。除此之外,還可以查看表默認的存儲引擎和字符編碼。 SHOW TABLE 語句的語法形式如下:
SHOW CREATE TABLE?表名?;
SHOW CREATE TABLE?student7;
2 修改表的方法
修改表是指修改數據庫中已存在的表。修改表比重新定義表簡單,不需要重新加載數據,也不會影響正在進行的服務。 MySQL 中能過 ALTER TABLE [alter: 改變,更改 ] 語句來修改表。修改表包括修改表名、修改字段數據類型、修改字段名、增加字段、刪除字段、修改字段的排列位置、更改表的存儲引擎和刪除表的外鍵約束等。
2.1 修改表名
表名可以在一個數據庫中唯一的確定一張表。數據庫系統通過表名來區分不同的表。例如,數據庫 中有 表。那么 表就是唯一的。在數據庫 中不可能存在另一個名為 “” 的表。 MySQL 中,修改表名是通過 SQL 語句 ALTER TABLE 實現的。其語法形式如下:
ALTER TABLE 舊表名 [TO] 新表名 ;
實例一 :
CREATE TABLE student8 (
stu_id INT PRIMARY KEY,
stu_name VARCHAR(20) NOT NULL,
stu_gender BOOLEAN
) Engine = InnoDB;
SHOW TABLES;
DESCRIBE student8;
ALTER TABLE?student8?RENAME TO?student8_changed;
2.2 修改字段的數據類型
字段的數據類型包括整型、浮點數型、字符串型、二進制類型、日期和時間類型等。數據類型決定了數據的存儲格式、約束條件和有效范圍。表中每個字段都有數據類型。 ALTER TABLE 語句也可以修改字段的數據類型。其基本語法如下: ALTER TABLE 表名 屬性名 數據類型 ;
實例一 :
CREATE TABLE student9 (
stu_id INT PRIMARY KEY,
stu_name VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
content VARCHAR(20) NOT NULL,
stu_gender BOOLEAN
) Engine = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE?student9?MODIFY?stu_name char(20);
2.3 修改字段名 [ 字段的數據類型 , 完整性約束條件 ]
字段名可以在一張表中唯一確定一個字段。數據庫系統通過字段名來區分表中的不同字段。例如, 表中包含 id 字段。那么, id 字段在 表中是唯一的。 表中不可能存在另一個名為 “id” 的字段。 MySQL 中 ALTER TABLE 語句也可以修改表的字段名。其基本語法如下:
ALTER TABLE 表名 舊字段名 新字段名 新數據類型 [ 新完整性約束條件 ];
其中, ” 舊字段名 ” 參數指修改前的字段名; ” 新字段名 ” 參數指修改后的字段名; ” 新數據類型 ” 參數修改后的數據類型,如不需要修改,則將新類型設置成與原來一樣。
1. 只修改字段名
2. 修改字段名和字段數據類型
3. 修改完整性約束條件
實例一:
CREATE TABLE student10 (
stu_id INT PRIMARY KEY,
stu_name VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
content VARCHAR(20) NOT NULL,
stu_gender BOOLEAN

) Engine = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE?student10?CHANGE?stu_name stu_name_changed VARCHAR(20);
ALTER TABLE?student10?CHANGE?content content_changed VARCHAR(50) NOT NULL DEFAULT 'XXXX';
2.4 增加字段
在創建表時,表中的字段就已經定義完成。如果要增加新的字段,可以通過 ALTER TABLE 語句進行增加。 MySQL 中,ALTER TABLE 語句增加字段的基本語法如下:
ALTER TABLE 表名 ADD 新字段名 數據類型 [ 完整性約束條件 ] [FIRST | AFTER 已有字段名 ];
1. 增加無完整性約束條件的字段
2. 增加有完整性約束條件的字段
3. 表的第一個位置增加字段
4. 表的指定位置之后增加字段
實例一:
CREATE TABLE student11 (
stu_id INT PRIMARY KEY,
stu_name VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
content VARCHAR(20) NOT NULL,
stu_gender BOOLEAN
) Engine = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE?student11?ADD?phone VARCHAR(20);
ALTER TABLE?student11?ADD?birthday TIMESTAMP NOT NULL;
ALTER TABLE?student11?ADD?num INT(11) NOT NULL?FIRST?;
ALTER TABLE?student11?ADD?address VARCHAR(30) NOT NULL?AFTER?phone;
2.5 刪除字段
刪除字段是指刪除已經定義好的表中的某個字段。在表創建好之后數據庫刪除記錄語句,如果發現某個字段需要刪除??梢圆捎脤⒄麄€表都刪除,如果發現某個字段需要刪除??梢圆捎脤⒄麄€表都刪除,然后重新創建一張表的做法。這樣做是可以達到目的數據庫刪除記錄語句,但必須會影響到表中的數據。而且,操作比較麻煩。 MySQL 中, ALTER TABLE 語句也可以刪除表中的字段。其基本語法如下:
ALTER TABLE 表名 DROP 字段名 ;
實例一:
CREATE TABLE student12 (
stu_id INT PRIMARY KEY,
stu_name VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
content VARCHAR(20) NOT NULL,
stu_gender BOOLEAN
) Engine = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE?student12?DROP?`content`;
2.6 修改字段的排列位置
創建表的時候,字段在表中的排列位置就已經確定了。如果要改變字段在表中的排列位置,則需要 ALTER TABLE 語句來處理。 MySQL 中,修改字段排列位置的 ALTER TABLE 語句的基本語法如下: ALTER TABLE 表名 字段名 數據類型 FIRST | AFTER 字段名 2;
1. 字段修改到第一個位置
2. 字段修改到指定位置
實例一:
CREATE TABLE student13 (
stu_id INT PRIMARY KEY,
stu_name VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
content VARCHAR(20) NOT NULL,
stu_gender BOOLEAN
) Engine = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE?student13?MODIFY?content VARCHAR(20) FIRST;
ALTER TABLE?STUDENT13?MODIFY?stu_id INT?AFTER?stu_name;
2.7 更改表的存儲引擎
MySQL 存儲引擎是指 MySQL 數據庫中表的存儲類型。 MySQL 存儲引擎包括 、 、 等。不同的表類型有著不同的優缺點。在創建表的時候,存儲引擎就已經設定好了。如果要改變,可以通過重新創建一張表來實現。這樣做是可以達到目的,但必然會影響到表中的數據。而且,操作比較麻煩。
ALTER TABLE 表名 = 存儲引擎名 ;
實例一:
CREATE TABLE student14 (
stu_id INT PRIMARY KEY,
stu_name VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
content VARCHAR(20) NOT NULL,
stu_gender BOOLEAN
) Engine = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE?student14?ENGINE=?MyISAM;
2.8 刪除表的外鍵約束
外鍵是一個特殊字段,其將某一個表與其父表建立關系關系。在創建表的時候,外鍵約束就已經設定好了。由于特殊需要,與父表之間的關系關系需要去除,要求刪除外鍵約束。 MySQL 中, ALTER 語句也可以刪除表的外鍵約束。
ALTER TABLE 表名 DROP KEY 外鍵別名 ;
實例一:
CREATE TABLE `student15` (
`id` INT NOT NULL PRIMARY KEY,
`name` VARCHAR(20) NOT NULL,
`stu_id` INT,
CONSTRAINT st_fk FOREIGN KEY(stu_id) REFERENCES student7(stu_id)
) Engine = InnoDB ;
ALTER TABLE?`test`.`student15`?DROP?FOREIGN KEY?st_fk;
3 刪除表的方法
刪除表是指刪除數據庫已經存在的表。刪除表時,會刪除表中的所有數據。因此,在刪除表時特別注意。 MySQL 中通過 DROP TABLE 語句來刪除表。由創建表時可能存在外鍵約束,一些表成為了與之關聯的表的父表。要刪除這些父表,情況比較復雜。
3.1 刪除沒有關系的普通表和被其他關聯的父表的方法。
CREATE TABLE student16 (
stu_id INT PRIMARY KEY,
stu_name VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
content VARCHAR(20) NOT NULL COMMENT '?內容?',
stu_gender BOOLEAN
) Engine = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
DROP TABLE?[IF EXISTS] student16;
3.2 刪除被其他表關聯的父表
數據庫中某些表之間建立了關聯關系。一些表成為了父表,這些表被其子表關聯著。要刪除這些父表,情況不像上一節那么簡單。
CREATE TABLE `test`.`student17_parent` (
`id` INT NOT NULL PRIMARY KEY,
`stu_id` INT,
`name` VARCHAR(20) NOT NULL
) Engine = InnoDB ;
CREATE TABLE `student17_child` (
`id` INT NOT NULL PRIMARY KEY,
`stu_id` INT UNIQUE,
`name` VARCHAR(20) NOT NULL,
CONSTRAINT parent_fk FOREIGN KEY(stu_id) REFERENCES student17_parent(id) -- id?必須是帶有索引
) Engine = InnoDB;
DROP TABLE `student17_parent`; --?不能刪除,因為與這關聯的表有外鍵
#?先刪除外鍵,然后就可以刪除表?student17_parent
ALTER TABLE?`student17_child`?DROP FOREIGN KEY?parent_fk;
DROP TABLE?`student17_parent`;