mysql语句-DDL语句
SQL分类
1、DDL语句:数据定义语句,用来定义不同的数据段、数据库,表,列,索引等数据表对象,常用语句:create、drop、alter等。
2、DML语句:数据操作语句,用于添加、删除、更新和查询数据库记录:insert,delete,update,select.
3、DCL语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句:grant、revoke
DDL语句
1.create创建数据库
mysql> create database test1;
Query OK, 1 row affected (0.00 sec)
如果创建时,数据库已经存在则会提示:
mysql> create database test1;
ERROR 1007 (HY000): Can't create database 'test1'; database exists
这时可以使用show命令来查看系统中有哪些数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 |
| db2 |
| db3 |
| homework |
| mysql |
| mysqlbook |
| performance_schema |
| test |
| test1 |
+--------------------+
10 rows in set (0.00 sec)
2.删除数据库
语法drop + datavase + 数据库名:
mysql> drop database test1;
Query OK, 0 rows affected (0.02 sec)
注意,删除数据库时会将数据库下所有的表连同删除
3、创建表
创建表语法:
create table 表名(
字段名 数据类型 约束条件,
字段名 数据类型 约束条件,
字段名 数据类型 约束条件,
)
例如创建一个emp表,字段:ename、hiredate、sal,数据类型:varchar(10)、date、int(2)(后面会介绍数据类型)
create table emp(
ename varchar(10),
hiredate date,
sal decimal(10,2),
deptno int(2)
);
创建完成后可以输入以下命令查看表结构:
desc 表名
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)
但是desc命令显示的信息不是最全的,全面信息可以用如下命令:
show create table +表名\G;
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)
\G是使记录竖向排列
4、删除表
删除表的命令如下:
drop table 表名:
列如删除数据库中的emp表
drop table emp;
5、修改表
修改表设计到多方面,修改字段,删除字段、修改数据、修改数据类型以及约束条件等。
表的修改都使用到alter table语句
5.1 修改表字段的数据类型
语法:
alter table 表名 modify 字段名 数据类型 约束条件;
例如修改表emp的ename字段定义,把varchar(10)改为varchar(20):
mysql> alter table emp modify ename varchar(20);
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
#查看表结构
mysql> desc emp;
+----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| ename | varchar(20) | YES | | NULL | |
| hiredate | date | YES | | NULL | |
| sal | decimal(10,2) | YES | | NULL | |
| deptno | int(2) | YES | | NULL | |
+----------+---------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
#ename字段的数据类型以及修改
5.2增加表字段
语法:
alter table 表名 add 字段名 数据类型 约束条件 [first/after 表名];
例如在emp中增加字段age,数据类型为int(3):
alter table emp add age int(3);
mysql> alter table emp add age int(3);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc emp;
+----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| ename | varchar(20) | YES | | NULL | |
| hiredate | date | YES | | NULL | |
| sal | decimal(10,2) | YES | | NULL | |
| deptno | int(2) | YES | | NULL | |
| age | int(3) | YES | | NULL | |
+----------+---------------+------+-----+---------+-------+
5 rows in set (0.01 sec)
可以在语句后面加first为加到表首字段,after+字段名表示在谁后面
5.3删除表字段
语法:alter table emp drop 字段名;
举例:删除age字段
mysql> alter table emp drop age;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc emp;
+----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| ename | varchar(20) | YES | | NULL | |
| hiredate | date | YES | | NULL | |
| sal | decimal(10,2) | YES | | NULL | |
| deptno | int(2) | YES | | NULL | |
+----------+---------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
5.4字段改名
语法:alter table 表名 change 字段名 新字段名 [约束条件]:
alter table emp change age age1 int(4);
注意:change 和modify都可以修改表的定义,不同的是change后面需要两次列表(新旧)
5.5修改表名
语法: alter table 表名 rename 新表名;
alter table emp rename emp1;