数据库总结(三)

关系数据库标准语言SQL

3.1  数据定义 
SQL的数据定义功能: 
模式定义
表定义
视图和索引的定义 

3.2数据查询
语句格式
       SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] …
       FROM <表名或视图名>[,<表名或视图名> ]…|(SELECT 语句)      
                   [AS]<别名>
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ];
SELECT子句:指定要显示的属性列
FROM子句:指定查询对象(基本表或视图)
WHERE子句:指定查询条件
GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用聚集函数。
HAVING短语:只有满足指定条件的组才予以输出
ORDER BY子句:对查询结果表按指定列值的升序或降序排序 

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


多表连接
多表连接:两个以上的表进行连接

[例3.54]查询每个学生的学号、姓名、选修的课程名及成绩
  SELECT Student.Sno, Sname, Cname, Grade
   FROM    Student, SC, Course    /*多表连接*/
   WHERE Student.Sno = SC.Sno 
                  AND SC.Cno = Course.Cno;

嵌套查询概述
一个SELECT-FROM-WHERE语句称为一个查询块
将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询

     SELECT Sname                               /*外层查询/父查询*/
     FROM Student
     WHERE Sno IN
                        ( SELECT Sno        /*内层查询/子查询*/
                          FROM SC
                          WHERE Cno= ' 2 ');

带有IN谓词的子查询
将第一步查询嵌入到第二步查询的条件中
    SELECT Sno, Sname, Sdept
        FROM Student
       WHERE Sdept  IN
                  (SELECT Sdept
                   FROM Student
                   WHERE Sname= ' 刘晨 ');
    此查询为不相关子查询。


带有比较运算符的子查询
可能的执行过程(续) 
执行内层查询,得到值88(近似值),用该值代替内层查询,得到外层查询:
           SELECT Sno,Cno
           FROM     SC x
          WHERE  Grade >=88


带有ANY(SOME)或ALL谓词的子查询 
使用ANY或ALL谓词时必须同时使用比较运算
语义为:
      > ANY    大于子查询结果中的某个值       
> ALL    大于子查询结果中的所有值
< ANY    小于子查询结果中的某个值    
< ALL    小于子查询结果中的所有值
>= ANY    大于等于子查询结果中的某个值    
>= ALL    大于等于子查询结果中的所有值
使用ANY或ALL谓词时必须同时使用比较运算
语义为(续)
<= ANY    小于等于子查询结果中的某个值    
<= ALL    小于等于子查询结果中的所有值
= ANY    等于子查询结果中的某个值        
=ALL    等于子查询结果中的所有值(通常没有实际意义)
!=(或<>)ANY    不等于子查询结果中的某个值
!=(或<>)ALL    不

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值