数据库高级检索技术

  • Post author:
  • Post category:其他

  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是指匹配子查询得到的结果集中全部的数据。


版权声明:本文为RheaWang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。