使用select语句 order by对表进行排序
ASC:升序排列 默认 可以不加
DESC:降序排列
SELECT id,name FROM info ORDER BY id;
SELECT id,name,score FROM info ORDER BY score;
ORDER BY结合where条件过滤
SELECT name,score FROM info WHERE address='南京西路' ORDER BY score;
查id 姓名 成绩 根据性别女 按照id降序排列
SELECT id,name,score FROM info WHERE sex='女' ORDER BY score DESC;
SELECT id,name,score FROM info WHERE sex='男' ORDER BY score DESC, id DESC;
只有第一个参数出现相同值时 第二个参数才会按照要求排序
区间判断查询和去重查询
AND 且
OR 或
SELECT * FROM info WHERE score > 70 AND score <= 90;
SELECT * FROM info WHERE score > 80 OR score < 90;
嵌套条件
SELECT * FROM info WHERE score > 70 AND (score > 75 AND score < 90);
测试 性别男 筛选成绩80-90之间
SELECT * FROM info WHERE sex='男' AND (score > 70 AND score < 90);
去重查询
SELECT DISTINCT address FROM info;
SELECT DISTINCT sex FROM info;
SELECT DISTINCT * FROM info WHERE sex='男' AND score=90;
对结果进行分组查询 GROUP BY 一般结合聚合函数使用
COUNT() 统计多少行
sun() 列的值相加求和
avg() 列的值求平均数
max() 列的最大值
min() 列的最小值
分组时可以按照一个字段也可以按照多个字段对结果进行分组处理
SELECT COUNT(name),sex FROM info GROUP BY sex;
SELECT COUNT(name),sex FROM info WHERE score>=80 GROUP BY sex;
求和
SELECT SUM(score),address FROM info GROUP BY address;
平均值
SELECT AVG(score),sex FROM info GROUP BY sex;
求男女成绩最低的人
SELECT MIN(score),name,sex FROM info GROUP BY sex;
使用 GROUP BY 实现条件过滤 GROUP BY 不能使用where 要用 HAVING 语句
SELECT AVG(score),address FROM info GROUP BY address HAVING AVG(score) > 60;
SELECT AVG(score),address,id FROM info GROUP BY address HAVING AVG(score) > 50 ORDER BY id DESC;
SELECT COUNT(name),score,address,name FROM info GROUP BY address HAVING score >= 70 ORDER BY COUNT(name);
SELECT MAX(score),sex FROM info GROUP BY sex HAVING MAX(score) >= 75;
使用聚合函数必须要加group by 分组条件要选多个有重复值的列 过滤条件要用having语句
LIMIT 限制输出的结果记录 查看表中的指定行
SELECT * FROM info LIMIT 3; 只看前三行
SELECT * FROM info LIMIT 1,4; 查看二到五行
SELECT * FROM info ORDER BY id DESC LIMIT 3; 通过id倒序查找后三位
通配符 主要用于替换字符串中部分字符 通过部分字符匹配将相关的结果查询出来 和like一起使用 WHERE语句一起完成查询
% 表示0个 1个 或者多个
_ 表示单个字符
SELECT * FROM info WHERE address LIKE '山%'; 以什么为开头
SELECT * FROM info WHERE address LIKE '%路'; 以什么为结尾
SELECT * FROM info WHERE address LIKE '%京%'; 内容中包含
SELECT * FROM info WHERE name LIKE '张_'; 表示单个字符 和上面用法一样
SELECT * FROM info WHERE address LIKE '山%_____'; 通配符可以结合一起使用
设置别名 alias >> AS 在MySQL查询时 表名或字段名太长 可以使用别名替代
SELECT name as 姓名,score as 成绩 FROM info; AS可以不加
CREATE TABLE test AS SELECT * FROM info; 创建了一个表 数据结构复制过来 约束不会被复制
CREATE TABLE test1 AS SELECT * FROM info WHERE score >= 60;
可以给表起别名 注意别名不能和数据库其他表名重复 列的别名在结果中可以显示 但表的别名在结果中没有显示只能用于查询