MySQL5.7(三)數據表操作


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

USE cuixiaozhao;#使用數據庫實例-cuixiaozhao;

1 CREATE TABLE <表名>( 
2 字段名1,數據類型 [列級別的約束條件] [默認值]3 字段名2,數據類型 [列級別的約束條件] [默認值]4 字段名3,數據類型 [列級別的約束條件] [默認值]5 ......
6  [表級別的約束條件]
7  )ENGINE=InnoDB DEFAULT CHARSET=utf8;
View Code

舉例說明

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 1null #可為空
3 2not 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> 
View Code
  • 查看詳細結構語句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> 
View Code

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;

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM