这里主要介绍几道题目用以更加深入的了解SQL语句。在工作面试时乃至在考研时,很多时候都会考到SQL语句。如果这篇文章中的所有的题目都搞明白了,那么应付工作面试笔试或者考研笔试将会更加的游刃有余。
题目01
现有关系数据库如下:学生(学号,姓名,性别,专业,奖学金)
课程(课程号,名称,学分)
学习(学号,课程号,分数)
用SQL语言实现下列题目:
1. 检索不学课程号为“C135”课程的学生信息,包括学号,姓名和专业。
select 学号, 姓名, 专业
from 学生
where 学号 NOT IN (
select 学号
from 学习
where 课程号="C135");
2. 检索至少学过课程号为“C135”和“C219”的学生信息,包括学号、姓名和专业。
select 学号, 姓名, 专业
from 学生
where 学号 IN (
select 学号
from 学习 x, 学习 y
where x.学号=y.学号 AND x.课程号='C135' AND y.课程号='C219');
3. 从学生表中删除成绩出现过0分的所有学生信息。
delete from 学生
where 学号 IN (
select 学号
from 学习
where 分数=0);
4. 定义“英语”专业学生所学课程的信息视图AAA,包括学号、姓名、课程号和分数。
create view AAA(学号, 姓名, 课程号, 分数)
AS
select 学号, 姓名, 课程号, 分数
from 学生, 学习
where 学生.学号=学习.学号 AND 专业="英语";
题目02
学校有多名学生,财务处每年要收一次学费。为财务处收学费工作设计一个数据库,包括两个关系:学生(学号,姓名,专业,入学日期)
收费(学年,学号,学费,书费,总金额)
假设规定属性的类型:学费、书费、总金额为数值型数据;学号、姓名、学年、专业为字符型数据;入学日期为日期型数据。列的宽度自定义。
试用SQL语句定义上述表的结构。(定义应包括主键子句和外键子句)。
create table 学生(
学号 char(8) primary key,
姓名 char(25),
专业 char(50),
入学日期 date
);
create table 收费(
学年 char(10),
学号 char(8),
学费 numeric(4),
书费 num