「MySQL」MySQL數(shù)據(jù)庫(kù)及表基礎(chǔ)操作

一渗常、數(shù)據(jù)庫(kù)操作

- 創(chuàng)建數(shù)據(jù)庫(kù)

先通過(guò)show databases;命令查看現(xiàn)有數(shù)據(jù)庫(kù)刁愿,結(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ù)庫(kù),命令如下:

#注釋?zhuān)焊袷?create database 數(shù)據(jù)庫(kù)名
create database mw_test;

再次查看數(shù)據(jù)庫(kù)結(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ù)庫(kù)mw_test嬉挡。

也可以查看單個(gè)數(shù)據(jù)庫(kù)信息贾铝,命令如下:

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ù)庫(kù)編碼為utf8
PS:新創(chuàng)建數(shù)據(jù)庫(kù)的名稱(chēng)不能與現(xiàn)有數(shù)據(jù)庫(kù)名稱(chēng)重名

- 刪除數(shù)據(jù)庫(kù)

首先創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)用于刪除操作:

create database mw_test1;

刪除操作命令如下:

#注釋?zhuān)焊袷剑篸rop database 數(shù)據(jù)庫(kù)名
drop database mw_test1;

執(zhí)行結(jié)果如下:

mysql> drop database mw_test1;
Query OK, 0 rows affected (0.01 sec)

PS:刪除數(shù)據(jù)庫(kù)不會(huì)有任何提示始绍,刪除數(shù)據(jù)庫(kù)后瞳购,數(shù)據(jù)庫(kù)中的表數(shù)據(jù)也會(huì)全部被刪除,不能恢復(fù)亏推,此操作應(yīng)提前做好備份学赛,謹(jǐn)慎操作!

二吞杭、數(shù)據(jù)表創(chuàng)建

- 創(chuàng)建表

通過(guò)use命令切換到要?jiǎng)?chuàng)建表的數(shù)據(jù)庫(kù)進(jìn)行操作盏浇,命令如下:

use mw_test;

查看當(dāng)前選擇數(shù)據(jù)庫(kù)下的表:

show tables;

執(zhí)行結(jié)果如下:

mysql> show tables;
Empty set (0.00 sec)

可以發(fā)現(xiàn)當(dāng)前數(shù)據(jù)庫(kù)mw_test下沒(méi)有任何表。

建立名為mw_table的表(暫且不考慮數(shù)據(jù)類(lèi)型):

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)

查看表信息:

#注釋?zhuān)阂部梢詫?xiě)全稱(chēng):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)的附加信息译蒂;

查看表相信信息:

#注釋?zhuā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ù)庫(kù)安裝 文章中簡(jiǎn)單介紹過(guò)主鍵的作用曼月,這里在詳細(xì)說(shuō)下:
主鍵谊却,是表中一列或多列的組合柔昼。主鍵約束(Primary Key Constraint)要求主鍵列的數(shù)據(jù)唯一性,且不能為空炎辨。主鍵能唯一的標(biāo)識(shí)一條記錄捕透,可以結(jié)合外鍵來(lái)定義不同數(shù)據(jù)表之間的關(guān)系,且可以增加數(shù)據(jù)庫(kù)的查詢(xún)速度碴萧。

  1. 單字段主鍵
    可以在創(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)建語(yǔ)句的最后一行指明設(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) );

查詢(xún)表結(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è)從表蛉抓。通過(guò)以下方法創(chuàng)建:

#注釋?zhuān)簞?chuàng)建主表

create table mw_test_1( id INT(10) PRIMARY KEY, name VARCHAR(20), age INT(4), updateTime DATE );
#注釋?zhuān)簞?chuàng)建從表并設(shè)置外鍵
#注釋?zhuān)焊袷?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,依賴(lài)表mw_test_1的主鍵id
PS:通過(guò)以上可以看出巷送,外鍵可以是當(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)

通過(guò)Navicat for MySQL軟件可以查看外鍵笑跛,如下圖:
mw_test_2_fk_mysql.jpg
- 刪除外鍵約束

刪除外鍵約束會(huì)解除主表與從表之間的關(guān)聯(lián)關(guān)系付魔!

#注釋?zhuān)焊袷剑篈LTER 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)

再次通過(guò)Navicat for MySQL軟件可以查看外鍵(需重連數(shù)據(jù)庫(kù)),結(jié)果如下圖:
mw_test_2_nofk_mysql.jpg
- 非空約束

顧名思義飞蹂,就是指字段的值不能為空几苍,對(duì)于設(shè)置了非空約束的字段沒(méi)如果添加數(shù)據(jù)時(shí),沒(méi)有指定數(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)

也可以通過(guò)以下方式設(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è)置自增屬性

通過(guò)AUTO_INCREMENT來(lái)指定自增屬性庇谆,初始值默認(rèn)為1赁遗,一個(gè)表中只能有一個(gè)字段使用AUTO_INCREMENT,且該字段必須為主鍵的一部分族铆⊙宜模可以實(shí)現(xiàn)每增加一條新記錄后,字段值自動(dòng)加1哥攘,設(shè)置AUTO_INCREMENT屬性約束的字段可以是任意整數(shù)類(lèi)型剖煌。

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ù)庫(kù)中已存在的表的結(jié)構(gòu)修改茉兰。

- 修改表名
#注釋?zhuān)焊袷剑篈LTER TABLE 舊表名 RENAME TO 新表名;  //TO可以省略

alter table mw_table rename to new_table;

PS:修改表名不影響表結(jié)構(gòu)

- 修改字段名

同樣以修改過(guò)名稱(chēng)的新表new_table為例,先來(lái)查看下當(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)

然后修改字段名:

#注釋?zhuān)焊袷剑篈LTER TABLE 表名 CHANGE 要修改的字段名  新的字段名 新字段的類(lèi)型

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ù)類(lèi)型應(yīng)與原字段的數(shù)據(jù)類(lèi)型相同规脸,即達(dá)到了修改字段名的目的,當(dāng)然也可不同熊咽,但是字段類(lèi)型不可省略莫鸭,看下面說(shuō)明

- 修改字段數(shù)據(jù)類(lèi)型

修改字段數(shù)據(jù)類(lèi)型有兩種方法,一種是使用上面的change方法横殴,也可以使用modify方法被因,具體如下:

#注釋?zhuān)簃odify方式修改,格式:ALTER TABLE 表名 MODIFY 字段名 新的字段類(lèi)型

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方式再次修改回來(lái):

#注釋?zhuān)篶hange方式修改衫仑,格式:ALTER TABLE 表名 CHANGE 要修改的字段名  新的字段名 新字段的類(lèi)型

alter table new_table change age age INT(4);

PS:上面的修改只做演示之用梨与,不考慮數(shù)據(jù)類(lèi)型的合理性。由于不同類(lèi)型的數(shù)據(jù)在機(jī)器中存儲(chǔ)的方式及長(zhǎng)度并不相同文狱,修改數(shù)據(jù)類(lèi)型可能會(huì)影響到數(shù)據(jù)表中已有的數(shù)據(jù)記錄粥鞋,所有要謹(jǐn)慎修改!

- 添加字段
#注釋?zhuān)焊袷剑篈LTER TABLE 表名 ADD 添加的字段名 字段類(lèi)型

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)如贷,新添加的字段位于表的最后一條(即表中的最后一列)陷虎,如果想在特定位置添加字段,可以使用FIRSTAFTER參數(shù)來(lái)做修飾杠袱,方法如下:

#注釋?zhuān)禾砑有碌淖侄蔚降谝涣?格式:ALTER TABLE 表名 ADD 字段名 字段類(lèi)型 FIRST;

alter table new_table add gender INT(1) first;
#注釋?zhuān)禾砑有碌淖侄蔚教囟ㄎ恢茫袷?ALTER TABLE 表名 ADD 字段名 字段類(lèi)型 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)有字段的排列位置
#注釋?zhuān)簩⒆侄我苿?dòng)到表的第一列 格式:ALTER TABLE 表名 MODIFY 字段名 字段類(lèi)型 FIRST;

alter table new_table modify id int(10) first;
#注釋?zhuān)簩⒆侄我苿?dòng)到指定位置 格式: ALTER TABLE 表名 MODIFY 字段名 字段類(lèi)型 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)
- 刪除字段
#注釋?zhuān)焊袷剑篈LTER TABLE 表名 DROP 字段名

alter table new_table drop gender;
- 修改表的存儲(chǔ)引擎

可通過(guò)show engines;來(lái)查看系統(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ù)庫(kù)使用的存儲(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)

修改:

#注釋?zhuān)焊袷剑篈LTER 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)慎操作糠涛,在刪除之前做好備份工作!

#注釋?zhuān)焊袷剑篋ROP TABLE 表名1兼犯,表名2
drop table mw_table7, mw_table6;

可以發(fā)現(xiàn)可以一次性刪除多個(gè)數(shù)據(jù)表忍捡,且在刪除過(guò)程中沒(méi)有任何提示性信息,但是如果刪除一個(gè)不存在的表則會(huì)報(bào)錯(cuò)切黔,如下:

#注釋?zhuān)褐苯觿h除不存在的表(mw_table7已經(jīng)被刪除砸脊,不存在該表),如下
mysql> drop table mw_table7;  
ERROR 1051 (42S02): Unknown table 'mw_test.mw_table7'

#注釋?zhuān)和瑫r(shí)刪除兩個(gè)表纬霞,一個(gè)存在凌埂,一個(gè)不存在
mysql> drop table mw_table5,mw_table7;  
ERROR 1051 (42S02): Unknown table 'mw_test.mw_table7'

通過(guò)上面的結(jié)果可以看出,當(dāng)同時(shí)刪除多個(gè)表時(shí)诗芜,如果有不存在的表存在瞳抓,則命令不會(huì)執(zhí)行,可通過(guò)以下辦法解決:

drop table if exists mw_table5,mw_table7;

!!PS:此處重點(diǎn)說(shuō)明:當(dāng)數(shù)據(jù)表之間存在外鍵關(guān)聯(lián)的情況下伏恐,直接刪除主表挨下,會(huì)顯示失敗,可以先刪除從表脐湾,在刪除主表臭笆,但是如果不想刪除從表,只刪除主表秤掌,可將主表與從表之間關(guān)聯(lián)關(guān)系解除后愁铺,在刪除主表。刪除外鍵關(guān)聯(lián)的方法上面已經(jīng)說(shuō)過(guò)闻鉴,這里不再贅述茵乱!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市孟岛,隨后出現(xiàn)的幾起案子瓶竭,更是在濱河造成了極大的恐慌,老刑警劉巖渠羞,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斤贰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡次询,警方通過(guò)查閱死者的電腦和手機(jī)荧恍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人送巡,你說(shuō)我怎么就攤上這事摹菠。” “怎么了骗爆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵次氨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我摘投,道長(zhǎng)煮寡,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任谷朝,我火速辦了婚禮洲押,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘圆凰。我一直安慰自己杈帐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布专钉。 她就那樣靜靜地躺著挑童,像睡著了一般。 火紅的嫁衣襯著肌膚如雪跃须。 梳的紋絲不亂的頭發(fā)上站叼,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音菇民,去河邊找鬼尽楔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛第练,可吹牛的內(nèi)容都是我干的阔馋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼娇掏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼呕寝!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起婴梧,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤下梢,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后塞蹭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體孽江,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年浮还,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竟坛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钧舌,死狀恐怖担汤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情洼冻,我是刑警寧澤崭歧,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站撞牢,受9級(jí)特大地震影響率碾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屋彪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一所宰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧畜挥,春花似錦仔粥、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至华糖,卻和暖如春麦向,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背客叉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工灶体, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人搀军。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓嗅绰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親向族。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呵燕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容