MySQL5.7(三)数据表操作

概念
在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。
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;

原文地址:https://www.cnblogs.com/tqtl911/p/8453865.html

时间: 2024-08-30 03:16:17

MySQL5.7(三)数据表操作的相关文章

mysql(三) 数据表的基本操作操作

mysql(三) 数据表的基本操作操作 创建表,曾删改查,主键,外键,基本数据类型. 1. 创建表 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGINE=InnoDB DEFAULT CHARSET=utf8 例如: 类型解释: 是否可以为空: 是否可空,null表示空,非字符串 not null - 不可空 null - 可空 默认值设置 默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值 create table t

MySQL学习笔记之五 有关数据表操作

MySQL在创建表的时候,创建一个.frm文件保存表和列定义.索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD(MYData)扩展名的文件中.   一.用SHOW/ DESCRIBE语句显示数据表的信息 语法: SHOW TABLES [FROM db_name] [LIKE wild] or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild] or SHOW INDEX FROM tbl_name [FROM

前端学数据库之数据表操作

× 目录 [1]准备工作 [2]创建数据表 [3]查看数据表[4]记录操作[5]记录约束[6]列操作[7]约束操作[8]修改列[9]数据表更名 前面的话 mysql数据库中的数据存储在被称为表(tables)的数据库对象中.表是相关的数据项的集合,它由列(字段)和行(记录)组成.下面将详细介绍数据表操作 准备工作 在进行数据表操作之前,需要先登录mysql服务器,创建一个数据库,并使用创建好的数据库 创建数据表 下面在db1数据库中创建数据表tb1 CREATE TABLE [IF NOT EX

Django学习手册 - ORM 数据表操作

queryset 数据类型介绍 QuerySet与惰性机制 所谓惰性机制:表名.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它并不会马上执行sql,而是当调用QuerySet的时候才执行. QuerySet特点: <1>  可迭代的 <2>  可切片 <3>  惰性计算和缓存机制 例: info=models.table_name.objects.all()[0:5] #切片 info= models.table

python42 1.外键的变种 2.数据表操作

昨日回顾: 一. 数据库的介绍   管理数据的软件 二. 数据库的 分类:   a.关系型数据库    有约束   b.非关系型数据库    没有约束     三. MySQl 的安装:   a. exe msi文件 点击下一步下一步      b. 压缩包     bin      mysqld : 启动mysql服务的     mysql  : 连接mysql    环境变量 四. 数据库(文件夹)   数据表 (文件)    数据行(文件行)  五. 数据库:   增:    create

mysql数据表操作&amp;库操作

首先登陆mysql:mysql -uroot -proot -P3306 -h127.0.0.1 查看所有的库:show databases; 进入一个库:use database; 显示所在的库:select database(); 开始进行数据表操作: 1,创建数据表:create table user( id smallint unsigned aotu_crement not null primary key,  //id,整型无符号位非空主键 idNum varchar(20) uni

Python数据库操作 MySQL数据库与数据表操作#学习猿地

# MySQL数据库与数据表操作 + 数据库的操作 + 数据库创建 + 数据库删除 + 数据表的操作 + 数据表的创建 + 数据表的修改 (表结构) + 数据表的删除 ### 数据库的操作 #### 1.数据库的创建 ```mysql # 链接mysql数据库后,进入mysql后可以操作数据 # 1. 创建库 create database if not exists tlxy default charset=utf8: -- 1. 数据库 tlxy 如果不存在则创建数据库,存在则不创建 --

MySQL操作(三)数据表

一.创建数据表 方式1 CREATE TABLE IF NOT EXISTS user( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT, sex TINYINT NOT NULL DEFAULT 0 )ENGINE=MyISAM DEFAULT CHARSET=utf8; 方式2 --1. 创建一个临时的新表,首先复制旧表的结构(包含索引) CREATE TABLE new_table LIKE old_tab

二 数据库、数据表操作

一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件.锁等现象 mysql: 授权库,主要存储系统用户的权限信息test: MySQL数据库系统自动创建的测试数据库 二 创建数据库 1 语法(help create database) CREATE DA