一、數(shù)據(jù)庫操作
- 創(chuàng)建數(shù)據(jù)庫
先通過show databases;命令查看現(xiàn)有數(shù)據(jù)庫,結(jié)果如下:
#注釋 \g與;功能相同
mysql> show databases \g
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
創(chuàng)建一個(gè)新的數(shù)據(jù)庫,命令如下:
#注釋:格式 create database 數(shù)據(jù)庫名
create database mw_test;
再次查看數(shù)據(jù)庫結(jié)果如下:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mw_test |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
可以發(fā)現(xiàn)成功創(chuàng)建了數(shù)據(jù)庫mw_test。
也可以查看單個(gè)數(shù)據(jù)庫信息,命令如下:
show create database mw_test;
結(jié)果如下:
mysql> show create database mw_test;
+----------+------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------+
| mw_test | CREATE DATABASE `mw_test` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)
可以看到當(dāng)前數(shù)據(jù)庫編碼為utf8。
PS:新創(chuàng)建數(shù)據(jù)庫的名稱不能與現(xiàn)有數(shù)據(jù)庫名稱重名
- 刪除數(shù)據(jù)庫
首先創(chuàng)建一個(gè)新的數(shù)據(jù)庫用于刪除操作:
create database mw_test1;
刪除操作命令如下:
#注釋:格式:drop database 數(shù)據(jù)庫名
drop database mw_test1;
執(zhí)行結(jié)果如下:
mysql> drop database mw_test1;
Query OK, 0 rows affected (0.01 sec)
PS:刪除數(shù)據(jù)庫不會(huì)有任何提示,刪除數(shù)據(jù)庫后,數(shù)據(jù)庫中的表數(shù)據(jù)也會(huì)全部被刪除,不能恢復(fù),此操作應(yīng)提前做好備份,謹(jǐn)慎操作!
二、數(shù)據(jù)表創(chuàng)建
- 創(chuàng)建表
通過use命令切換到要?jiǎng)?chuàng)建表的數(shù)據(jù)庫進(jìn)行操作,命令如下:
use mw_test;
查看當(dāng)前選擇數(shù)據(jù)庫下的表:
show tables;
執(zhí)行結(jié)果如下:
mysql> show tables;
Empty set (0.00 sec)
可以發(fā)現(xiàn)當(dāng)前數(shù)據(jù)庫mw_test下沒有任何表。
建立名為mw_table的表(暫且不考慮數(shù)據(jù)類型):
create table mw_table(id INT(10), name VARCHAR(20), age INT(4), updateTime DATE );
繼續(xù)查看數(shù)據(jù)表表:
mysql> show tables;
+-------------------+
| Tables_in_mw_test |
+-------------------+
| mw_table |
+-------------------+
1 row in set (0.00 sec)
查看表信息:
#注釋:也可以寫全稱:describe mw_table;
desc mw_table;
結(jié)果:
mysql> desc mw_table;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(10) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| age | int(4) | YES | | NULL | |
| updateTime | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
Null 表示該列是否可以存儲(chǔ)Null值;
Key 表示該列是否已編制索引;
Default 表示該列是否有默認(rèn)值;
Extra表示可以獲取的與給定列有關(guān)的附加信息;
查看表相信信息:
#注釋:此命令會(huì)顯示表所使用的存儲(chǔ)引擎及字符編碼
show create table mw_table;
結(jié)果如下:
mysql> show create table mw_table;
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| mw_table | CREATE TABLE `mw_table` (
`id` int(10) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`age` int(4) DEFAULT NULL,
`updateTime` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.05 sec)
- 主鍵
MySQL基礎(chǔ)知識(shí)及數(shù)據(jù)庫安裝 文章中簡單介紹過主鍵的作用,這里在詳細(xì)說下:
主鍵,是表中一列或多列的組合。主鍵約束(Primary Key Constraint)要求主鍵列的數(shù)據(jù)唯一性,且不能為空。主鍵能唯一的標(biāo)識(shí)一條記錄,可以結(jié)合外鍵來定義不同數(shù)據(jù)表之間的關(guān)系,且可以增加數(shù)據(jù)庫的查詢速度。
- 單字段主鍵
可以在創(chuàng)建表時(shí),定義表列的同時(shí)指定主鍵,也可以定義好表結(jié)構(gòu)以后設(shè)置主鍵,具體方法如下:
定義的同時(shí)指定主鍵:
create table mw_table1( id INT(10) PRIMARY KEY, name VARCHAR(20), age INT(4), updateTime DATE );
查看表結(jié)構(gòu)結(jié)果如下:
mysql> desc mw_table1;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(10) | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
| age | int(4) | YES | | NULL | |
| updateTime | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
PS:可以發(fā)現(xiàn)id的Null為NO,表示不可以為空,Key值為PRI,表示該列為表主鍵的一部分。
定義好結(jié)構(gòu)后指定主鍵方法如下:
create table mw_table2( id INT(10), name VARCHAR(20), age INT(4), updateTime DATE, PRIMARY KEY(id) );
查看表結(jié)構(gòu)結(jié)果如下:
mysql> desc mw_table2;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(10) | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
| age | int(4) | YES | | NULL | |
| updateTime | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
PS:這種方法就是在表結(jié)構(gòu)設(shè)計(jì)好以后,在創(chuàng)建語句的最后一行指明設(shè)置為主鍵的名字即可
2.多字段聯(lián)合主鍵
create table mw_table3( id INT(10), name VARCHAR(20) , age INT(4), tel VARCHAR(20), updateTime DATE, PRIMARY KEY(name, tel) );
查詢表結(jié)構(gòu)結(jié)果如下:
mysql> desc mw_table3;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(10) | YES | | NULL | |
| name | varchar(20) | NO | PRI | NULL | |
| age | int(4) | YES | | NULL | |
| tel | varchar(20) | NO | PRI | NULL | |
| updateTime | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
- 外鍵
用于在兩個(gè)表的數(shù)據(jù)之間建立鏈接,可以是一列或多列。一個(gè)表可以存在多于一個(gè)的外鍵,外鍵可以為空值,若不為空,則每一個(gè)外鍵值必須等同于另一個(gè)表中主鍵的某個(gè)值。外鍵,是一個(gè)表中的一個(gè)字段,可以不是表的主鍵,但應(yīng)對(duì)應(yīng)另外一個(gè)表的主鍵。外鍵的主要作用是保證數(shù)據(jù)引用的完整性,定義外鍵后,不允許刪除在另一個(gè)表中具有相關(guān)聯(lián)關(guān)系的行。
既然是外鍵,那么就需要至少存在兩個(gè)表,一個(gè)主表,一個(gè)從表。通過以下方法創(chuàng)建:
#注釋:創(chuàng)建主表
create table mw_test_1( id INT(10) PRIMARY KEY, name VARCHAR(20), age INT(4), updateTime DATE );
#注釋:創(chuàng)建從表并設(shè)置外鍵
#注釋:格式 CONSTRAINT 外鍵名 FOREIGN KEY(從表外鍵名) REFERENCES 主表名(主表主鍵)
create table mw_test_2( tid INT(10) PRIMARY KEY, name VARCHAR(20), tel VARCHAR(20), updateTime DATE, CONSTRAINT fk_test_1_test_2 FOREIGN KEY(tid) REFERENCES mw_test_1(id) );
以上就創(chuàng)建了一個(gè)名為fk_test_1_test_2的外鍵約束,外鍵為tid,依賴表mw_test_1的主鍵id
PS:通過以上可以看出,外鍵可以是當(dāng)前表的主鍵,也可以不是主鍵,也可以以組合的方式設(shè)置
查看表結(jié)構(gòu)如下:
mysql> show create table mw_test_2 \G
*************************** 1. row ***************************
Table: mw_test_2
Create Table: CREATE TABLE `mw_test_2` (
`tid` int(10) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`tel` varchar(20) DEFAULT NULL,
`updateTime` date DEFAULT NULL,
PRIMARY KEY (`tid`),
CONSTRAINT `fk_test_1_test_2` FOREIGN KEY (`tid`) REFERENCES `mw_test_1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
通過Navicat for MySQL軟件可以查看外鍵,如下圖:
- 刪除外鍵約束
刪除外鍵約束會(huì)解除主表與從表之間的關(guān)聯(lián)關(guān)系!
#注釋:格式:ALTER TABLE 表名 DROP FOREIGN KEY 外鍵約束名
alter table mw_test_2 drop foreign key fk_test_1_test_2;
再次查看表結(jié)構(gòu):
mysql> show create table mw_test_2 \G
*************************** 1. row ***************************
Table: mw_test_2
Create Table: CREATE TABLE `mw_test_2` (
`tid` int(10) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`tel` varchar(20) DEFAULT NULL,
`updateTime` date DEFAULT NULL,
PRIMARY KEY (`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.01 sec)
再次通過Navicat for MySQL軟件可以查看外鍵(需重連數(shù)據(jù)庫),結(jié)果如下圖:
- 非空約束
顧名思義,就是指字段的值不能為空,對(duì)于設(shè)置了非空約束的字段沒如果添加數(shù)據(jù)時(shí),沒有指定數(shù)據(jù),則會(huì)報(bào)錯(cuò)!
create table mw_table4( id INT(10) PRIMARY KEY, name VARCHAR(20) NOT NULL, updateTime DATE );
- 唯一性約束
數(shù)據(jù)唯一性約束,要求該列不能有重復(fù)值,可以為空,但空只能出現(xiàn)一次。唯一性約束能保證一列或多列不出現(xiàn)重復(fù)值。
create table mw_table5( id INT(10) PRIMARY KEY, name VARCHAR(20), tel VARCHAR(20) UNIQUE, updateTime DATE );
查看表結(jié)構(gòu)如下:
mysql> desc mw_table5;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(10) | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
| tel | varchar(20) | YES | UNI | NULL | |
| updateTime | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
也可以通過以下方式設(shè)置:
create table mw_table5( id INT(10) PRIMARY KEY, name VARCHAR(20), tel VARCHAR(20), updateTime DATE, CONSTRAINT tel UNIQUE(tel) );
- 默認(rèn)值約束
指定某列的默認(rèn)值,即如果不顯示的設(shè)置值時(shí),自動(dòng)用默認(rèn)值填充。
create table mw_table6( id INT(10) PRIMARY KEY, name VARCHAR(20), tel VARCHAR(20) DEFAULT 18888888888, updateTime DATE );
- 設(shè)置自增屬性
通過AUTO_INCREMENT來指定自增屬性,初始值默認(rèn)為1,一個(gè)表中只能有一個(gè)字段使用AUTO_INCREMENT,且該字段必須為主鍵的一部分??梢詫?shí)現(xiàn)每增加一條新記錄后,字段值自動(dòng)加1,設(shè)置AUTO_INCREMENT屬性約束的字段可以是任意整數(shù)類型。
create table mw_table7( id INT(10) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), tel VARCHAR(20) NOT NULL, updateTime DATE );
查看表結(jié)構(gòu)結(jié)果如下:
mysql> desc mw_table7;
+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
| tel | varchar(20) | NO | | NULL | |
| updateTime | date | YES | | NULL | |
+------------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
也可以在創(chuàng)建表時(shí),設(shè)置好自增屬性后,設(shè)置自增的初始值,方法如下:
create table auto_table( id INT(10) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), tel VARCHAR(20) NOT NULL, updateTime DATE) AUTO_INCREMENT=100;
也可在創(chuàng)建好后修改自增的初始值,方法如下:
alter table auto_table AUTO_INCREMENT=20;
三、數(shù)據(jù)表修改
主要介紹數(shù)據(jù)庫中已存在的表的結(jié)構(gòu)修改。
- 修改表名
#注釋:格式:ALTER TABLE 舊表名 RENAME TO 新表名; //TO可以省略
alter table mw_table rename to new_table;
PS:修改表名不影響表結(jié)構(gòu)
- 修改字段名
同樣以修改過名稱的新表new_table為例,先來查看下當(dāng)前未修改之前的表結(jié)構(gòu)如下:
mysql> desc new_table;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(10) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| age | int(4) | YES | | NULL | |
| updateTime | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
然后修改字段名:
#注釋:格式:ALTER TABLE 表名 CHANGE 要修改的字段名 新的字段名 新字段的類型
alter table new_table change name username VARCHAR(20);
再次查看表結(jié)構(gòu)如下:
mysql> desc new_table;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(10) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| age | int(4) | YES | | NULL | |
| updateTime | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
PS:這里修改字段名,后面的新字段名對(duì)應(yīng)的數(shù)據(jù)類型應(yīng)與原字段的數(shù)據(jù)類型相同,即達(dá)到了修改字段名的目的,當(dāng)然也可不同,但是字段類型不可省略,看下面說明
- 修改字段數(shù)據(jù)類型
修改字段數(shù)據(jù)類型有兩種方法,一種是使用上面的change方法,也可以使用modify方法,具體如下:
#注釋:modify方式修改,格式:ALTER TABLE 表名 MODIFY 字段名 新的字段類型
alter table new_table modify age VARCHAR(10);
查看修改后的表結(jié)構(gòu):
mysql> desc new_table;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(10) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| age | varchar(10) | YES | | NULL | |
| updateTime | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
使用change方式再次修改回來:
#注釋:change方式修改,格式:ALTER TABLE 表名 CHANGE 要修改的字段名 新的字段名 新字段的類型
alter table new_table change age age INT(4);
PS:上面的修改只做演示之用,不考慮數(shù)據(jù)類型的合理性。由于不同類型的數(shù)據(jù)在機(jī)器中存儲(chǔ)的方式及長度并不相同,修改數(shù)據(jù)類型可能會(huì)影響到數(shù)據(jù)表中已有的數(shù)據(jù)記錄,所有要謹(jǐn)慎修改!
- 添加字段
#注釋:格式:ALTER TABLE 表名 ADD 添加的字段名 字段類型
alter table new_table add tel VARCHAR(20);
查看表結(jié)構(gòu)如下:
mysql> desc new_table;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(10) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| age | int(4) | YES | | NULL | |
| updateTime | date | YES | | NULL | |
| tel | varchar(20) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
添加后可以發(fā)現(xiàn),新添加的字段位于表的最后一條(即表中的最后一列),如果想在特定位置添加字段,可以使用FIRST或AFTER參數(shù)來做修飾,方法如下:
#注釋:添加新的字段到第一列,格式:ALTER TABLE 表名 ADD 字段名 字段類型 FIRST;
alter table new_table add gender INT(1) first;
#注釋:添加新的字段到特定位置,格式 ALTER TABLE 表名 ADD 字段名 字段類型 AFTER 添加到該字段的后面
alter table new_table add birthday DATE after age;
查看表結(jié)構(gòu)結(jié)果如下:
mysql> desc new_table;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| gender | int(1) | YES | | NULL | |
| id | int(10) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| age | int(4) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| updateTime | date | YES | | NULL | |
| tel | varchar(20) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
當(dāng)然也可以在添加新字段的同時(shí)設(shè)置數(shù)據(jù)的完整性約束,如下:
alter table new_table add location varchar(100) not null;
- 修改現(xiàn)有字段的排列位置
#注釋:將字段移動(dòng)到表的第一列 格式:ALTER TABLE 表名 MODIFY 字段名 字段類型 FIRST;
alter table new_table modify id int(10) first;
#注釋:將字段移動(dòng)到指定位置 格式: ALTER TABLE 表名 MODIFY 字段名 字段類型 AFTER 要移動(dòng)到該字段的后面
alter table new_table modify updateTime DATE after location;
查看表結(jié)構(gòu)如下:
mysql> desc new_table;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id | int(10) | YES | | NULL | |
| gender | int(1) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| age | int(4) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| tel | varchar(20) | YES | | NULL | |
| location | varchar(100) | NO | | NULL | |
| updateTime | date | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
8 rows in set (0.00 sec)
- 刪除字段
#注釋:格式:ALTER TABLE 表名 DROP 字段名
alter table new_table drop gender;
- 修改表的存儲(chǔ)引擎
可通過show engines;來查看系統(tǒng)支持的存儲(chǔ)引擎,結(jié)果如下:
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
PS:DEFAULT 表示當(dāng)前數(shù)據(jù)庫使用的存儲(chǔ)引擎
查看當(dāng)前表使用的存儲(chǔ)引擎:
show create table new_table;
結(jié)果如下:
mysql> show create table new_table;
+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| new_table | CREATE TABLE `new_table` (
`id` int(10) DEFAULT NULL,
`username` varchar(20) DEFAULT NULL,
`age` int(4) DEFAULT NULL,
`birthday` date DEFAULT NULL,
`tel` varchar(20) DEFAULT NULL,
`location` varchar(100) NOT NULL,
`updateTime` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
修改:
#注釋:格式:ALTER TABLE 表名 ENGINE=引擎名
alter table new_table engine=MyISAM;
再次查看,結(jié)果如下:
mysql> show create table new_table \G
*************************** 1. row ***************************
Table: new_table
Create Table: CREATE TABLE `new_table` (
`id` int(10) DEFAULT NULL,
`username` varchar(20) DEFAULT NULL,
`age` int(4) DEFAULT NULL,
`birthday` date DEFAULT NULL,
`tel` varchar(20) DEFAULT NULL,
`location` varchar(100) NOT NULL,
`updateTime` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
PS:外鍵約束不能跨引擎使用,雖然數(shù)據(jù)表可以指定不同的存儲(chǔ)引擎,但是如果兩個(gè)表需要做關(guān)聯(lián),如果使用不同的存儲(chǔ)引擎,則不能創(chuàng)建外鍵約束
- 刪除數(shù)據(jù)表
刪除數(shù)據(jù)表會(huì)刪除表的定義和所有數(shù)據(jù),所以應(yīng)謹(jǐn)慎操作,在刪除之前做好備份工作!
#注釋:格式:DROP TABLE 表名1,表名2
drop table mw_table7, mw_table6;
可以發(fā)現(xiàn)可以一次性刪除多個(gè)數(shù)據(jù)表,且在刪除過程中沒有任何提示性信息,但是如果刪除一個(gè)不存在的表則會(huì)報(bào)錯(cuò),如下:
#注釋:直接刪除不存在的表(mw_table7已經(jīng)被刪除,不存在該表),如下
mysql> drop table mw_table7;
ERROR 1051 (42S02): Unknown table 'mw_test.mw_table7'
#注釋:同時(shí)刪除兩個(gè)表,一個(gè)存在,一個(gè)不存在
mysql> drop table mw_table5,mw_table7;
ERROR 1051 (42S02): Unknown table 'mw_test.mw_table7'
通過上面的結(jié)果可以看出,當(dāng)同時(shí)刪除多個(gè)表時(shí),如果有不存在的表存在,則命令不會(huì)執(zhí)行,可通過以下辦法解決:
drop table if exists mw_table5,mw_table7;
!!PS:此處重點(diǎn)說明:當(dāng)數(shù)據(jù)表之間存在外鍵關(guān)聯(lián)的情況下,直接刪除主表,會(huì)顯示失敗,可以先刪除從表,在刪除主表,但是如果不想刪除從表,只刪除主表,可將主表與從表之間關(guān)聯(lián)關(guān)系解除后,在刪除主表。刪除外鍵關(guān)聯(lián)的方法上面已經(jīng)說過,這里不再贅述!