小白学数据库(四) 数据查询

数据查询

基本结构:

SELECT 目标列名
  FROM 表名
  WHERE <检索条件>
  GROUP BY <分组依据的列名>
  HAVING <组提取条件>
  ORDER BY <排序依据列>

查询经过计算的列并加入常数列:

SELECT sname, '出生年份:'2020-age    查询姓名及其出生年份,并加入常数列
  FROM student

在这里插入图片描述
改变列标题:

SELECT sname 姓名, 'Year of Birth' 出生年份,2020-age  
  FROM student

在这里插入图片描述
去掉重复行:

SELECT DISTINCT sid
FROM sc

在这里插入图片描述
查询满足条件的元组:
在这里插入图片描述
字符匹配:

LIKE 运算符:
  格式:
  列名 [NOT] LIKE <匹配串>
  匹配串可包括以下四种通配符:
  '_' :匹配任意一个字符
  '%' :匹配0或多个字符
  '[]' :匹配[]中的任意一个字符;对于连续字母的匹配,可简写
  '[^]':不匹配[]中的任意一个字符

查询结果排序:

ORDER BY 列名 ASC(升序)|DESC(降序)
查询学号,成绩,按成绩降序排列:
SELECT sid,grade
FROM sc
WHERE cid=8108001 ORDER BY grade DESC

在这里插入图片描述
SQL提供的计算函数:

COUNT(*) :统计表中元组个数;
COUNT ([DISTINCT] 列名) :统计本列列值个数
SUM([DISTINCT] 列名) :计算列值总和
AVG([DISTINCT] 列名) :计算列值平均数
MAX([DISTINCT] 列名) :求列值最大值
MIN([DISTINCT] 列名) :求列值最小值

对查询结果进行分组:

一般形式:
GROUP BY 分组条件
HAVING 组过滤条件

查询每名学生的选课门数和平均成绩

SELECT sid as 学号,
COUNT(*) as 选课门数,
AVG(grade) as 平均成绩
FROM sc GROUP BY sid

在这里插入图片描述
查询选修三门以上课程的学生的学号

SELECT sid 
FROM sc 
GROUP BY sid
HAVING COUNT(*) > 3

在这里插入图片描述
多表连接查询
内连接
查询计算机系学生的修课情况,要求列出学生姓名、课程名和成绩

SELECT student.sid, cid, grade
FROM sc, student
WHERE sc.sid=student.sid
AND student.department='计算机'

在这里插入图片描述
嵌套查询:
查询选修了8108010的课程且成绩高于此课程平均成绩的学生的学号、成绩

SELECT sid, grade
FROM sc
WHERE cid=8108010
AND grade> (
SELECT AVG(grade) FROM sc
WHERE cid=8108010)

在这里插入图片描述
存在性测试:一般使用EXISTS谓词
查询选修了8108010的学生姓名

SELECT sname FROM student
WHERE EXISTS
(SELECT * FROM sc
WHERE sc.sid=student.sid
AND cid=8108010)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值