- 本博客是《MySQL基础》系列博客的第六部分,主要介绍SQL语句中的DDL语句中CREATE、ALTER、DROP的基本用法。
- 本博客既为方便自己查看复习而作,亦为你而作,望能有所裨益
- 学习交流请联系 April_0911@163.com
DDL简介
DDL,即Data Definition Language,数据定义语言,用于如数据库、表、索引等数据的定义。
DDL用法
DDL常用的语句有三个:CREATE
,DROP
,ALTER
。其用法简介如下:
关键词 | 用途 |
---|---|
CREATE | 创建 数据库(Database)、表(Table)、索引(Index)、视图(View) |
DROP | 删除 数据库(Database)、表(Table)、索引(Index)、视图(View)、约束条件(Constraint) |
ALTER | 修改 约束条件(Constraint) |
CREATE
创建数据库
CREATE DATABASE <数据库名> ; -- 采用默认的字符集和校验集
CREATE DATABASE <数据库名> DEFAULT CHARACTER SET <字符集> COLLATE <校验集>;
创建数据表
CREATE TABLE <数据库名>.<数据表名>(
<字段1> <数据类型> <约束条件>,
<字段2> <数据类型> <约束条件>,
···························,
primary key(<联合主键一>,<联合主键二>,···) -- 在创建联合主键时使用
constraint <连接名> foreign key(<外键一>,<外键二>,···)
references <被连接的表名>(<主键一>,<主键二>,···)
-- 在创建外键时使用,添加其他约束条件时也用CONSTRAINT
)
ENGINE = <引擎名> -- 不写此句则默认引擎为InnoDB
DEFAULT CHARACTER SET = <字符集> -- 字符集设定,不写此句则为默认字符集
COLLATE = <校验集> -- 不写此句则为默认校验集
COMMENT = `<注释内容>`; -- 添加注释内容,不写则意味着无注释
创建索引及视图
创建索引以及视图的相关方法会在之后的专题提到,在此先不予以介绍
ALTER
在学习更改表的约束条件的语法时,我们有必要先学习下两个常用语法:
desc <数据库名>.<数据表名>; -- 查看表结构,desc 也可以用 describe 代替
show create table <数据库名>.<数据表名>; -- 显示创建该数据表时使用的 CREATE 语句
如此,我们便可以对要修改的表有个大致了解,从而方便后续操作
更改表设置
/*以下内容为方便起见,没有指定数据库名,默认其在已经选定的同一数据库下*/
alter table <数据表名> character set <新字符集>, collate <新校验集>,
engine <新引擎名> comment '<新注释>' rename [to] <新数据表名>;
-- 更改表的名字及基本设置,可单项修改,也可多项并发,to可加可不加
ALTER TABLE test ENGINE[=]MyISAM , COMMENT[=]'四月天' rename test_1;
-- 等号可加可不加
更改字段
alter table <数据表名> modify <字段名> <更改内容>;
-- 改变字段的部分内容,如数据类型,默认值和注释
alter table test modify A int default 99 comment 'CSDN';
-- 更改test表中的A字段的数据类型为int。默认值为99,注释为CSDN
alter table <数据表名> change <字段名> <新字段名> <更改内容>;
-- change比modify多了一个修改字段名的功能,但不能单独修改,必须增加其他更改内容
添加字段
alter table <表名> add <字段名> <数据类型> <约束条件>; -- 增加新的字段及其设置
alter table test add id int unique not null auto_increment;
-- 在test表中增加新的一列,字段名为id,数据类型为整数,索引唯一、非空、自增
alter table test add id_test1 decimal(5,3) unsigned not null
comment '无问西东' default 911;
-- 增加的内容可以有注释和默认值
alter table <表名> add <新字段名> <数据类型> <约束条件> after <老字段名>;
-- 在老字段名后面加入一个新的字段及其相关设置
DROP
删除数据库
drop database <数据库名>;
删除数据表
drop database <数据库名>.<数据表名>;
/* 有的表有外键约束,此时应先去掉约束
alter table <连接的表> drop foreign key <外键名>;
再删除表 */
删除字段
TRUNCATE table <数据表名>
-- 清空表内容,相比drop和delete,速度更快
alter table <数据表名> drop column <字段名>;
-- 当字段关联到其他表时,其删除方法同上
删除索引及视图
删除索引以及视图的相关方法会在之后的专题提到,在此先不予以介绍