概念
在數據庫中,數據表是數據庫中最重要、最基本的操作對象,是數據存儲的基本單位。數據表被定義為列的集合,數據在表中是按照行和列的格式來存儲的。每一行代表一條唯一的記錄,每一列代表記錄中的一個域。
1、創建數據表
說明:數據表屬於數據庫,在創建數據表之前,應該使用語句“USE <數據庫實例名>”指定操作的數據庫實例。
USE cuixiaozhao;#使用數據庫實例-cuixiaozhao;

1 CREATE TABLE <表名>( 2 字段名1,數據類型 [列級別的約束條件] [默認值], 3 字段名2,數據類型 [列級別的約束條件] [默認值], 4 字段名3,數據類型 [列級別的約束條件] [默認值], 5 ...... 6 [表級別的約束條件] 7 )ENGINE=InnoDB DEFAULT CHARSET=utf8;
舉例說明
CREATE TABLE empoyee(
id INT(11),
name VARCAHR(20),
deptId INT(11),
salary FLOAT
)ENGINE=InnoDB DEFAULT CHARSET = utf8;

1 主鍵,又稱主碼,是表中一列或多列的組合。數據唯一、不允許為空。可結合外鍵來定義不同數據表之間的關系並且加快數據庫查詢速度。分為單字段主鍵和多字段聯合主鍵。 2 create table tb1( 3 nid int not null auto_increment primary key, 4 num int null 5 )ENGINE=InnoDB DEFAULT CHARSET=utf8; 6 或 7 create table tb2( 8 nid int not null, 9 num int not null, 10 primary key(nid,num) 11 )ENGINE=InnoDB DEFAULT CHARSET=utf8;

1 外鍵,用來在兩個表之間建立連接關系,可以是一列或者多列。一張表可以有一個或多個外鍵,作用保持數據的一致性和完整性。 2 主表(父表),即主鍵所在的表; 3 從表(子表),外鍵所在的表; 4 CREATE TABLE color ( 5 nid INT NOT NULL PRIMARY KEY, 6 NAME CHAR (20) NOT NULL 7 ) ENGINE = INNODB DEFAULT CHARSET = utf8; 8 9 CREATE TABLE fruit ( 10 nid INT NOT NULL PRIMARY KEY, 11 smt CHAR (32) NULL, 12 color_id INT NOT NULL, 13 CONSTRAINT fk_cc FOREIGN KEY (color_id) REFERENCES color (nid) 14 ) ENGINE = INNODB DEFAULT CHARSET = utf8;

1 非空約束,Not Null Constraint,指字段的值不能為空。 2 1、null #可為空 3 2、not null#不可為空 4 語法: 5 字段名 數據類型 NOT NULL

1 唯一性約束,Unique Constraint,要求該列唯一,可以為空,但只能出現一個空值。唯一約束可以確保一列或者幾列不出現重復值。 2 語法: 3 字段名 數據類型 UNIQUE

1 默認約束,Default Constraint,指定某列的默認值。 2 語法: 3 字段名 數據類型 DEFAULT 默認值 4 如果插入一條新紀錄時,沒有為該字段賦值,那么系統會自動為這個字段賦值為設定的默認值。

1 在數據庫應用中,希望在每次插入新紀錄時,系統自動生成字段的主鍵值。可通過為表的主鍵增加AUTO_INCREMENT 關鍵字來實現。MySQL中默認初始值為1,一條記錄自動加1,一個表只能有一個字段使用AUTO_INCREMENT 約束,且該字段必須為主鍵的一部分。AUTO_INCREMENT 的字段類型可以是任何整數類型(TINYINT\SMALLINT\INT\BIGINT等) 2 語法: 3 字段名 數據類型 AUTO_INCREMENT
注意:外鍵約束PREIGN KEY 不能跨MySQL存儲引擎使用!因為外鍵約束是用來保證數據的參照完整性,如果之間需要關聯外鍵,卻指定了不同的存儲引擎,這些表之間是不能創建外鍵約束的。
2、查看數據表結構
- 查看表基本結構語句DESCRIBE DESCRIBE表名或者簡寫為DESC 表名;

1 ysql> DESC tb_emp1; 2 +--------+-------------+------+-----+---------+-------+ 3 | Field | Type | Null | Key | Default | Extra | 4 +--------+-------------+------+-----+---------+-------+ 5 | id | int(11) | NO | PRI | NULL | | 6 | name | varchar(25) | YES | | NULL | | 7 | deptId | int(11) | YES | | NULL | | 8 | salary | float | YES | | NULL | | 9 +--------+-------------+------+-----+---------+-------+ 10 4 rows in set (0.01 sec) 11 12 mysql> DESCRIBE tb_emp1; 13 +--------+-------------+------+-----+---------+-------+ 14 | Field | Type | Null | Key | Default | Extra | 15 +--------+-------------+------+-----+---------+-------+ 16 | id | int(11) | NO | PRI | NULL | | 17 | name | varchar(25) | YES | | NULL | | 18 | deptId | int(11) | YES | | NULL | | 19 | salary | float | YES | | NULL | | 20 +--------+-------------+------+-----+---------+-------+ 21 4 rows in set (0.00 sec) 22 23 mysql>
- 查看詳細結構語句SHOW CREATE TABLE SHOW CREATE TABLE 表名;

1 mysql> SHOW CREATE TABLE tb_emp1; 2 +---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 3 | Table | Create Table | 4 +---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 5 | tb_emp1 | CREATE TABLE `tb_emp1` ( 6 `id` int(11) NOT NULL, 7 `name` varchar(25) DEFAULT NULL, 8 `deptId` int(11) DEFAULT NULL, 9 `salary` float DEFAULT NULL, 10 PRIMARY KEY (`id`) 11 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | 12 +---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 13 1 row in set (0.00 sec) 14 15 mysql>
3、刪除數據表
DROP TABLE 表名
- 刪除沒有被關聯的表
語法:DROP TABLE [IF EXISTS] 表1,表2,表3,表n;#加上IF EXISTS 參數,如果表不存在,SQL語句可以順利執行,但是會發生警告(warnig)
- 刪除被其他表關聯的主表
1、可以先刪除關聯的子表,再刪除父表,但同時刪除了兩張表;
2、刪除關聯表的外鍵約束,在刪除父表,保留了子表;
4、清空表
- DELETE FROM 表名;
- TRUNCATE TABLE 表名;
5、修改表
修改表指的是修改數據庫中已存在的數據表結構。MySQL中使用ALTER TABLE 語句修改表。包含:需改表名、字段名、字段的數據類型、增加和刪除字段、修改字段的排列位置、更改表的存儲引擎、刪除表的外鍵約束!
1、修改表名
ALTER TABLE <舊表名> RENAME [TO] <新表名>;#其中,TO為可選參數;

1 mysql> SHOW DATABASES; 2 +--------------------+ 3 | Database | 4 +--------------------+ 5 | information_schema | 6 | cuixiaozhao | 7 | mysql | 8 | performance_schema | 9 | sys | 10 +--------------------+ 11 5 rows in set (0.00 sec) 12 13 mysql> USE cuixiaozhao; 14 Reading table information for completion of table and column names 15 You can turn off this feature to get a quicker startup with -A 16 17 Database changed 18 mysql> SHOW TABLES; 19 +-----------------------+ 20 | Tables_in_cuixiaozhao | 21 +-----------------------+ 22 | tb_cxz | 23 +-----------------------+ 24 1 row in set (0.00 sec) 25 26 mysql> DESC tb_cxz; 27 +--------+-------------+------+-----+---------+-------+ 28 | Field | Type | Null | Key | Default | Extra | 29 +--------+-------------+------+-----+---------+-------+ 30 | id | int(11) | NO | PRI | NULL | | 31 | name | varchar(25) | YES | | NULL | | 32 | deptId | int(11) | YES | | NULL | | 33 | salary | float | YES | | NULL | | 34 +--------+-------------+------+-----+---------+-------+ 35 4 rows in set (0.00 sec) 36 mysql> SHOW CREATE TABLE tb_cxz; 37 +--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 38 | Table | Create Table | 39 +--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 40 | tb_cxz | CREATE TABLE `tb_cxz` ( 41 `id` int(11) NOT NULL, 42 `name` varchar(25) DEFAULT NULL, 43 `deptId` int(11) DEFAULT NULL, 44 `salary` float DEFAULT NULL, 45 PRIMARY KEY (`id`) 46 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | 47 +--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 48 1 row in set (0.00 sec) 49 50 mysql> ALTER TABLE tb_cxz RENAME TO tb_cxs; 51 Query OK, 0 rows affected (0.00 sec) 52 53 mysql> SHOW TABLES; 54 +-----------------------+ 55 | Tables_in_cuixiaozhao | 56 +-----------------------+ 57 | tb_cxs | 58 +-----------------------+ 59 1 row in set (0.00 sec) 60 61 mysql>
注意:修改表名並不修改表的結構;
2、修改字段的數據類型
ALTER TABLE <表名> MODIFY <字段名> <數據類型>;

1 mysql> DESC tb_cxs; 2 +--------+-------------+------+-----+---------+-------+ 3 | Field | Type | Null | Key | Default | Extra | 4 +--------+-------------+------+-----+---------+-------+ 5 | id | int(11) | NO | PRI | NULL | | 6 | name | varchar(25) | YES | | NULL | | 7 | deptId | int(11) | YES | | NULL | | 8 | salary | float | YES | | NULL | | 9 +--------+-------------+------+-----+---------+-------+ 10 4 rows in set (0.00 sec) 11 12 mysql> ALTER TABLE tb_cxs MODIFY name VARCHAR(30); 13 Query OK, 0 rows affected (0.00 sec) 14 Records: 0 Duplicates: 0 Warnings: 0 15 16 mysql> DESC tb_cxs; 17 +--------+-------------+------+-----+---------+-------+ 18 | Field | Type | Null | Key | Default | Extra | 19 +--------+-------------+------+-----+---------+-------+ 20 | id | int(11) | NO | PRI | NULL | | 21 | name | varchar(30) | YES | | NULL | | 22 | deptId | int(11) | YES | | NULL | | 23 | salary | float | YES | | NULL | | 24 +--------+-------------+------+-----+---------+-------+ 25 4 rows in set (0.00 sec) 26 27 mysql>
3、修改字段名
ALTER TABLE <表名> CHANGE <舊字段名> <新字段名> <新數據類型>;

1 修改字段名,數據類型保持不變; 2 mysql> DESC tb_cxs; 3 +--------+-------------+------+-----+---------+-------+ 4 | Field | Type | Null | Key | Default | Extra | 5 +--------+-------------+------+-----+---------+-------+ 6 | id | int(11) | NO | PRI | NULL | | 7 | name | varchar(30) | YES | | NULL | | 8 | deptId | int(11) | YES | | NULL | | 9 | salary | float | YES | | NULL | | 10 +--------+-------------+------+-----+---------+-------+ 11 4 rows in set (0.00 sec) 12 13 mysql> ALTER TABLE tb_cxs CHANGE salary pay float; 14 Query OK, 0 rows affected (0.01 sec) 15 Records: 0 Duplicates: 0 Warnings: 0 16 17 mysql> DESC tb_cxs; 18 +--------+-------------+------+-----+---------+-------+ 19 | Field | Type | Null | Key | Default | Extra | 20 +--------+-------------+------+-----+---------+-------+ 21 | id | int(11) | NO | PRI | NULL | | 22 | name | varchar(30) | YES | | NULL | | 23 | deptId | int(11) | YES | | NULL | | 24 | pay | float | YES | | NULL | | 25 +--------+-------------+------+-----+---------+-------+ 26 4 rows in set (0.00 sec) 27 28 即修改字段名稱,同時修改數據類型; 29 mysql> DESC tb_cxs; 30 +--------+-------------+------+-----+---------+-------+ 31 | Field | Type | Null | Key | Default | Extra | 32 +--------+-------------+------+-----+---------+-------+ 33 | id | int(11) | NO | PRI | NULL | | 34 | name | varchar(30) | YES | | NULL | | 35 | deptId | int(11) | YES | | NULL | | 36 | salary | float | YES | | NULL | | 37 +--------+-------------+------+-----+---------+-------+ 38 4 rows in set (0.00 sec) 39 40 mysql> ALTER TABLE tb_cxs CHANGE salary pay INT(10); 41 Query OK, 0 rows affected (0.04 sec) 42 Records: 0 Duplicates: 0 Warnings: 0 43 44 mysql>
小結:CHANGE也可以只修改數據類型,實現和MODIFY同樣的效果,方法是:將SQL語句中的“新字段名”和“舊字段名”設置為相同的名稱,只改變“數據類型”!
但是,由於不同的數據在機器中存儲的方式及長度並不相同,修改數據類型可能會影響到數據表中已有的數據記錄,因此,當數據表中已經存在數據時,不要輕易修改數據類型;
4、添加字段
ALTER TABLE <表名> <新字段名> <數據類型> [約束條件] [ FIRST | AFTER 已存在的字段名 ];#FIRST 與AFTER為可選參數,如果沒有,默認將新字段添加至最后列;
- 添加無完整性約束條件的字段 ALTER TABLE tb_cxs ADD column1 VARCHAR(20);
- 添加有完整性約束條件的字段 ALTER TABLE tb_cxs ADD column1 VARCHAR(20) NOT NULL;
- 在表中的第一列添加字段 ALTER TABLE tb_cxs ADD column1 VARCHAR(20) NOT NULL FIRST;
- 在表中的最后一列添加字段 ALTER TABLE tb_cxs ADD column1 VARCHAR(20) NOT NULL;
- 在表的指定列之后添加字段(即為在表的指定列之前添加字段,是一個相對概念)ALTER TABLE tb_cxs ADD column1 VARCHAR(20) NOT NULL AFTER name;

1 mysql> DESC tb_cxs; 2 +--------+-------------+------+-----+---------+-------+ 3 | Field | Type | Null | Key | Default | Extra | 4 +--------+-------------+------+-----+---------+-------+ 5 | id | int(11) | NO | PRI | NULL | | 6 | name | varchar(30) | YES | | NULL | | 7 | deptId | int(11) | YES | | NULL | | 8 | pay | int(10) | YES | | NULL | | 9 +--------+-------------+------+-----+---------+-------+ 10 4 rows in set (0.00 sec) 11 12 mysql> ALTER TABLE tb_cxs ADD column1 VARCHAR(20) NOT NULL; 13 Query OK, 0 rows affected (0.03 sec) 14 Records: 0 Duplicates: 0 Warnings: 0 15 16 mysql> DESC tb_cxs; 17 +---------+-------------+------+-----+---------+-------+ 18 | Field | Type | Null | Key | Default | Extra | 19 +---------+-------------+------+-----+---------+-------+ 20 | id | int(11) | NO | PRI | NULL | | 21 | name | varchar(30) | YES | | NULL | | 22 | deptId | int(11) | YES | | NULL | | 23 | pay | int(10) | YES | | NULL | | 24 | column1 | varchar(20) | NO | | NULL | | 25 +---------+-------------+------+-----+---------+-------+ 26 5 rows in set (0.00 sec) 27 mysql> ALTER TABLE tb_cxs ADD column0 INT(11) FIRST; 28 Query OK, 0 rows affected (0.02 sec) 29 Records: 0 Duplicates: 0 Warnings: 0 30 31 mysql> DESC tb_cxs; 32 +---------+-------------+------+-----+---------+-------+ 33 | Field | Type | Null | Key | Default | Extra | 34 +---------+-------------+------+-----+---------+-------+ 35 | column0 | int(11) | YES | | NULL | | 36 | id | int(11) | NO | PRI | NULL | | 37 | name | varchar(30) | YES | | NULL | | 38 | deptId | int(11) | YES | | NULL | | 39 | pay | int(10) | YES | | NULL | | 40 | column1 | varchar(20) | NO | | NULL | | 41 +---------+-------------+------+-----+---------+-------+ 42 6 rows in set (0.00 sec) 43 44 mysql> ALTER TABLE tb_cxs ADD column2 INT(11) AFTER name; 45 Query OK, 0 rows affected (0.03 sec) 46 Records: 0 Duplicates: 0 Warnings: 0 47 48 mysql> DESC tb_cxs; 49 +---------+-------------+------+-----+---------+-------+ 50 | Field | Type | Null | Key | Default | Extra | 51 +---------+-------------+------+-----+---------+-------+ 52 | column0 | int(11) | YES | | NULL | | 53 | id | int(11) | NO | PRI | NULL | | 54 | name | varchar(30) | YES | | NULL | | 55 | column2 | int(11) | YES | | NULL | | 56 | deptId | int(11) | YES | | NULL | | 57 | pay | int(10) | YES | | NULL | | 58 | column1 | varchar(20) | NO | | NULL | | 59 +---------+-------------+------+-----+---------+-------+ 60 7 rows in set (0.00 sec)
5、刪除字段
刪除字段是將數據表中的某個字段從表中移除的過程。
ALTER TABLE <表名> DROP <字段名>;

1 mysql> DESC tb_cxs; 2 +---------+-------------+------+-----+---------+-------+ 3 | Field | Type | Null | Key | Default | Extra | 4 +---------+-------------+------+-----+---------+-------+ 5 | column0 | int(11) | YES | | NULL | | 6 | id | int(11) | NO | PRI | NULL | | 7 | name | varchar(30) | YES | | NULL | | 8 | column2 | int(11) | YES | | NULL | | 9 | deptId | int(11) | YES | | NULL | | 10 | pay | int(10) | YES | | NULL | | 11 | column1 | varchar(20) | NO | | NULL | | 12 +---------+-------------+------+-----+---------+-------+ 13 7 rows in set (0.00 sec) 14 mysql> ALTER TABLE tb_cxs DROP column1; 15 Query OK, 0 rows affected (0.03 sec) 16 Records: 0 Duplicates: 0 Warnings: 0 17 18 mysql> DESC tb_cxs; 19 +---------+-------------+------+-----+---------+-------+ 20 | Field | Type | Null | Key | Default | Extra | 21 +---------+-------------+------+-----+---------+-------+ 22 | column0 | int(11) | YES | | NULL | | 23 | id | int(11) | NO | PRI | NULL | | 24 | name | varchar(30) | YES | | NULL | | 25 | column2 | int(11) | YES | | NULL | | 26 | deptId | int(11) | YES | | NULL | | 27 | pay | int(10) | YES | | NULL | | 28 +---------+-------------+------+-----+---------+-------+ 29 6 rows in set (0.00 sec) 30 31 mysql>
6、修改字段的排列位置
修改字段的相對排列位置。
ALTER TABLE <表名> MODIFY <字段1> <數據類型> FIRST | AFTER < 字段2>;
- 修改字段為表的第一個字段
- 修改字段到表的指定列之后

1 mysql> DESC tb_cxs; 2 +---------+-------------+------+-----+---------+-------+ 3 | Field | Type | Null | Key | Default | Extra | 4 +---------+-------------+------+-----+---------+-------+ 5 | column0 | int(11) | YES | | NULL | | 6 | id | int(11) | NO | PRI | NULL | | 7 | name | varchar(30) | YES | | NULL | | 8 | column2 | int(11) | YES | | NULL | | 9 | deptId | int(11) | YES | | NULL | | 10 | pay | int(10) | YES | | NULL | | 11 +---------+-------------+------+-----+---------+-------+ 12 6 rows in set (0.00 sec) 13 mysql> ALTER TABLE tb_cxs MODIFY pay INT(10) FIRST; 14 Query OK, 0 rows affected (0.03 sec) 15 Records: 0 Duplicates: 0 Warnings: 0 16 17 mysql> DESC tb_cxs; 18 +---------+-------------+------+-----+---------+-------+ 19 | Field | Type | Null | Key | Default | Extra | 20 +---------+-------------+------+-----+---------+-------+ 21 | pay | int(10) | YES | | NULL | | 22 | column0 | int(11) | YES | | NULL | | 23 | id | int(11) | NO | PRI | NULL | | 24 | name | varchar(30) | YES | | NULL | | 25 | column2 | int(11) | YES | | NULL | | 26 | deptId | int(11) | YES | | NULL | | 27 +---------+-------------+------+-----+---------+-------+ 28 6 rows in set (0.00 sec) 29 30 mysql> ALTER TABLE tb_cxs MODIFY pay INT(10) AFTER name; 31 Query OK, 0 rows affected (0.03 sec) 32 Records: 0 Duplicates: 0 Warnings: 0 33 34 mysql> DESC tb_cxs; 35 +---------+-------------+------+-----+---------+-------+ 36 | Field | Type | Null | Key | Default | Extra | 37 +---------+-------------+------+-----+---------+-------+ 38 | column0 | int(11) | YES | | NULL | | 39 | id | int(11) | NO | PRI | NULL | | 40 | name | varchar(30) | YES | | NULL | | 41 | pay | int(10) | YES | | NULL | | 42 | column2 | int(11) | YES | | NULL | | 43 | deptId | int(11) | YES | | NULL | | 44 +---------+-------------+------+-----+---------+-------+ 45 6 rows in set (0.00 sec) 46 47 mysql>
7、更改表的存儲引擎
存儲引擎是MySQL中的數據存儲在文件或者內存中時采用的不同技術實現;其中,主要的存儲引擎有:MyISAM、InnoDB、MEMORY(HEAP)、BDB、FEDERATED等。
ALTER TABLE <表名> ENGINE=<更改后的存儲引擎名稱>;

1 mysql> SHOW CREATE TABLE tb_cxs; 2 +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 3 | Table | Create Table | 4 +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 5 | tb_cxs | CREATE TABLE `tb_cxs` ( 6 `column0` int(11) DEFAULT NULL, 7 `id` int(11) NOT NULL, 8 `name` varchar(30) DEFAULT NULL, 9 `pay` int(10) DEFAULT NULL, 10 `column2` int(11) DEFAULT NULL, 11 `deptId` int(11) DEFAULT NULL, 12 PRIMARY KEY (`id`) 13 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | 14 +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 15 1 row in set (0.00 sec) 16 17 mysql> ALTER TABLE tb_cxs ENGINE=MyISAM; 18 Query OK, 0 rows affected (0.01 sec) 19 Records: 0 Duplicates: 0 Warnings: 0 20 21 mysql> SHOW CREATE TABLE tb_cxs; 22 +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 23 | Table | Create Table | 24 +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 25 | tb_cxs | CREATE TABLE `tb_cxs` ( 26 `column0` int(11) DEFAULT NULL, 27 `id` int(11) NOT NULL, 28 `name` varchar(30) DEFAULT NULL, 29 `pay` int(10) DEFAULT NULL, 30 `column2` int(11) DEFAULT NULL, 31 `deptId` int(11) DEFAULT NULL, 32 PRIMARY KEY (`id`) 33 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 | 34 +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 35 1 row in set (0.00 sec) 36 37 mysql>
8、刪除表的外鍵約束
對於數據庫表中定義的外鍵,不在需要時可以將其刪除。外鍵一旦刪除,將解除主從表之間的關聯關系。
ALTER TABLE <表名> DROP FOREIGN KEY <外鍵約束名>;

1 mysql> SHOW CREATE TABLE tb_emp9; 2 +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 3 | Table | Create Table | 4 +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 5 | tb_emp9 | CREATE TABLE `tb_emp9` ( 6 `id` int(11) NOT NULL, 7 `name` varchar(25) DEFAULT NULL, 8 `deptId` int(11) DEFAULT NULL, 9 `salary` float DEFAULT NULL, 10 PRIMARY KEY (`id`), 11 KEY `fk_emp_dept` (`deptId`), 12 CONSTRAINT `fk_emp_dept` FOREIGN KEY (`deptId`) REFERENCES `tb_cxs` (`id`) 13 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | 14 +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 15 1 row in set (0.00 sec) 16 17 mysql> ALTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp_dept; 18 Query OK, 0 rows affected (0.00 sec) 19 Records: 0 Duplicates: 0 Warnings: 0 20 21 mysql> SHOW CREATE TABLE tb_emp9; 22 +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 23 | Table | Create Table | 24 +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 25 | tb_emp9 | CREATE TABLE `tb_emp9` ( 26 `id` int(11) NOT NULL, 27 `name` varchar(25) DEFAULT NULL, 28 `deptId` int(11) DEFAULT NULL, 29 `salary` float DEFAULT NULL, 30 PRIMARY KEY (`id`), 31 KEY `fk_emp_dept` (`deptId`) 32 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | 33 +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 34 1 row in set (0.00 sec) 35 36 mysql>
9、修改默認值
修改默認值:ALTER TABLE <表名> ALTER <字段名> SET DEFAULT 1000;
刪除默認值:ALTER TABLE <表名> ALTER <字段名> DROP DEFAULT;
10、增加、刪除主鍵
添加主鍵:
ALTER TABLE <表名>
ADD PRIMARY KEY(字段名);
刪除主鍵:
ALTER TABLE <表名>
ADD PRIMARY KEY;#此處不需要指定字段名,因為主鍵默認只有一個;
ALTER TABLE <表名>
MODIFY <字段名> <字段類型> DROP PRIMARY KEY;