使用 CREATE TABLE语句。语法如下:
CREATE [TEMPOARY] TABLE [IF NOT EXISTS] 数据表名
[(create_definition,···)][table_options] [select_statement]
参数说明如下:
关键字 | 说明 |
TEMPORARY | 表示创建一个临时表 |
IF NOT EXISTS | 用于避免表存在时报告错误 |
creata_definition | 表的列属性 |
table_options | 表的一些特性参数 |
select_statement | SELECT语句描述部分,用它可以快速的创建表 |
实际应用时最基本的创建数据表的格式如下:
CREATE TABLE table_name(列名1 属性,列名2 属性···);
示例:使用 CREATE TABLE 语句在数据库db_library中创建一个名为tb_bookinfo的数据表,该表包括 id、barcode、bookname
typeid、author、ISBN、price、page、bookcase和inTime等字段。
使用 ENGINE 属性设置表的存储引擎,语法如下:
ENGINE = 存储引擎类型
示例:在MySQL数据库db_library中创建一个名为tb_booktype的数据表,要求使用MyISAM存储引擎。
自增类型字段是指该字段的值会依次递增,并且不重复。默认情况下,自增类型字段从1开始递增,且步长为1,即每增加一条记录,该字段的值就加1。
使用AUTO_INCREMENT关键字设置某一字段为自增类型字段,语法格式如下:
字段名 数据类型 AUTO_INCREMENT
示例:在数据库db_library中创建一个名为tb_booktype1的数据表,要求将id字段设置为自动编号字段 。
使用 default charset 属性设置表的字符集。语法如下:
DEFAULT CHARSER = 字符集类型
示例:创建图书类型表,并设置其字符集为GBK
在一张已经存在的数据表的基础上创建一个该表的副本,也就是复制表。语法如下:
CREATE TABLE [IF NOT EXTSTS] 数据表名
{ LIKE 源数据表名 | (LIKE 源数据表名)}
示例:在数据库db_library中创建一份数据表tb_bookinfo的副本tb_bookinfobak。
查看数据表 tb_bookinfo和tb_bookinfobak的表结构:
DESC tb_bookinfo;
DESC tb_bookinfobak;
查看数据表tb_bookinfo和tb_bookinfobak的内容:
SELECT * FROM tb_bookinfo;
SELECT * FROM tb_bookinfobak;
由图可以看出,在复制表时,并没有复制表中的数据。
如果要同时复制表中的内容,需要使用下面的代码来实现:
CREATE TABLE tb_bookinfobak1
AS SELECT * FROM tb_bookinfo;
由图可以看出,在复制表的同时,复制了表中的数据。但新复制出来的数据表并不包括原表中设置的主键、自动编号等内容。如果想要复制一下表结构和数据都完全一样的数据表,那么需要应用下面的两条语句:
CREATE TABLE tb_bookinfobak1 LIKE tb_bookinfo;
INSERT INTO tb_bookinfobak1 SELECT * FROM tb_bookinfo;
使用 ALTER TABLE语句修改表结构。修改表结构指增加或删除字段、修改字段名称或字段类型、设置取消主键外键、设置取消索引以及修改表的注释。语法如下:
ALTER [IGNORE] TABLE 数据表名 alter_spec[ ,alter_spec]···
注意:当指定IGNORE时,如果出现重复关键的行,则只执行一行,其他重复的行被删除。
其中,alter_spec子句定义要修改的内容,其语法如下:
alter_specification:
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,···) ——添加唯一索引
| CHANGE [COLUMN] old_col_name create_definition ——修改字段类型
| ALTER [COLUMN] col_name { SET DEFAULT literal | DROP DEFAULT} ——修改字段名称
| MODIFY [COLUMN] create_definition ——修改子句定义字段
| DROP [COLUMN] col_name ——删除字段名称
| DROP PRIMARY KEY ——删除主键名称
| DROP INDEX index_name ——删除索引名称
| RENAME [AS] new_tbl_name ——更改表名
| table_options
ALTER TABLE 语句允许指定多个动作,动作间使用逗号分隔,每个动作对应表的一个修改。
示例:在数据表tb_bookinfobak 中添加一个translator字段,类型为varchar(30),not null,将字段 inTime的类型由date改为DATETIME(6),代码如下:
alter table tb_bookinfobak add translator varchar(30) not null,
modify inTime DATETIME(6);
语法格式:Alter TABLE 数据表名 ADD CONSTRAINT 约束名 约束类型(字段名)
约束类型 | 说明 |
PRIMARY KEY | 主键约束 |
DEFAULT | 默认值约束 |
UNIQUE | 唯一约束 |
NOT NULL | 非空约束 |
FOREIGN KEY | 外键约束 |
示例:为数据表tb_bookinfo添加主键约束,代码如下:
Alter TABLE tb_bookinfo ADD CONSTRAINT mrprimary PRIMARY KEY (id);
1)删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY
示例:ALTER TABLE tb_bookinfo DROP PRIMARY KEY;
2)删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 约束名
示例:ALTER TABLE tb_bookinfo DROP FOREIGN KEY mrfkey;
3)删除唯一约束
ALTER TABLE 表名 DROP INDEX 唯一索引名
示例:ALTER TABLE tb_bookinfo DROP INDEX mrindex;
1)修改表的存储引擎
ALTER TABLE 表名 ENGINE = 新的存储引擎类型
示例:ALTER TABLE tb_bookinfo ENGINE = MyISAM;
2)修改表的字符集
ALTER TEBLE 表名 DEFAULT CHARSET = 新的字符集
示例:ALTER TABLE tb_bookinfo DEFAULT CHARSET = GBK;
3)修改表的自增类型字段的初始值
ALTER TABLE 表名 AUTO_INCREMENT = 新的初始值
示例:ALTER TABLE tb_bookinfo AUTO_INCREMENT = 100;
RENAME TABLE 数据表名1 To 数据表名2
示例:将图书信息表的副本tb_bookinfobak重命名为tb_books,代码如下:
RENAME TABLE tb_bookinfobak To tb_books;
语法如下:DROP TABLE 数据表名;
示例:删除重命名后的图书信息表的副本tb_books,代码如下:
DROP TABLE tb_books;
在删除数据表时,删除一个不存在的表将会产生错误,在删除语句中加入IF EXISTS关键字就不会出错了。格式如下:
DROP TABLE IF EXISTS 数据表名;
示例:
上一节:MySQL学习笔记(一)之MySQL数据库管理
下一节:MySQL学习笔记(三)之索引