DDL是数据定义语言的缩写,简单来说,就是对数据库内部的对象进行创建、删除、修改的操作语言。
它和DML语句的最大区别是DML只是对表内部数据的操作,而不涉及表的定义、结构的修改,更不会涉及其他对象。
DDL语句更多地被数据库管理员(DBA)所使用,一般开发人员很少使用。
1.
创建数据库:
CREATE DATABASE dbname;
查询系统中存在数据库命令:
show databases;
操作数据库时,要使用: USE dbname; 的命令;查询USE的数据库中存在数据表库命令:show tables;
2.
删除数据库:
drop database dbname;
(可以发现,执行操作后,显示了“0 rows affected ”,这个提示可以不用去管它,在MySQL里面,drop语句操作的结果都是"0 rows affected"。)
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的表,表中包括ename,hiredate和sal,deptno 4个字段,字段类型分别为varchar(10),date,decimal(10,2),int(2).
mysql> create table emp(ename varchar(10),hiredate date,sal decimal(10,2),detno int(2));
表创建完毕后,查看表有的定义之命令:
DESC tablename; (DESC就是DECSRIBE的缩写)
或者:show columns from tablename;
若要全面的表定义信息,可通过查看创建表的SQL语句来得到:
mysql> show create table emp /G;
"/G"选项的含义是使得记录能够按照字段竖着排列,对于内容比较长的记录更易于显示。
4.
删除表:
DROP TABLE tablename;
5.
修改表
(1)修改表类型:
ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
例:修改表emp的ename字段定义,将varchar(10)改为varchar(20):
mysql> alter table emp modify ename varchar(20);
(2)增加表的字段:
ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name]
例:在表emp上新增加字段age,类型为int(3);
mysql> alter table emp add column age int(3);
(3)删除表字段:
ALTER TABLE tablename DROP [COLUMN] col_name;
(4)修改字段名:
ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST | AFTER col_name]
例:将age改名为age1,同时修改字段类型这int(4):
mysql> alter table emp change age age1 int(4);
-------------------------------------------------------------------------------------------
注意: change和modify都可以修改表的定义,不同的是change后面需要邮写两次
列名,不方便。
但是change的优点可以修改列名称,modify则不能。
-------------------------------------------------------------------------------------------
(5)修改字段排列顺序
前面介绍的字段增加和修改语法(ADD/CHANGE/MOFIFY)中,都有一个可选项[FIRST | AFTER col_name],这个选项可以用来修改字段在表中的位置,默认ADD增加的新字段是加在表的最后的位置,而CHANGE/MODIFY默认都不会改变字段的位置。
例:将新增的字段birth date 加在ename之后:
mysql> alter table emp add birth date after ename ;
修改字段age,将它放在最前面:
mysql> alter table emp modify age int(3) first;
---------------------------------------------------------------------------------------------
注意:CHANGE/FIRST|AFTER COLUMN 这些关键字都属于MySQL在标准SQL上的
扩展,在其他数据库上来一定适用。
---------------------------------------------------------------------------------------------
(6)更改表名:
ALTER TABLE tablename RENAME [TO] new_tablename;
例:将表emp改名为emp1:
mysql> alter table emp rename emp1;
--------------------------------------
其他SHOW语句:
show status,用于显示广泛的服务器状态信息;
show create database和show create table,分别用来显示创建特定数据库或表的mysql语句;
show grants, 用来显示授予用户(所有用户或特定用户)的安全权限;
show errors和show warnings,用来显示服务器错误或警告消息。
进一步了解SHOW执行代码:help show;
--------------------------------------