日期:2014-05-16  浏览次数:20428 次

数据库笔试题

1. 新建学生-课程数据库的三个表:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept) Sno为主码;
课程表:Course(Cno,Cname,Cpno,Credeit) Cno为主码;
学生选修表:SC(Sno,Cno,Grade) Sno,Cno,为主码;

?

Student

?

学号(Sno) 姓名 Sname 性别 Ssex 年龄 Sage 所在系 Sdept
95001 李勇 20 CS
95002 刘晨 19 IS
95003 王敏 18 MA
95004 张立 19 IS


Course:

?

课程号
Cno
课程名
Cname
先行课
Cpno
学分
Credit
1 数据库 5 4
2 数学 2
3 信息系统 1 4
4 操作系统 6 3
5 数据结构 7 4
6 数据处理 2
7 Pascal语言 6 4


SC:

学号
Sno
课程号
Cno
成绩
Grade
95001 1 92
95001 2 85
95001 3 88
95002 2 90
95002 3 80

?

?

数据库生成语句:

?

create database stu_course

use stu_course

create table student(
    sno varchar(32),
    sname varchar(32),
    ssex varchar(32),
    sage int,
    sdept varchar(32)
)

create table Course(
    Cno varchar(32),
    Cname varchar(32),
    Cpno varchar(32),
    credit int
)

create table SC(
    Sno varchar(32),
    Cno varchar(32),
    Grade int
)
?


一:查询表中的列和行


1:查询全体学生的学号与姓名


select sno,sname from student


2:查询全体学生的姓名、学号、所在系。

?

select sno,sname,sdept from student

?

3:查询全体学生的详细记录

?

select * from student

?

4:查询全体学生的姓名及出生年份

?

select sname,DATEPART(yy, GETDATE()) - sage + 1 from student (SQLServer)


5:查询全体学生的姓名,出生年份及所在系,要用小写字母表示系名

?

select sname,DATEPART(yy, GETDATE()) - sage + 1,lower(sdept) from student


6:查询选修了课程的学生学号
select sno,cno from sc


7:查询选修了课程的学生姓名

?

select distinct sname from student,sc where student.sno=sc.sno


二:条件查询:

?

常用的查询条件

查询条件谓词
比较=,<,>,>=,<=,!=,<>,!>,!<;
not+上述比较运算符
确定范围Between and,Not between And,
确定集合IN,not IN
字符匹配Like,Not Like
空值IsNull,ISNOTNULL
多重条件AND,OR


1:查询计算机系全体学生的姓名

?

select sname from student where sdept=”CS”

?

2:查询所有年龄在20岁以下的学生姓名及其年龄

?

select sname,sage from student where sage<20

?

3:查询考试成绩有不及格的学生的学号


select sno from sc where grade<60


4:查询年龄在20到23间的学生的姓名,系别及年龄


select sname,sdept,sage from student where sage between 20 and 23


5: 查询年龄不在20到23间的学生的姓名,系别及年龄


select sname,sdept,sage from student where sage not between 20 and 23


6:查询信息系(IS),数学系(MA)和计算机系(CS)学生的姓名和性别


select sname,ssex from student where sdept in("IS","MA","CS")


7:查询不是信息系(IS),数学系(MA)和计算机系(CS)学生的姓名和性别


select sname,ssex from student where sdept not in("IS","MA","CS")


8:查询学号为”95001”的学生详细情况


select * from student where sno=95001


9:查询所有姓刘的学生的姓名,学号和性别(where name like ‘刘%’)


select sname,sno,ssex from student where sname like '刘%'

?

10:查询姓”欧阳”且命名为三个汉字的学生的姓名

?

select sname from student where sname like '欧阳_'


11:查询名字中第2个字为”阳”字的学生姓名和学号(where sname like '_阳%