DDL,DML,DCL,DQL
- DDL(Data Definition Language)数据定义语言,用来定义数据库对象,操作表结构
- DML(Data Manipulation Language)数据操作语言,用来定义数据库记录(数据),操作表记录
- DCL(Data Control Language)数据控制语言,用来定义访问权限和安全级别
- DQL(Data Query Language)数据查询语言,用来查询记录(数据)
DDL
库
创建:
CREATE
DATABASE 数据库名;
删除:DROP
DATABASE 数据库名;
改变使用的数据库:USE
数据库名;
表
- 创建:
CREATE
TABLE 表名(
列名 列类型,
列名 列类型,
…
列名 列类型
);- 查看当前数据库中所有表名称:SHOW TABLES;
- 查看指定表的创建语句:SHOW CREATE TABLE 表名;
- 查看表结构:
DESC
表名;- 删除表:
DROP
TABLE 表名;- 修改表:
ALTER
TABLE 表名(前缀)- 修改表之添加列:
ALTER
TABLE 表名ADD
(
列名 列类型,
列名 列类型,
…
列名 列类型
);- 修改表之修改列类型:
ALTER
TABLE 表名MODIFY
列名 列类型;(如果列被修改之前已存在数据,那么新的类型可能会影响到已存在的数据)- 修改表之修改列名:
ALTER
TABLE 表名CHANGE
原列名 新列名 列类型;- 修改表之删除列:
ALTER
TABLE 表名DROP
列名;- 修改表名称:
ALTER
TABLE 原表名RENAME TO
新表名;
DML
INSERT
INSERT INTO 表名[(列名,列名,…)] values(值,值,…);
值的顺序与声明的字段的顺序保持一致
插入多条记录:
INSERT INTO 表名[(列名,列名,…)] values (记录),(记录),(记录);
复制表:
CREATE TABLE 要复制的表的表名 SELECT * FROM 新表名;#复制表结构及其数据
DELETE
DELETE FROM 表名[where 条件语句];
UPDATE
UPDATE 表名 SET 列名 = 新值,列名 = 新值,… [where 条件语句];
DCL
- 创建用户:
|-CREATE
USER 用户名@IP地址IDENTIFIED BY
‘密码’;
(用户只能在指定IP地址上登录)
|-CREATE
USER 用户名@’%’IDENTIFIED BY
‘密码’;
(用户可以在任意IP地址上登录)- 用户授权
|-GRANT
权限1,权限2.。。。权限nON
数据库.*
TO
用户名@IP地址;
(给予用户指定数据库的部分权限,例如:CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT权限)
|-GRANT
ALLON
数据库.*
TO
用户名@IP地址;
(给予用户指定数据库的全部权限)- 撤销授权
REVOKE
权限1,权限2.。。。权限nON
数据库.*
FROM
用户名@IP地址;
(撤销指定用户在指定数据库的指定权限)- 查看权限
SHOW GRANTS FOR
用户名@IP地址;
(查看指定用户的权限)- 删除用户
DROP
USER 用户名@IP地址;
DQL
列控制
- 査洵所有列:SELECT * FROM表名;
–>其中" * ”表示査洵所有列- 査洵指定列
SELECT 列1 [,列2,…列N] FROM 表名;- 完全重复的记录只记一次
当査洵結果中的多行记录一-模一 祥吋,只显示一行。
SELECTDISTINCT
* (列1 [,列2,…列N] ) FROM表名;- 列运算
|- 数量类型的列可以做加、減、乘、除运算
SELECT 列名*1.5 FROM 表名;
SELECT 列名 + 列名 FROM 表名;
|- 字符串类型可以做连续运算
SELECTCONCAT('S', 列名)
FROM 表名;
|- 转换NULL値
有吋需要把NULL值转换成其它値,例如:列名+1000吋, 如果此列存在NULL値,那么NULL+1000就是NULL,而我们希望把NULL当前0来运算.SELECTIFNULL (列名, 0)
+1000 FROM 表名;
|- 给列起別名
SELECT IFNULL(列名, 0)+1000AS 别名
FROM 表名;
–>其中As可以省略
条件控制
- 条件查询
select empno,ename,comm from emp where sal > 10000 and comm is not null;
select empno,ename,comm from emp where sal between 20000 and 30000;
select empno,ename,job from emp where job in ('经理','董事长');
- 模糊查询
当你想查询姓张,并且姓名一共两个字的员工时
模糊查询需要使用运算符:LIKE
;上面栗子查询的是姓张,并且名字由两个字构成的人员
上面栗子查询的是名字由三个字构成的人员
上面栗子查询的是名字中含有“一”的人员