数据库高级检索技术

本文深入讲解了SQL查询的基础知识及高级技巧,包括聚合函数、分组数据、联合查询、连接查询以及子查询技术等内容,帮助读者掌握高效的数据处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 聚合函数
    聚合即是对一组数据的值进行聚合运算得到聚合值,常用的聚合函数有HAVING()、compute()

    select name,age from studio where id = 3
    compute avg(age)

    使用compute的语句生成的表不存储于数据库,是将生成的结果附加到结果集的最后面。
  2. 分组数据
    主要是利用GROUP BY 将表中数据按指定的某列或者几列进行分组,常见聚合函数有SUM()、MIN()、MAX()、AVG()、COUNT()
    select cl_id as '班级编号',ho_id as '宿舍编号' count(*) as '人数' from studio where ho_id = 1 group by cl_id,ho_id

如果要进一步对分组结果进行筛选,可以使用HAVING子句和GROUP BY 子句搭配使用。
3. 联合查询
联合查询就是将多条SQL语句产生的结果集合在一起。一般聚合函数使用的是UNION,作用是扫描多个输出结果集,根据条件判断是否删除重复行。使用UNION需要注意的是多个结果集中对应的列数量必须是形同的。

    select st_name,st_sex,'学生' as '角色' from studio
     union
    select te_name,te_sex,'教师' as '角色' from teacher order by '角色'
  1. 连接查询
    主要有三种连接类型:内连接,外连接和交叉连接,自连接。
    (1)内连接是使用比较运算符进行表间某列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。主要分为等值连接,自然连接和不等连接。
    等值连接即在连接条件中使用(=)运算符比较被连接列的列值
select * from studio inner join class on studio.cl_id = class.cl_id

自然连接:与等值连接唯一不同的是有选择的选择列

select st_id as '编号',st_name as '学生姓名' ,cl_class as '班级名称' from studio inner join class on studio.cl_id = class.cl_id order by st_id

不等连接:连接运算符除了=以外的连接
常见连接方式

select st_id as '编号',st_name as '学生姓名' ,cl_class as '班级名称',ho_coding as '编号' from studio inner join class on studio.cl_id = class.cl_id inner join hostel on studio.ho_id = hostel.ho_id

(2)外连接
内连接与外连接的区别:采用内连接是返回查询结果集合中的仅是符合查询条件和连接条件的行,而使用外连接还包括左表,右表,或两个连接表中的所有数据行。
外连接分为(LEFT JOIN),(RIGHT JOIN) ,(FULL JOIN)
左外连接时,以左边表显示为主,显示主表中所有的数据行,若右边从表中没有与之匹配的数据,则显示NULL。

   select st.st_id as '学生编号',st.st_name as '学生姓名',
          cl.cl_id as '班级编号',cl_class as '班级名称'
   from studio as st left join class as cl on st.cl_id = cl.cl_id        

右外连接:与左表相反,是以右边为主表,左表为从表
完全连接时,部分主次,两个表都会完全显示。
(3)交叉连接
交叉连接返回连接表中所有数据行的笛卡尔儿积。
(4)自连接
选择关键字的两边都是同一个表。
5. 子查询技术
子查询的关键就是SQL语句中再嵌套另外一条Sql语句。例如使用IN和NOT IN关键词判断where条件后面列的值是否存在于子查询得到的值,ANY,ALL等比较运算符,ANY是指匹配子查询得到的结果集总的任意一条数据。ALL是指匹配子查询得到的结果集中全部的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值