1 查看錶結構
查看錶結構是指查看數據庫中已存在的表的定義。查看錶結構的語句包括 DESCRIBE 語句和 SHOW CREATE TABLE 語句。通過這兩個語句,可以查看錶的字段名、字段的數據類型、完整性約束條件等。
1.1 查看錶基本結構語句 DESCRIBE
MySQL 中, DESCRIBE 語句可以查看錶的基本定義。其中包括、字段名、字段數據類型、是否為主鍵和默認值等。
DESCRIBE 表名 ;
DESC 或 DESCRIBE student7;1.2 查看錶詳細結構語句 SHOW CREATE TABLE
MySQL 中, SHOW CREATE TABLE 語句可以查看錶的詳細定義。該語句可以查看錶的字段名、字段的數據類型、完整性約束條件等信息。除此之外,還可以查看錶默認的存儲引擎和字符編碼。 SHOW CREATE TABLE 語句的語法形式如下:
SHOW CREATE TABLE 表名 ;
SHOW CREATE TABLE student7;2 修改表的方法
修改表是指修改數據庫中已存在的表。修改表比重新定義表簡單,不需要重新加載數據,也不會影響正在進行的服務。 MySQL 中能過 ALTER TABLE [alter: 改變,更改 ] 語句來修改表。修改表包括修改表名、修改字段數據類型、修改字段名、增加字段、刪除字段、修改字段的排列位置、更改表的存儲引擎和刪除表的外鍵約束等。
2.1 修改表名
表名可以在一個數據庫中唯一的確定一張表。數據庫系統通過表名來區分不同的表。例如,數據庫 school 中有 student 表。那麼 student 表就是唯一的。在數據庫 school 中不可能存在另一個名為 “student” 的表。 MySQL 中,修改表名是通過 SQL 語句 ALTER TABLE 實現的。其語法形式如下:
ALTER TABLE 舊錶名 RENAME [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 表名 MODIFY 屬性名 數據類型 ;
實例一 :
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 修改字段名 [ 字段的數據類型 , 完整性約束條件 ]
字段名可以在一張表中唯一確定一個字段。數據庫系統通過字段名來區分表中的不同字段。例如, student 表中包含 id 字段。那麼, id 字段在 student 表中是唯一的。 student 表中不可能存在另一個名為 “id” 的字段。 MySQL 中 ALTER TABLE 語句也可以修改表的字段名。其基本語法如下:
ALTER TABLE 表名 CHNAGE 舊字段名 新字段名 新數據類型 [ 新完整性約束條件 ];
其中, ” 舊字段名 ” 參數指修改前的字段名; ” 新字段名 ” 參數指修改後的字段名; ” 新數據類型 ” 參數修改後的數據類型,如不需要修改,則將新類型設置成與原來一樣。
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 表名 MODIFY 字段名 數據類型 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 存儲引擎包括 InnoDB 、 MyISAM 、 MEMORY 等。不同的表類型有着不同的優缺點。在創建表的時候,存儲引擎就已經設定好了。如果要改變,可以通過重新創建一張表來實現。這樣做是可以達到目的,但必然會影響到表中的數據。而且,操作比較麻煩。
ALTER TABLE 表名 ENGINE= 存儲引擎名 ;
實例一:
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 TABLEy 語句也可以刪除表的外鍵約束。
ALTER TABLE 表名 DROP FOREIGN 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`;原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/230824.html
微信掃一掃
支付寶掃一掃