单表查询理论实践(二)
ourse(Cno)
/*表级完整性约束条件,Cno是外码,被参照表示Course*/
);
----------------------------
go
--**************************
--*** 3.插入数据 ***
--**************************
----------------------------
---1)插入Student数据
----------------------------
insert into Student values('200215121','李勇','男',20,'CS') /*向表Student中插入一个元组*/
insert into Student values('200215122','刘晨','女',19,'IS') /*向表Student中插入一个元组*/
insert into Student values('200215123','王敏','女',18,'MA') /*向表Student中插入一个元组*/
insert into Student values('200215125','张立','男',19,'IS') /*向表Student中插入一个元组*/
----------------------------
----------------------------
---2)插入Course数据
----------------------------
--注意顺序(先行课问题) 注意添加一个空元素用 null
insert into Course values('2','数学',null,2)/*向表Course中插入一个元组*/
insert into Course values('6','数据处理',null,2)/*向表Course中插入一个元组*/
insert into Course values('4','操作
系统','6',3)/*向表Course中插入一个元组*/
insert into Course values('7','PASCAL语言','6',4)/*向表Course中插入一个元组*/
insert into Course values('5','数据结构','7',4)/*向表Course中插入一个元组*/
insert into Course values('1','数据库','5',4)/*向表Course中插入一个元组*/
insert into Course values('3','信息系统','1',4)/*向表Course中插入一个元组*/
----------------------------
----------------------------
---3)插入SC数据
----------------------------
insert into SC values('200215121','1',92)/*向表SC中插入一个元组*/
insert into SC values('200215121','2',85)/*向表SC中插入一个元组*/
insert into SC values('200215121','3',88)/*向表SC中插入一个元组*/
insert into SC values('200215122','2',90)/*向表SC中插入一个元组*/
insert into SC values('200215122','3',80)/*向表SC中插入一个元组*/
----------------------------
--*** 4.查询数据 ***
--**************************
----------------------------
select * from student
select * from course
select * from sc
select student.sno as 学号,sname as 姓名,cname as 课程名,grade as 成绩
from student,course,sc
where student.sno=sc.sno and course.cno=sc.cno
order by 课程名,成绩 desc
----------------------------
2. 单表列的查询
[sql]
--查询列
select *
from student
select sno,sname,ssex,sdept,sage,ssex
from Student
--可以用重新命名 格式(列 as 新列名),as可以省略
select sno as 学号,Sname as 姓名, Ssex 性别
from Student
--目标列可以出现表达式
--查询所有学生的姓名和出生年(2013-sage)
select sname,2013-sage as 出生年
from Student
--查询每个课程的学分
select cname,ccredit*0.8
from course
--目标列可以出现函数
--查询有个学生
select COUNT(sno)
from student
--查询有几个学生选修了课程(distinct 重复的只计算一次,去掉重复的)
select COUNT(distinct sno)
from sc
--查询有几门课程被选修
select COUNT(distinct cno)
from SC
3. 单表行的选择
[sql]
--对行的查询
--通过where条件子句,多满足条件的元组进行显示
--查询所有男生学生信息
select *
from Student
where Ssex = '男'
--查询18岁以上的学生信息
select *
from Student
where Sage>18
--查询18岁到20岁之间的学生信息
select *
from Student
where Sage>=18 and Sage<=20
--查询成绩在80分与90分之间的选课记录
--between x and y 包含端点
--x与y前者要小于后者,等价于 g