目录
一、DCL(Data Control Language):数据控制语言
二、DQL(Data Query Language):数据查询语言
一、DCL(Data Control Language):数据控制语言
1、创建用户
语法:CREATE USER ‘用户名’@地址 IDENTIFIED BY '密码';
2、给用户授权
语法:GRANT 权限1, … , 权限n ON 数据库.* TO ‘用户名’@地址;
GRANT ALL ON mydb1.* TO user2@localhost;
将mydb1所有的操作权限全部赋给user2这个用户
3、撤销授权
语法:REVOKE 权限1, … , 权限n ON 数据库.* FROM ‘用户名’@地址;
4、查看用户权限
语法:SHOW GRANTS FOR ‘用户名’@地址;
5、删除用户
语法:DROP USER ‘用户名’@地址;
6、修改用户密码
语法:use mysql;
alter user '用户名'@localhost identified by '新密码';
二、DQL(Data Query Language):数据查询语言
1、基本语法
(1)select 列名 from 表名;
'*' 通配符,表示所有
select * from 表名; //查询所有
(2)指定查询
SELECT 列名1, 列名2, …列名n FROM 表名;
SELECT sid, sname, age FROM stu;
2、条件查询
(1)between 条件1 and 条件2;
(2)and:'与'关系
(3)or:'或'关系
(4)in(集合):查询在'集合'中的记录
(5)not in(集合):查询不在'集合'中的记录
SELECT * FROM stu
WHERE gender='female' AND age<50;
查询性别为女,并且年龄小于50的记录
查询学号为S_1001,S_1002,S_1003的记录
SELECT * FROM stu
WHERE sid IN ('S_1001','S_1002','S_1003');
3、模糊查询
(1)通配符
'%':表示0个或多个字符
'_':表示单个字符
(2)关键字: like
SELECT 字段 FROM 表 WHERE 某字段 Like 条件
查询姓名由5个字母构成的学生记录
SELECT *
FROM stu
WHERE sname LIKE '_ _ _ _ _';
查询姓名中第2个字母为“i”的学生记录
SELECT *
FROM stu
WHERE sname LIKE '_i%';
查询姓名以“z”开头的学生记录
SELECT *
FROM stu
WHERE sname LIKE 'z%';
其中“%”匹配0~n个任何字母
4、字段查询控制
(1)去掉重复记录:
SELECT DISTINCT 列名 FROM 表名;
5、排序:
order by子句,默认是升序(ASC).降序是DESC
查询所有学生记录,按年龄升序排序
SELECT *
FROM stu
ORDER BY sage ASC;
或者
SELECT *
FROM stu
ORDER BY sage;
6、聚合函数:
(1)COUNT():统计指定列不为NULL的记录行数
统计月薪与佣金之和大于2500元的人数:
SELECT COUNT(*) AS cnt FROM emp WHERE sal+IFNULL(comm,0) > 2500;
(2)sum():求和
查询所有雇员月薪+佣金和:
SELECT SUM(sal+IFNULL(comm,0)) FROM emp;
(3)avg():求平均值
统计所有员工平均工资:
SELECT SUM(sal), COUNT(sal) FROM emp;
(4)max():最大值
(5)min():最小值
7、分组查询:
(1)group by:分组
查询每个部门的部门编号和每个部门的工资和:
SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno;
(2)having:对分组后的记录进行筛选
查询工资总和大于9000的部门编号以及工资和:
SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno
HAVING SUM(sal) > 9000;
注意,WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。
8、分页查询:
LIMIT 起始行索引,记录数 --->是MySQL特有的关键字
查询5行记录,起始行从0开始
SELECT * FROM emp LIMIT 0, 5;
注意,起始行从0开始,即第一行开始!