数据库知识点(待补充)

一、数据库三级模式结构以及两级映像

        三种模式:外模式、模式、内模式

        数据库在这三种模式之间提供了两级别映像,来保证数据库系统的数据能够具有较高的逻辑独立性和物理独立性

        二级映像:外模式/模式映像、模式/内模式映像。

二、where语句和having语句

        where子句和having短语的区别在于作用对象不同,where子句作用于基本表或视图,从中选择满足条件的元组,having语句作用于组(group by 分出来的组),从中选择满足条件的组。

注:1、where子句中不能用聚集函数作为条件表达式。

        2、where子句一定在group by语句之前,而having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。

        3、这几条关键字 是有先后顺序的.

        where.....group by....having.....order by   (这里的group by 与 having 的位置可以调换,但是having放在后面效率高)!

注:HAVING和WHERE和GROUP BY的易混淆点

(16条消息) group by ,having, 聚合函数的使用_christine_Ruan的博客-CSDN博客https://blog.csdn.net/christine_ruan/article/details/7569782

三、order by子句,结果表要按照<列名1>的值进行升序或降序排序

        一般格式为:order by<列名1> [ASC|SESC]

四、查询分类

        1、单表查询

        (1)选择表的若干列

                ①:查询指定列

                ②:查询全部列

                ③:查询经过计算的值

        ​​​​        

        (2)选择表中的若干组

                ①:消除取值重复的行【注:DISTINCT】

                ②:查询满足条件的元组(注意区分元组和组)

                        可以通过where子句实现

                where可以比较大小(各类符号)、确定范围(between and 或not between and)【注:between a and b取的是 a<=x<=b】、确定集合(in)、字符匹配(like)、涉及空值的查询(is NULL)【注:is不能用=代替】、多重条件查询(and或or)

        (3)order by子句【注:order by是用来写在where之后】

        (4)聚集函数

                COUNT[ DISTINCT | ALL ] <列名>

                SUM[ DISTINCT | ALL ] <列名>

                AVG[ DISTINCT | ALL ] <列名>

                MAX[ DISTINCT | ALL ] <列名>

                MIN[ DISTINCT | ALL ] <列名>

        (5)GROUP BY子句

                group by子句将查询结果按照某一列或多列分组,值相等的为一组 

        2、连接查询

        (1)等值和非等值连接:连接两个表的条件称为连接谓词或连接条件

 

【注:加表名前缀是为了避免混淆】

        (2) 自身连接:要分别起别名

         (3)外连接:分为左外连接和右外连接,左外连接就是将等号左边的表作为主体,右表中有不存在相应元组的部分填NULL

        (4)多表连接

        3、嵌套查询

        一个select-from-where语句称为一个查询块,将一个查询块嵌套进另一个查询块的where子句或having短语的条件中称为嵌套查询

        (1)带IN谓词的子查询

 【注:子查询的查询条件不依赖父查询,称为不相关子查询

        (2)带有比较算符的子查询

【注:这是一个相关子查询】

        (3)带有ANY(SOME)和ALL谓词的相关子查询

        一般用聚集函数实现子查询比直接用ANY或ALL查询效率要高

         (4)带有EXIST谓词的子查询

                带有EXIST的谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”

        使用存在量词EXISTS若内层查询查询为非空,则外层where子句返回真值,否则返回假值。

 由EXISTS引出的子查询,其目标列表达式通常都用*,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义

        4、集合查询

        select语句的查询结果是元组的集合,所以多个select语句的结果可进行集合操作。集合操作主要包括并操作(UNION)、交操作(INTERSECT)、差操作(EXCEPT)【注:参加集合操作的个查询结果的列数必须相同,对应项的数据类型也必须相同

        5、基于派生表的查询

        select语句不仅能出现在where语句中,还能出现在from语句中,这时子查询生成临时的派生表称为主查询的查询对象

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值