日期: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 '_阳%