MySQL高级语句

使用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;

可以给表起别名 注意别名不能和数据库其他表名重复 列的别名在结果中可以显示 但表的别名在结果中没有显示只能用于查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值