老师讲的一些知识

GROUP BY

在这里插入图片描述

查询选修了3门以上课程的学生学号(一定要在HAVING里面)

WHERE里面不能出现函数,where是对列的一些限制条件,所以在这个题目查询选修了3门以上课程的学生学号。

在这里插入图片描述
在这里插入图片描述

求各个课程号及对应的选课人数

在这里插入图片描述

查询平均成绩大于等于90分的学生学号和平均成绩

[例3.48 ]查询平均成绩大于等于90分的学生学号和平均成绩
下面的语句是不对的:
SELECT Sno, AVG(Grade)
FROM SC
WHERE AVG(Grade)>=90
GROUP BY Sno;

因为WHERE子句中是不能用聚集函数作为条件表达式
正确的查询语句应该是:
SELECT Sno, AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade)>=90;

HAVING短语与WHERE子句的区别

HAVING短语与WHERE子句的区别:
作用对象不同
WHERE子句作用于基表或视图,从中选择满足条件的元组
HAVING短语作用于组,从中选择满足条件的组。

连接查询

连接查询:同时涉及两个以上的表的查询
对于来自n张表的连接查询,连接条件要写n-1个
连接条件或连接谓词:用来连接两个表的条件
一般格式:
[<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2>
[<表名1>.]<列名1> BETWEEN [<表名2>.]<列名2> AND [<表名2>.]<列名3>
连接字段:连接谓词中的列名称
连接条件中的各连接字段类型必须是可比的,但名字不必相同

等值与非等值的连接条件

查询每个学生及其选修课程的情况

在这里插入图片描述
等值连接出现了两次
在这里插入图片描述

自然连接(自身连接)

自然连接相同的列只允许出现一次,不允许出现两次

选择表中的若干个列

查询指定列

查询全体学生的学号与姓名
	SELECT Sno,Sname
	FROM Student; 
查询全体学生的姓名、学号、所在系
	SELECT Sname,Sno,Sdept
	FROM Student;

查询全部列

查询全体学生的详细记录

SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Student;

SELECT *
FROM Student;

查询经过计算的值

SELECT子句的<目标列表达式>不仅可以为表中的属性列,也可以是表达式

查全体学生的姓名及其出生年份。

在这里插入图片描述

查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示系名。

在这里插入图片描述

消除取值重复的行

如果没有指定DISTINCT关键词,则缺省为ALL

查询选修了课程的学生学号。

在这里插入图片描述

查询考试成绩有不及格的学生的学号。

在这里插入图片描述

字符匹配

<匹配串>可以是一个完整的字符串,也可以含有通配符%和 _

% (百分号) 代表任意长度(长度可以为0)的字符串
例如a%b表示以a开头,以b结尾的任意长度的字符串
_ (下横线) 代表任意单个字符。
例如a_b表示以a开头,以b结尾的长度为3的任意字符串

匹配串为固定字符串

查询学号为201215121的学生的详细情况
  SELECT *    
 FROM  Student  
 WHERE  Sno LIKE ‘201215121';

等价于:
SELECT *
FROM Student
WHERE Sno = ’ 201215121 ';

匹配串为含通配符的字符串

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

向上Claire

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

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

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

打赏作者

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

抵扣说明:

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

余额充值