数据库原理简概——初学者(一)

结构化查询语言SQL

单表查询
首先,单表查询包括:谓词查询、聚集函数查询、分组查询。这些查询是SQL查询语句中最为基础的,但也是根本之源,需要大家完全精通。

谓词查询

SELECT * 
FROM XXX 
WHERE XXX;

注意:谓词查询后不跟聚集函数即WHERE后不跟AVG/MAX/MIN/COUNT/SUM等聚集函数

SQL语句的运行顺序是FROM->WHERE/GROUP BY XX HAVING->SELECT

聚集函数查询
AVG 平均;MAX 最大值;MIN 最小值;COUNT 总量;SUM 总数

其中COUNT和SUM是有区别的,例如一所学校里有学生,学生有各个学科的成绩,通过COUNT我们可以得到学生的总量而通过SUM我们可以得到学生各个学科的成绩总分

SELECT SNO,SNAME,AVG(GRADE) 
FROM SC;

这条查询语句当中我运用了AVG聚集函数,目的在于从SC表中查询平均分数

分组函数查询

SELECT SNO,SNAME
FROM SC 
GROUP BY SNO 
HAVING AVG(GRADE)>90;

HAVING和WHERE的区别在于HAVING是在分组结束后对记录进行筛选,WHERE是在分组前对记录进行筛选。HAVING后是可以跟聚集函数的(如上例)而WHERE不行。

连接查询
连接查询包括:多表查询、自身连接查询、外连接查询,此类查询正如字面意思,多个数据表连接查询结果

多表查询

SELECT STU.sno,SC.sno
FROM STU,SC
WHERE STU.sno=SC.sno;

查询的属性前要附加表名

自身连接查询

自身查询是为了提取同表相同属性数据值时不报错

SELECT SNAME 
FROM SC AS X,SC AS Y 
WHERE X.SNO=Y.SNO

这里我将SC表分别取别名为X,Y,那么SQL语句会从X中提取sno与Y中提取sno

外连接
外连接包括:左连接、右连接。外连接是以指定表为主体,将主体表中缺少连接条件的的元组一并输出。
左连接:数据表STU为主体表,就算SC表中cno为空也能查询到sno
右连接:数据表SC为主题表,就算STU表中sdept为空也能查询到sno

SELECT STU.sno,sdept,cno
FROM STU
LEFT OUT JOIN SC ON (Student.sno=SC.sno);

嵌套查询
嵌套查询分为不相关子查询和相关子查询、带运算符的子查询
不相关子查询:子类和父类无关

SELECT SNO,SNAME
FROM S
WHERE SNO IN
(SELECT SNO
FROM SC
WHERE GRADE=95);

相关子查询:子类与父类相关

SELECT SNO,SNAME
FROM S
WHERE EXISTS
(SELECT * FROM SC 
WHERE S.SNO=SC.SNO AND GRADE = 99);

带运算符的子查询:ANY/ALL

AGE>ALL(13,15,17)
表示年龄大于集合中所有数的即大于17
AGE>ANY(13,15,17)
表示年龄大于集合中任意数的即大于13

SELECT SNO,SNAME
FROM S
WHERE SNO=ALL
(SELECT SNO
FROM SC
WHERE GRADE=95);

SELECT SNO,SNAME
FROM S
WHERE SNO=ANY
(SELECT SNO
FROM SC
WHERE GRADE=95);

总结

单表查询是SQL查询语句的根本,而连接查询与嵌套查询是它的派生,我们都需要去熟悉掌握他们,并在接下来的实践中灵活运用它们。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值