进阶SQL语句整理(mysql5.7下通过运行)

-- 注释可以用#、-- 、/**/
-- 选择要操作的数据库
USE db1;
-- 主键PRIMARY KEY、唯一约束UNIQUE、非空约束NOT NULL、自增AUTO_INCREMENT、备注
-- CONSTRAINT student_pk可以不写,它表示给约束起了一个名,方便日后删除约束
CREATE TABLE student (
  snum INT AUTO_INCREMENT COMMENT '学号',
  sname VARCHAR (20) NOT NULL COMMENT '姓名',
  sage INT NOT NULL COMMENT '年龄',
  ssex CHAR(1) UNIQUE NOT NULL COMMENT '性别',
  sdate DATE COMMENT '生日',
  CONSTRAINT student_pk PRIMARY KEY(snum,sname),UNIQUE(sname)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
-- 查看表
SELECT * FROM student;
-- 分页查询
-- select 列 from 表 limit 开始的索引,每页显示的信息条数
-- select 列 from 表 limit (pageNow - 1) * pageSize,pageSize
SELECT * FROM student LIMIT 0,3;
-- 聚合函数
-- 统计信息条数(带别名的,可以省略)
SELECT COUNT(sage) FROM student;
-- 统计该列最大值
SELECT MAX(sage) AS 年龄最大 FROM student;
-- 统计该列最小值
SELECT MIN(sage) AS 年龄最小 FROM student;
-- 统计该列总和
SELECT SUM(sage) AS 年龄总和 FROM student;
-- 统计该列平均值
SELECT AVG(sage) AS 年龄平均值 FROM student;
-- 去重复DISTINCT
SELECT DISTINCT sname FROM student;
-- 分组查询,带条件WHERE带条件HAVING带排序
SELECT sage,COUNT(*) FROM student WHERE snum>3 GROUP BY sname HAVING COUNT(*)>=2 ORDER BY sage;
SELECT sage,COUNT(*) AS 别名 FROM student WHERE snum>3 GROUP BY sname HAVING 别名>=2 ORDER BY sage;
-- GROUP_CONCAT()
SELECT sdate,GROUP_CONCAT(sname) AS 姓名集 FROM student GROUP BY sdate;
-- 子查询(嵌套查询)
-- 第一步:求最小年龄
SELECT MIN(sage) FROM student;
-- 第二步:根据最小年龄查询(假如上面一步查的结果是20岁)
SELECT * FROM student WHERE sage=20;
-- 第三步:把前两步组合到一起
SELECT * FROM student WHERE sage=(SELECT MIN(sage) FROM student);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zwarwolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值