Mysql语句整理(查询)
DCL (CONTROL)(创建用户)
一个项目创建一个用户,一个项目对应一个数据库,
这个用户只能对当前的数据库有权限,其他的数据库操作不了;
语句
创建用户:
CREATE USER 用户名@IP地址 IDENTIFIED BY ‘123456’
授权:
GRANT 权限词 ON 数据库.表 TO 用户@IP地址
撤销权限:
REVOKE 权限 ON 数据库.*FROM 用户@IP地址
删除用户:
DROP USER 用户名@IP地址
DQL (QUERY)(查询数据)
用于查询数据,不会对数据有任何的改变;
关键字 : SELECT
基础查询
查询所有列 :
SELECT * FROM 表名;
查询定制列:
SEKECT 列名1,列名2,列名3 FROM 表名;
exp : SELECT age , birthday FROM stu;
条件查询
条件查询就是在查询时间给出的 where 子句;
常用的运算符或关键字 :
=
!=
<>(不等于)
<
>
<=
>=
BETWEEN…AND…
IN (SET(集合));
满足那些条件
IS NULL
IS NOT NULL
AND
OR
NOT( 非 );
exp:
查询年龄是50岁并且名字是小明的所有信息
SELECT * FROM stu WHERE name = ‘小明’ AND age = 50;
查询名字是小明或者年龄是22岁的所有人信息
SELECT * FROM stu WHERE name = ‘小明’ OR age = 22;
查询分数是70,80,90人的名字;
SELECT usename FROM stu WHERE score IN(10,80,90,)
查询分数在80到90的人的所有信息
SELECT * FROM stu WHERE score BETWEEN 80 AND 90;
模糊查询
关键字 : LIKE
通配符 :
_ : 任意一个字符
% : 任意 0 ~ N 个字符
exp:
查询名字中有两个字符组成的学生信息
SELECT * FROM stu WHERE name LIKE’___';
查询名字中有三个字符组成,最后一个是'g'的学生信息
SELECT * FROM stu WHERE name LIKE '%g';
查询名字以'g'开头的所有学生的信息
SELECT * FROM stu WHERE name LIKE 'g%';
查询名字中第三位是'o'的所有学生的信息
SELECT * FROM stu WHERE name LIKE '__o%';
字段控制
去除重复记录
SELECT * FROM stu;
SELECT DISTINCT score FROM stu;
数字类型的列可以加减乘除运算
除了输出学生的所有信息,还要输出成绩的1.5倍
SELECT * ,score * 1.5 FROM stu;
字符串拼接
在价格前面拼接美元符
SELECT *, CONCAT('$',price) FROM stu;
判断是否为空
IFNULL
查询学生表格,如果名字为空,返回身份证号,否则返回名字
SELECT IFNULL(name,IDCard) FROM
别名
给列添加别名
关键字 : AS (查询出的结果显示的名字)
SELECT name ,name + score AS 综合 FROM stU;
排序
关键字: ORDER BY
升序(默认)ASC
降序(DESC)
查询所有学生的信息并按照年龄进行升序排序,如果年龄一样,按成绩降序排序
SELECT * FROM stu ORDER BY score ,birthday DESC ;
聚合函数
用于纵向运算
count( ) : 统计指定列不为 null 的记录行数
max( ) : 计算指定列的最大值
sum( ) : 数值求和,如果是字符串,结果是0;
min( ) : 计算指定列的最小值
avg( ) : 计算指定列平均值,如果不是数值类型,计算结果是0
exp:
查询表中记录数并起别名 cnt
SELECT count(*) cnt FROM stu;
查询表中有成绩的学生的记录数
SELECT count(score) sc FROM stu;
请查询出表中分数分数大于70分的学生的人数
SELECT count(score) scm FROM stu WHERE score >= 70;
请查出表中分数和年龄相加大于80分的学生的人数;
SELECT count(score) scm FROM stu WHERE IFNULL(score,0) + IFNULL(age,0) >= 80;
统计所有学生的成绩平均值
SELECT count(*)综合,avg(score) 平均值 FROM stu;
查出最高分和最低分
SELECT max(score) 最大值 FROM stu;
SELECT min(score) 最小值 FROM stu;
查询出年龄和以及成绩和;
SELECT sum(score) ss,sum(age) sa FROM stu;
查询年龄+成绩的和
SELECT sum(IFNULL(age,0) + IFNULL(score,0)) sas FROM stu;
分组
关键字 : GROUP BY
查询每个年龄的成绩和
SELECT age, sum(score) FROM stu GROUP BY age;
查询每个年龄值的学生个数
SELECT age, count(*) FROM stu GROUP BY age;
查询每个年龄值和每个年龄分数>56的人数
SELECT age, count(*) FROM stu WHERE score > 56 GROUP BY age;
查询年龄值和每个年龄分数和>100的分数值
SELECT age,sum(score) FROM stu GROUP BY age HAVING sum(score) > 80;
*WHERE : 分组之前的判断,后面不允许出现聚合函数
HAVING : 分组之后的判断, HAVING 可以出现聚合函数*
优先级顺序: SELECT –> FROM –> WHERE –> GROUP BY –> ORDER BY