MySQL数据表的操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pan_junbiao/article/details/85835498

在对MySQL数据表进行操作之前,必须首先使用USE语句选择数据库,才可以在指定的数据库中对数据表进行操作,如创建数据表、修改表结构、数据表更名或删除数据表等。

1、创建数据表

创建数据表使用CREATE TABLE语句。语法如下:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 数据表名
[(create_definition,…)][table_options][COMMENT = '表的注释']

CREATE TABLE语句的参数说明:

关键字 说明
TEMPORARY 如果使用该关键字,表示创建一个临时表
IF NOT EXISTS 该关键字用于避免表存在时MySQL报告错误
create_definition 这是表的列属性部分。MySQL要求咋创建表时,表要至少包含一列
table_options 表的一些特性参数,其中大多数选项涉及的是表数据如何存储及存储在何处,如ENGINE选项用于定义表的存储引擎。多数情况下,用户不必指定表选项
COMMENT = '表的注释' 为表添加注释

下面介绍列属性create_definition部分,每一列定义的具体格式如下。

col_name type [NOT NULL | NULL][DEFAULT default_value][AUTO_INCREMENT]
[PRIMARY KEY][COMMENT '字段注释']

属性create_definition的参数说明:

参数 说明
col_name 字段名
type 字段类型
NOT NULL | NULL 指出该列是否允许为空值,系统一般默认允许为空值。
DEFAULT default_value 表示默认值
AUTO_INCREMENT 表示是否是自动编号,每个表只能有一个AUTO_INCREMENT列,并且必须被引用
PRIMARY KEY 表示是否为主键。一个表只能有一个PRIMARY KEY。如表中没有一个PRIMARY KEY,而某些应用程序需要PRIMARY KEY,MySQL将返回第一个没有任何NULL列的UNIQUE键,作为PRIMARY KEY
COMMENT '字段注释' 为字段添加注释

以上是创建一个数据表的一些基础知识,它看起来十分复杂,但在实际的应用中使用最基本的格式创建数据表即可,具体格式如下。

CREATE TABLE 数据表名(列名1 属性,列名2 属性...);

示例:使用CREATE TABLE语句创建一个名为tb_admin的数据表。

CREATE TABLE IF NOT EXISTS tb_admin
(
	id INT AUTO_INCREMENT PRIMARY KEY COMMENT '编号(自增)',
	user VARCHAR(30) NOT NULL COMMENT '账号',
	password VARCHAR(30) NOT NULL COMMENT '密码',
	create_time DATETIME COMMENT '创建时间'
) COMMENT = '管理员信息表';

2、查看表结构

对于一个创建成功的数据表,可以使用SHOW COLUMNS语句或DESCRIBE语句查看指定数据表的表结构。

2.1 使用SHOW COLUMNS语句

在MySQL中,使用SHOW COLUMNS语句可以查看表结构,SHOW COLUMNS语句的基本语法格式如下:

SHOW  [FULL] COLUMNS  FROM 数据表名 [FROM 数据库名];

或者:

SHOW  [FULL] COLUMNS  FROM 数据表名.数据库名;

示例:使用SHOW COLUMNS语句查看数据表tb_admin的表结构。

SHOW FULL COLUMNS FROM tb_admin;

2.2 使用DESCRIBE语句

在MySQL中,还可以使用DESCRIBE语句查看数据表结构。DESCRIBE语句的基本语法格式如下:

DESCRIBE 数据表名;

其中,DESCRIBE可以简写成DESC。在查看表结构时,也可以只列出某一列的信息。其语法格式如下:

DESCRIBE 数据表名 列名;

示例:使用DESCRIBE语句查看数据表tb_admin的表结构。

-- 查看tb_admin表结构
DESCRIBE tb_admin;

-- 查看user字段信息
DESCRIBE tb_admin user;

3、修改表结构

修改表结构使用 ALTER TABLE语句。修改表结构指增加或者删除字段、修改字段名称或者字段义类型、设置取消主键外键、设置取消索引以及修改表的注释等,语法如下:

ALTER [IGNORE] TABLE 数据表名 alter_spec[,alter_spec]... table_options

参数说明如下:

(1)[IGNORE]:可选项,表示如果出现重复关键的行,则只执行一次,其它重复的行被删除。

(2)数据表名:用于指定要修改的数据表的名称。

(3)alter_spec子句:用于定义要修改的内容。

(4)table_options:用于指定表的一些特性参数,其中大多数选项涉及的是表数据如何存储及存储在何处,如ENGINE选项用于定义表的存储引擎。多数情况下,用户不必指定表选项。

alter_spec子句用于定义要修改的内容,其语法格式如下:

-- 添加新字段
ADD [COLUMN] create_definition [FIRST | AFTER column_name]

-- 添加索引名称
ADD INDEX [index_name](index_col_name,...)

-- 添加主键名称
ADD PRIMARY KEY(index_col_name,...)

-- 添加唯一索引
ADD UNIQUE [index_name](index_col_name,...)

-- 修改字段默认值
ALTER [COLUMN] column_name {SET DEFAULT literal | DROP DEFAULT}

-- 修改字段名/类型
CHANGE [COLUMN] old_col_name create_definition

-- 修改子句定义字段
MODIFY [COLUMN] create_definition

-- 删除字段名称
DROP [COLUMN] column_name

-- 删除主键名称
DROP PRIMARY KEY

-- 删除索引名称
DROP INDEX index_name

-- 更改表名
RENAME [AS] new_tbl_name

上面的语法中,各参数说明如下:

(1)create_definition:用于定义列的数据类型和属性。

(2)[FIRST|AFTER column_name]:用于指定位于哪个字段的前面或者后面,当使用FIRST关键字时(后面不能加字段名),表示位于该表的第一位;使用AFTER 关键字时,表示位于指定字段的后面,其中的column_name表示字段名。

(3)[index_name]:可选项,用于指定索引名。

(4)(index_col_name,...):用于指定索引列名。

(5){SET DEFAULT literal | DROP DEFAULT}子句:为字段设置或者删除默认值。其中literal参数为要设置的默认值。

(6)old_col_name:用于指定要修改的字段名称。

(7)new_tbl_name:用于指定新的表名。

说明:ALTER TABLE语句允许指定多个动作,其动作间使用逗号分隔,每个动作表示对表的一个修改。

3.1 新增字段

在MySQL的ALTER TABLE语句中,可以通过使用ADD [COLUMN] create_definition [FIRST | AFTER column_name ]子句来添加新字段。

示例:添加一个新的email字段,该字段在password字段的后面。

ALTER TABLE tb_admin ADD COLUMN email VARCHAR(50) NOT NULL COMMENT '电子邮箱' AFTER password;

3.2 修改字段定义

使用MODIFY [COLUMN] create_definition子句可以修改已定义字段的定义。

示例:修改email字段的类型,将原先的VARCHAR(50)改成VARCHAR(100)。

ALTER TABLE tb_admin MODIFY COLUMN email VARCHAR(100) NOT NULL COMMENT '电子邮箱';

注意:修改时要把原来的其他属性也加上,否则其他属性会被清除了。如上面的示例如果写成:ALTER TABLE tb_admin MODIFY COLUMN email VARCHAR(100); 那么原先设置的非空和注释也被覆盖没了。

3.3 修改字段名

在MySQL的ALTER TABLE语句中,使用CHANGE [COLUMN] old_col_name create_definition子句可以修改字段名或者字段类型。

示例:修改user字段名修改为user_name。

ALTER TABLE tb_admin CHANGE user user_name VARCHAR(30) NOT NULL COMMENT '账号';

3.4 删除字段

在MySQL的ALTER TABLE中,使用DROP [COLUMN] col_name子句可以删除指定字段。

示例:删除email字段。

ALTER TABLE tb_admin DROP COLUMN email;

3.5 修改表名

在MySQL的ALTER TABLE中,使用RENAME [AS] new_tbl_name子句可以修改表名。

示例:修改表名,将td_admin表名修改为td_admin2。

ALTER TABLE tb_admin RENAME AS tb_admin2;

4、重命名表

在MySQL中,重命名数据表可以使用RENAME TABLE语句来实现,语法格式如下:

RENAME TABLE 数据表名1 To 数据表名2

示例:重命名表,将td_admin2表名修改为td_user。

RENAME TABLE tb_admin2 TO tb_user;

5、复制表

创建表的CREATE TABLE命令还有另外一种语法结构,在一张已经存在的数据表的基础上创建一份该表的拷贝,也就是复制表。

这种用法的语法格式如下:

CREATE TABLE [IF NOT EXISTS] 数据表名
	{LIKE 源数据表名 | (LIKE 源数据表名)}

示例:创建一份数据表tb_user的备份tb_userNew(仅表结构)。

CREATE TABLE tb_userNew
LIKE tb_user;

说明:使用该语法复制数据表时,将创建一个与源数据表相同结构的新表,该数据表的列名、数据类型和索引都将被复制,但是表的内容是不会被复制的。因此,新创建的表是一张空表。如果想要同时复制表中的内容,可以通过使用AS(查询表达式)子句来实现。

示例:创建一份数据表tb_user的备份tb_userNew2(表结构+表数据)。

CREATE TABLE tb_userNew2
AS SELECT * FROM tb_user;

6、删除表

删除数据表的操作很简单,同删除数据库的操作类似,使用DROP TABLE语句即可实现,语法格式如下: 

DROP TABLE [IF EXISTS] 数据表名;

示例:删除tb_user表。

DROP TABLE IF EXISTS tb_user;

猜你喜欢

转载自blog.csdn.net/pan_junbiao/article/details/85835498