DDL 是数据定义语言的缩写,简单来说,就是对数据库内部的对象进行创建、删除、修改的 操作语言。它和 DML 语言的最大区别是 DML 只是对表内部数据的操作,而不涉及到表的定 义、结构的修改,更不会涉及到其他对象。DDL 语句更多的被数据库管理员(DBA)所使用, 一般的开发人员很少使用。

1.创建数据库

CREATE DATABASE dbname

这个时候,如果需要知道系统中都存在哪些数据库,可以用以下命令来查看:

show databases;

在查看了系统中已有的数据库后,可以用如下命令选择要操作的数据库:

USE dbname

2.删除数据库

drop database dbname;

3.创建表

在数据库中创建一张表的基本语法如下:

CREATE TABLE tablename (column_name_1 column_type_1 constraints,column_name_2 column_type_2 constraints , ......column_name_n column_type_n constraints)

例如,创建一个名称为 emp 的表。表中包括 3 个字段,ename(姓名),hiredate(雇用日期)、 sal(薪水),字段类型分别为 varchar(10)、date、int(2):

create table emp(
ename varchar(10),
hiredate date,
sal decimal(10,2),
deptno int(2)
);

表创建完毕后,如果需要查看一下表的定义,可以使用如下命令:

DESC tablename

虽然 desc 命令可以查看表定义,但是其输出的信息还是不够全面,为了查看更全面的表定 义信息,有时就需要通过查看创建表的 SQL 语句来得到,可以使用如下命令实现:

show create table emp \G;

“\G”选项的含义是使得记录能够按照字段竖着排列,对于内 容比较长的记录更易于显示。

4.删除表

表的删除命令如下:

DROP TABLE tablename

5.修改表

表结构的更改一般都使用 alter table 语句,以下是一些常用的命令。

(1) 修改表类型

语法如下:

ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]

例如,修改表 emp 的 ename 字段定义,将 varchar(10)改为 varchar(20):

alter table emp modify ename varchar(20);

(2) 增加表字段

语法如下:

ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name]

例如,表 emp 上新增加字段 age,类型为 int(3):

alter table emp add column age int(3);

(3) 删除表字段

语法如下:

ALTER TABLE tablename DROP [COLUMN] col_name

例如,将字段 age 删除掉:

alter table emp drop column age;

(4) 字段改名

语法如下:

ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name]

例如,将 age 改名为 age1,同时修改字段类型为 int(4):

alter table emp change age age1 int(4) ;

(5) 修改字段排列顺序

前面介绍的的字段增加和修改语法(ADD/CNAHGE/MODIFY)中,都有一个可选项 first|after column_name,这个选项可以用来修改字段在表中的位置,默认 ADD 增加的新字段是加在 表的最后位置,而 CHANGE/MODIFY 默认都不会改变字段的位置。

例如,将新增的字段 birth date 加在 ename 之后:

alter table emp add birth date after ename;

修改字段 age,将它放在最前面:

alter table emp modify age int(3) first;

(6) 表改名

语法如下:

ALTER TABLE tablename RENAME [TO] new_tablename

例如,将表 emp 改名为 emp1,命令如下:

alter table emp rename emp1;