DDL:对数据库以及数据库内部的对象进行创建、删除、修改等操作的语言,DDL语句更多的是由数据库管理员(DBA)使用,开发人员一般很少使用。

一、数据库:

1、查看数据库列表:show databases;

2、创建数据库:create database [if not exists] 数据库名;

3、显示已创建的库创建时的创建语句:show create databases 数据库名

4、删除数据库:drop database 数据库名称;

5、打开数据库:use 数据库;

6、查看数据库支持的引擎和默认引擎:show engines;

二、数据库表:

1、查看数据库中所有的表 show tables;(需要use db_name打开数据库)

SHOW TABLES FROM db_name:显示数据库中的所有表(无需提前use db_name)

2、创建表 create table [if not exists] 表名(字段1名 字段1类型 列的约束条件,字段2名 字段2类型 列的约束条件,...);

3、查看表中字段及字段的类型

desc 表名;

show create table 表名\G;

4、查看表中字段某一列的类型

desc 表名.列名;

show columns from 表名.列名\G;

5、删除表 drop table 表名;

6、修改表

①修改表的字段类型

alter table 表名 modify [column] 字段类型 [first|after 字段名];

②增加表字段

alter table 表名 add [column] 字段类型 [first|after 字段名];

③删除表字段

alter table 表名 drop [column] 字段名;

④字段改名

alter table 表名 change [column] 旧的字段名 字段类型 [first|after 字段名];

7、更改表名 alter table 表名 rename [to] 新的表名;

truncate关键字

与drop的区别:truncate只删除数据不删除表的结构(类型),释放空间

删除表

truncate table 表名称;

用户及sql信息查看都show语句

SHOW WARNINGS:显示最后一个执行语句所产生的警告信息

SHOW ERRORS:显示最后一个执行语句所产生的错误信息

SHOW GRANTS:显示一个用户所拥有的权限

SHOW GRANTS;

SHOW GRANTS FOR CURRENT_USER();

SHOW GRANTS FOR 'root'@'localhost';

SHOW PROCESSLIST:显示系统中正在运行的所有进程,普通用户只能查看自己的进行信息

SHOW PRIVILEGES:显示MySQL所支持的所有权限,及权限可操作的对象

SHOW PLUGINS:显示MySQL插件信息

SHOW TABLE STATUS:显示表属性信息(需要use db_name打开数据库)

SHOW INDEX:显示表索引信息(需要先创建索引)

SHOW PROFILE and SHOW PROFILES:显示执行语句的资源使用情况

SHOW GLOBAL|SESSION VARIABLES:显示MySQL系统变量信息

SHOW STATUS:查看MySQL各种运行状态

 
数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。主要由create(添加)、alter(修改)、drop(删除)和 truncate(删除) 四个关键字完成。

二、常见的数据库对象

三、create关键字

1、创建一个数据库

create database 数据库名;     //建立一个数据库

create database 数据库名 default charset utf8 collate utf8_general_ci;    //建立一个数据库并制定编码格式

2、创建一个表

表是存放在数据库中的只能在数据库下创建表

创建表时自然会用到表的约束

完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不执行用户的操作。说白了,数据库约束条件就是保证数据库中数据的完整性。

在哪一个数据库下创建表首先需要切换到此数据库下

use 数据库名;    //使用某个指定的数据库
在这个数据库下创建表(关键字不区分大小写)
create table 表名称(字段1 类型,字段2 类型);   //在一个数据库中创建一个表
create table hero_table ( id int,name varchar(10));    //创建表
//创建表并增加约束
CREATE TABLE 表名称 (
字段1 类型1 约束1 约束1,
字段2 类型2 约束2 约束2
);
//创建表并增加约束
CREATE TABLE hero_table4 (
id INT(11) NOT NULL PRIMARY KEY,
NAME VARCHAR(10) NOT NULL UNIQUE KEY
)

3、使用create复制表

//只复制表结构及约束,但不复制数据

CREATE TABLE  新表名 LIKE  原表名;
举例:
create TABLE nedp.test_yyp_00123 like nedp.test_yyp_0012;

//复制表结构及数据,但不复制约束

CREATE TABLE 新表名 AS SELECT * FROM  原表名;
create TABLE nedp.test_yyp_001234 as select * from  nedp.test_yyp_0012;

四、alter关键字

1、添加字段

ALTER TABLE  表名 ADD  新字段名 数据类型;

ALTER TABLE 表名称 ADD COLUMN  新字段名 数据类型 [约束条件]  [FIRST|AFTER 已存在字段名];

举例:
ALTER TABLE  test_yyp_0012 ADD  balance035 float(20,2) NOT null after balance3;

2、添加索引
比较常用的是多列索引,指的是在表中多个字段上创建索引,只有在查询条件中使用了这些字段中的第一个字段时,该索引才会被使用。
例如:  KEY `SDB_05_CBK_ACCT_IDX2` (`acctno`,`trandt`,`billsq`),只有查询条件中使用了acctno 字段时,该索引才会被使用。

查看索引是否被用:

例如:
 EXPLAIN select * from f_sdb_05_cbk_acct where acctno='10000230074200000031';

ALTER TABLE 表名称 ADD INDEX 索引名称 (字段名)

3、添加主键

ALTER TABLE 表名称 ADD PRIMARY KEY (字段名)

ALTER TABLE 表名称 ADD UNIQUE KEY (字段名)

4、添加外键约束

ALTER TABLE 需要添加外键表名称 ADD FOREIGN KEY 外键名(设为外键的字段) REFERENCES 被添加外键表名称(设为被添加外键的字段)

5、修改字段类型时要注意字段类型的兼容性及精度,除非该列全部数据为null

ALTER TABLE 表名称 CHANGE COLUMN NAME 修改字段 修改为字段类型

ALTER TABLE 表名称 MODIFY COLUMN 修改字段 修改为字段类型

 
6、修改与删除表中default

//设置default

ALTER TABLE 表名称 ALTER COLUMN 字段名 SET DEFAULT  '修改的值'

//删除default

ALTER TABLE 表名称 ALTER COLUMN 字段名 DROP DEFAULT

7、禁用和启用约束

//禁用约束

ALTER TABLE 表名称 DISABLE KEYS

//启用约束

ALTER TABLE 表名称 ENABLE KEYS

8、删除表字段、主键、索引、外键约束

//删除表字段

ALTER TABLE 表名称 DROP COLUMN 字段名;
ALTER TABLE 表名称 DROP  字段名;

举例:
ALTER TABLE test_yyp_0012 drop  balance035;
ALTER TABLE test_yyp_0012 drop column  balance034;

//删除主键

ALTER TABLE 表名称 DROP PRIMARY KEY

//删除索引

ALTER TABLE 表名称 DROP INDEX 索引的字段名

//删除外键约束

ALTER TABLE 表名称 DROP FOREIGN KEY 外键的字段名

9、修改表名

ALTER TABLE  旧表名 RENAME [TO] 新表名;

10、修改字段名

ALTER TABLE  表名  CHANGE 旧字段名 新字段名 新数据类型;

【此处旧字段名 新字段名可以不一致,新数据类型可以与源数据类型一致】
或者【此处旧字段名 新字段名一致,新数据类型与源数据类型不一致---修改了字段类型】
ALTER TABLE test_yyp_0012 CHANGE id1 ID1 int(90);
ALTER TABLE test_yyp_0012 CHANGE ID2 ID2 bigint(190);

11、修改字段的数据类型
ALTER TABLE 表名 MODIFY  字段名 数据类型;
ALTER TABLE test_yyp_0012 MODIFY balance1 DOUBLE(20,2);

12、修改字段的排列位置
ALTER TABLE 表名 MODIFY  字段名 数据类型   [FIRST|AFTER 已存在字段名];

ALTER TABLE test_yyp_0012 MODIFY balance1 DOUBLE(20,6) AFTER INCOME;

五、drop关键字

1、删除数据库

DROP DATABASE 数据库名

2、删除表(删除数据库中已存在的表,且没有关联关系的数据库表)

DROP TABLE 表名称

六、truncate关键字

与drop的区别:truncate只删除数据不删除表的结构(定义),释放空间

删除表

truncate table 表名称;