8.2数据操作

用到的四个例子图表

 Select 基本结构

语句格式:

SELECT [ALL | DISTINCT]<目标列表达式>[,<目标列表达式>]…#(select相当于投影运算)
FROM <表名或视图名>[,<表名或视图名>]
[WHERE <条件表达式>]                                                 #(where相当于选择运算)
[GROUP BY <列名1>                                                    #(进行分组)

[HAVING <条件表达式>]]                                               #(选择符合条件的行)
[ORDER BY <列名2>[ASC | DESC]…]       #(排序,ASC升序,DESC是降序,默认升序排列)

简单查询

最基本的查询语句:查询S表中性别为男的学生的学号和姓名
Select Sno,Sname
from S
where sex='男'; //等价于:π Sno,Sname (σ sex='男' (S))

更名操作:使用AS可以给列和表重命名。如下例
Select 学生表.sno as 学号,Sname as 姓名,Grade 成绩         //注:AS是可以省略的
from S 学生表,SC 课程表                                                    //表也可以重命名
where 学生表.Sno=课程表.Sno and 学生表.SD='计算机';

                                         //表重命名后,引用时一定要用新名称,这里不能再用S和SC

 连接查询

如果涉及两个以上的表,则称为连接查询。

 

(1)检索选修了课程号为'C1'的学生号和学生姓名:
Select S.Sno,Sname
from S,SC
where S.Sno=SC.Sno and SC.Cno='C1';
//π S.Sno,Sname (σ S.Sno=SC.Sno∧SC.Cno='C1' (S×SC))

(2)检索选修课程名为“操作系统”的学生号和学生姓名:
Select S.Sno,Sname
from S,SC,C
where S.Sno=SC.Sno and SC.Cno=C.Cno and C.Cname='操作系统';

(3)检索至少选修了课程号为“C1”和“C3”的学生号:(同一张表的自连接)
Select Sno
from SC SC_X,SC SC_Y
where SC_X.Sno=SC_Y.Sno and SC_X.Cno='C1' and SC_Y.Cno='C3';

子查询

子查询也称嵌套查询。嵌套查询是指一个SELECT-FROM-WHERE查询块中可以嵌入另一个查询块之中。在SQL中允许多重嵌套。

• IN(在……集合中) | NOT IN(不在……集合中)


例:(1)检索选修了课程号为'C1'的学生号和学生姓名
Select Sno,Sname
from S
where Sno IN (Select Sno
                         from SC
                         Where Cno='C1');
2)检索选修课程名为“操作系统”的学生号和学生姓名:
Select Sno,Sname
from S
where Sno IN (Select Sno
                        from SC
                        Where Cno IN (Select Cno
                                                From C
                                                Where Cname='操作系统'));

 

EXISTS(存在) | NOT EXISTS(不存在)
例:查询没有被任何同学选修的课程号和课程名
• Select Cno,Cname from C
                   where NOT EXISTS (select * from SC where SC.Cno=C.Cno)

聚集函数

• 聚集函数是一个值的集合为输入,返回单个值的函数。SQL提供了5个预定义集函数:
平均值AVG()、最小值MIN()、最大值MAX()、求和SUM()、计数COUNT()。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值