1、 利用SQL语言创建查询
a) 查询课程表的所有字段和记录.
SELECT * from 课程表
b) 查询学生表的学号,姓名和性别。
SELECT 学号,姓名,性别 from 学生表
c) 查询有学生选修的课程名称。select distinct from
SELECT 课程名 from 课程表 where 课程号 in (select 课程号 from 成绩表)
d) 查询学生的姓名和年龄(精确到月)。
SELECT 姓名,(year(now())-year(出生日期))*12 from 学生表
e) 查询编号包含”02”的系开的课程名称。
SELECT 课程名 from 课程表 where 开课单位 in (select 院系编号 from 院系表 where 院系编号="02")
select 课程号 from 课程表,院系表 where 课程表.开课单位=院系表.院系编号 and 院系编号="02"
f) 查询学时数大于48或者小于27的课程名称。
select 课程名 from 课程表 where 学时数>48 or 学时数<27
g) 查询籍贯为北京、山西和上海的学生名称。
select 姓名 from 学生表 where 籍贯=”北京” or 籍贯=”山西” or 籍贯=”上海”
h) 查询课程名称包含“原理”的课程名称。
select 课程名 from 课程表 where 课程名 like "*原理*"
i) 查询信息系开的课程的名称、选修的学生姓名,成绩
Select课程名,姓名,成绩 from 课程表,学生表,成绩表,院系表 where 课程表.课程号=成绩表.课程号 and 学生表.学号=成绩表.学号 and 课程表.开课单位=院系表.院系编号and 学生表.所属院系=院系表.院系编号 and 院系名称=”信息系”
j) 查询成绩在90分以上,开课单位为”信息系”,”法律系”和”会计系”的学生籍贯,并按照学生学号排序,将前两条记录存入到新表”result”.
Select 籍贯 from 学生表,成绩表,课程表 where 学生表.学号=成绩表.学号 and 课程表.课程号=成绩表.课程号 and 成绩>90 and (开课单位="04" or 开课单位="01" or 开课单位="05") order by 学生表.学号
连接查询(1、利用inner(left/right) join来完成SQL语句查询)
k) 查询信息系开的课程名称、选修这些课程的学生姓名,成绩。
select 课程名,姓名,成绩 from (院系表 inner join (课程表 inner join (成绩表 inner join 学生表 on 学生表.学号=成绩表.学号) on 课程表.课程号=成绩表.课程号) on 院系表.院系编号=课程表.开课单位) where 院系名称="信息系"                                                                         
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
l) 查询有开课的院系名称和课程名称.
Select distinct院系名称,课程名 from (院系表 inner join (课程表 inner join 成绩表 on 课程表.课程号=成绩表.课程号) on 院系表.院系编号=课程表.开课单位)
m) 查询所有院系名称和所开课的课程名称.
Select 院系名称,课程名 from (课程表 right join 院系表 on 课程表.开课单位=院系表.院系编号)
2、 联合查询(利用union完成SQL语句查询)
a) 查询年龄低于25岁的所有教师和学生姓名.
Select 姓名 from 学生表 where (year(now())-year(出生日期))<25 union select 姓名 from 教师表 where 年龄<25
b) 查询学生的平均成绩,没有成绩的用0表示.
Select avg(成绩) from 成绩表 group by 学号 union
子查询(利用子查询的SQL语句完成查询)
c) 查询出生日期小于年龄划分表中所有出生日期的学生姓名.
Select 姓名 from 学生表 where(year(now())-year(出生日期)) in (select min(year(now())-year(出生日期)) from 学生表)
d) 查询没有选修课程的学生的学号和姓名。
Select 学号,姓名 from 学生表 where 学号 not in (select 学号 from 成绩表)
3、 聚集查询(利用group by 和 having 完成SQL语句查询)
a) 查询选修课程的学生姓名和平均成绩,按照姓名分组.
Select 姓名,avg(成绩) from 学生表,成绩表 where 学生表.学号=成绩表.学号 group by 姓名
b) 查询按照院系名称和性别进行分组后学生人数超过1人的院系名称、性别、和对应的人数。
Select 院系名称,性别,count(*) from 院系表,学生表 where 学生表.所属院系=院系表.院系编号 group by 院系名称,性别 having count(*)>1
c) 查询开课总学时最少的院系名称。
Select 院系名称 from 院系表,课程表 where 院系表.院系编号=课程表.开课单位 and (select sum(学时数) from 课程表 group by 开课单位 having sum(学时数))<=all(select sum(学时数) from 课程表 group by 开课单位)
操作语言和定义语言
d) 创建学生会表,包含字段(社团编号(整型),社团名称(文本型(10字节)),所属院系(文本型(2字节))),其中社团编号为主码,所属院系为外码,参照院系表的院系编号。
Create table 学生会表 (社团编号 int,社团名称 text(10),所属院系 text(2) references 院系表(院系编号),primary key(社团编号))
e) 插入记录(1,“外联社”,03),(2,“文艺社”,05),(3,“交友社”,02
al
f) 更新2号记录的名称为“音乐社”。
Update 学生会表 set 文艺社=音乐社
g) 删除3号记录。
Delete from 学生会表 where 社团编号=”3”
h) 删除学生会表。
Drop table 学生会表