DDL(Data Definition Language)
数据定义语言,主要用来创建数据库和数据表
注:文章代码块中[]里面的内容表示可选,|表示或
常用命令如下:
CREATEDATABASE-- 创建新数据库
ALTERDATABASE-- 修改数据库
CREATETABLE-- 创建新表
ALTERTABLE-- 变更(改变)数据库表
DROPTABLE-- 删除表
CREATEINDEX-- 创建索引(搜索键)
DROPINDEX-- 删除索引
1 DDL中和数据库相关的操作
#创建数据库
CREATEDATABASE|SCHEMA [IFNOTEXISTS]database_name;--中括号代表可选
#可以指定编码方式
CREATEDATABASE|SCHEMA [IFNOTEXISTS]database_name DEFAULT CHARACTERSET[=]'charset';
#查看全部数据库
SHOW DATABASES;
#查看指定数据库创建时基本信息
SHOWCREATEDATABASE db_name;
#修改指定数据库编码方式
ALTERDATABASE db_name;
#查看上一步操作的警告信息
SHOW WARNINGS;
#打开某个数据库
USE db_name;
#显示当前数据库
SELECTDATABASE()|SCHEMA();
#删除指定数据库
DROPDATABASE [IFNOTEXISTS] db_name;
2 数据表操作
#一个合法的数据表至少包含一列,可以是0行
#创建数据表语法规范
CREATETABLE[IFNOTEXISTS] tbl_name(
字段名称 字段类型 [完整的约束条件]
字段名称 字段类型 [完整的约束条件]
...
)ENGINE = 存储引擎 CHARSET = 编码方式;
#查看已有表
SHOW TABLES [FROM|IN] database_name [LIKE'pattern'WHEREexpr];
#查看指定表详细信息
SHOWCREATETABLEtbl_name;
#查看表结构
DESCtbl_name;
DESCRIBE tbl_name;
SHOW COLUMNSFROMtbl_name;
#查新表中所有记录(注意和上一条区别)
SELECT*FROMtbl_name;
#删除表
DROPTABLEIF EXISTS tbl_name;
#向表中插入一条记录
INSERT[INTO] tbl_name(id,username,……)VALUES(1,'KING',……);
#添加删除字段
ALTERTABLEusers #建一次表可以执行多次操作
ADD usersexVARCHAR(20) AFTER|FIRST tel;
DROPusersex;
```
#添加删除默认操作
--给email字段添加默认值imooc@qq. com
ALTERTABLEuser2
ALTERemailSETDEFAULT'imooc@qq. com';
--删除age字段的默认值
ALTERTABLEuser2
ALTERageDROPDEFAULT;
#修改字段
# 改类型属性位置用MODIFY
# 改名字类型属性位置用CHANGE
ALTERTABLEtbl_name
MODIFY 字段名称 [字段类型] [字段属性][FIRST|AFTER 字段名称]
ALTERTABLEtal_name
CHANGE 字段名称 字段名称 [字段类型] [字段属性][FIRST|AFTER 字段名称]
#添加删除主键
(如果主键有自增,先去掉自增才能删除主键)
ALTERTABLEtbl_name
ADD PRIMARY KEY (字段名称);
ALTERTABLEtbl_name
DROPPRIMARY KEY;
```
/* 添加删除索引
* 主键索引
* 唯一索引 :避免重复的列
* 常规索引:key或者index设置
* 全文索引:特定引擎下有,快速定位数据*/
ALTERTABLEtbl_name
ADD UNIQUE KEY|INDEX [index_name] 字段名称
#添加时,如果index_name不填,就默认为字段名字。这个名字用作索引
ALTERTABLEtbl_name
DROPindex_name;
--增加一个全文索引 (索引名) 列名
ALTERTABLEdatabase_name.tbl_nameADD FULLTEXT INDEX
字段名 (字段) ;
-- EXPLAIN 分析sq1执行的状况
EXPLAINSELECT*FROMtbl_name;-- 非全文索引
EXPLAINSELECT*FROMtbl_nameWHEREMATCH (字段) AGAINST('刘');
#修改表名
ALTERTABLEtbl_ _name RENAME [TO|AS] new_tbl_name
RENAMETABLEtbl_ name TO new_tbl_name;
领取专属 10元无门槛券
私享最新 技术干货