mysql语句之DDL
SQL分类:
DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括create、drop、alter等。
DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括insert、delete、udpate 和select 等。
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括grant、revoke 等。
DDL语句:
1、创建数据库
语法:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...
例如创建数据库testtest,执行命令如下:
mysql> create database testtest;
2、删除数据库
语法:DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
例如要删除创建的数据库testtest,执行命令如下:
mysql> drop database testtest;
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)
因为MySQL 的表名是以目录的形式存在于磁盘上,所以表名的字符可以用任何目录名允许的字符。column_name 是列的名字,column_type 是列的数据类型,contraints 是这个列的约束条件。
例如:例如,创建一个名称为emp 的表。表中包括4个字段,ename(姓名),hiredate(雇用日期)、sal(薪水)、deptno(部门)字段类型分别为varchar(10)、date、decimal(10,2)、int(2)
mysql> create table emp(ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2));
表创建完成后,查看表的定义,可以使用命令:DESC tablename
例如,查看emp表,输出如下信息:
mysql> desc emp;
+----------+----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------+------+-----+---------+-------+
| ename | varchar(10) | YES | | NULL | |
| hiredate | date | YES | | NULL | |
| sal | decimal(10,2) | YES | | NULL | |
| deptno | int(2) | YES | | NULL | |
+----------+----------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
如要更全面的查看表的定义,可以执行命令:
mysql> show create table emp\G;
*************************** 1. row ***************************
Table: emp
Create Table: CREATE TABLE `emp` (
`ename` varchar(10) DEFAULT NULL,
`hiredate` date DEFAULT NULL,
`sal` decimal(10,2) DEFAULT NULL,
`deptno` int(2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
ERROR:
No query specified
从上面表的创建SQL 语句中,除了可以看到表定义以外,还可以看到表的engine(存储引擎)和charset(字符集)等信息。“\G”选项的含义是使得记录能够按照字段竖着排列,对于内容比较长的记录更易于显示。
4、删除表
语法:DROP TABLE tablename;
例如,删除表emp,执行如下语句:
mysql> drop table emp;
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 age int(3);
(3)、删除表字段
语法:ALTER TABLE tablename DROP [COLUMN] col_name
例如,将字段age 删除掉:
mysql> alter table emp drop age;
(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);
(5)、修改字段排列顺序
前面介绍的的字段增加和修改语法(ADD/CNAHGE/MODIFY)中,都有一个可选项first|after column_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;
(6)、表改名
语法:ALTER TABLE tablename RENAME [TO] new_tablename
例如,将表emp 改名为emp1,命令如下:
mysql> alter table emp rename emp1;