WHERE SPJ.JNO =‘J1?);
(20)定义一个视图,它由所有这样的工程项目(工程项目号与所在城市名称)组成:它们由供应商S1供货且使用零件P1。 CREAT VIEW JN,JCITY AS
Select J.JN,J.CITY From J, SPJ
Where J.JN=SPJ.JN AND SPJ.SN=?S1? AND SPJ.PN=?P1?; 5.假设有如下4个样本表: student (学生信息表) NO 108 105 107 101 109 103
teacher (教师信息表) NO 804 856 825 831 CNO 3-105 3-245 6-166 9-888 NAME 李成 张旭 王萍 刘冰 CNAME 操作系统 数字电路 高等数学 SEX 男 男 女 女 TNO NO CNO 103 105 3-245 3-245 DEGREE 86 75 804 856 100 Student(NO,NAME,SEX,BIRTHDAY,CLASS) Teacher(NO,NAME,SEX,BIRTHDAY,PROF,DEPART) Course(CNO,CNAME,TNO) Score(NO,CNO,DEGREE) BIRTHDAY 12/02/58 03/12/69 05/05/72 08/14/77 PROF 副教授 讲师 助教 助教 DEPART 计算机系 电子工程系 计算机系 电子工程系 NAME 曾华 匡明 王丽 李军 王芳 陆军 SEX 男 男 女 男 女 男 BIRTHDAY 09/01/77 10/02/75 01/23/76 02/20/76/ 02/10/75 06/03/74 CLASS 95033 95031 95033 95033 95031 95031 course (课程表) score (成绩表)
计算机导论 825 (1) 列出至少有2名男生的班号。
Select CLASS From student Where SEX=?男? GROUP BY CLASS HAVING COUNT(*)>2
9
(2) 显示student表中不姓“王”的同学记录。
SELECT * FROM STUDENT
WHERE NAME NOT LIKE?王%?; (3) 显示student表中每个学生的姓名和年龄。
SELECT NAME,2017-YEAR(birthday) FROM STUDENT;
(4) 显示student表中最大和最小的birthday日期值。
SELECT NAME,MAX(BIRTHDAY),MIN(BIRTHDAY) FROM STUDENT;
(5) 以班号和年龄从大到小的顺序显示student表中的全部记录。
SELECT * FROM STUDENT
ORDER BY CLASS,2017-YEAR(BIRTHDAY)DESC (6) 显示“男”教师及其所上的课程。
SELECT TEACHER.NAME,COURSE.NAME FROM TEACHER,COURSE
WHERE TEACHER.NO=COURSE.TNO AND TEACHER.SEX=?男?; (7) 列出最高分同学的no、cno和degree列。
SELECT NO,CNO,DEGREE FROM SCORE WHERE DEGREE=
(SELECT MAX(DEGREE) FROM SCORE)
(8) 列出和“李军”同性别的所有同学的name。
SELECT NAME FROM STUDENT WHERE SEX=
(SELECT SEX FROM STUDENT WHERE NAME=?李军?); (9) 列出和“李军”同性别并同班的同学name。
SELECT NAME FROM STUDENT WHERE SEX =
(SELECET SEX FROM STUDENT
10
WHRER NAME=?李军?) AND CLASS= (SELECT CLASS FROM STUDENT WHERE NAME=?李军?);
(10)列出所有选修“计算机导论”课程的“男”同学的成绩表。
SELECT STUDENT.NO,COUSE.CNO,SCORE.DEGREE FROM STUDENT,COURSE,SCORE
WHERE STUDENT.NO=SCORE.NO AND COURSE.CNO=SCORE.CNO
AND COURSE.CNAME=?计算机导论? AND STUDENT.SEX=?男?;
6、设职工---社团数据库有三个基本表: 职工(职工号,姓名,年龄,性别);
社会团体(编号,名称,负责人号,活动地点); 参加(职工号,编号,参加日期);
试用SQL语句完成下列操作: 1)建立下列两个视图。
社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别); 参加人情况(职工号,姓名,社团编号,社团名称,参加日期)
CREATE VIEW 社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别) AS
SELECT 编号,名称,负责人, 姓名, 性别 FROM 社会团体,职工
WHERE 社会团体.负责任号=职工.职工号
CREATE VIEW参加人情况(职工号,姓名,社团编号,社团名称,参加日期) AS
SELECT 参加.职工号,职工.姓名,社会团体.编号,社会团体.名称,参加。参加日期
FROM 职工,社会团体,参加
WHERE 职工.职工号=参加.职工号 AND 参加.编号=社会团体.编号;
2)查找参加唱歌队或篮球队的职工号和姓名。 SELECT 职工号,姓名 FROM 职工,社会团体,参加
WHERE 职工.职工号=参加.职工号 AND 参加.编号=社会团体.编号 AND 社会团体.名称=?唱歌队?OR社会团体.名称=?篮球队?;
11
3)查找没有参加任何团体的职工情况。
SELECT * FROM 职工
WHERE NOT EXISTS (SELECT *
FROM 参加
WHERE 参加.职工号=职工.职工号);
4)查找参加了全部社会团体的职工情况。
SELECT * FROM 职工
WHERE NOT EXISTS (SELECT *
FROM 参加
WHERE NOT EXISTS
(SELECT* FROM 社会团体
WHERE 参加.职工号=职工.职工号AND
参加.编号=社会团体.编号));
5)查找至少参加了职工号为“1001”的职工所参加的全部社会团体的职工号。
SELECT 职工号 FROM 职工
WHERE NOT EXISTS(
SELECT * FROM参加参加1
WHERE 参加1.职工号=?1001?AND NOT EXISTS
(SELECT * FROM 参加.参加2
WHERE 参加2.编号=参加1.编号 AND 参加2.职工号=职工.职工号))
6)求每个社会团体的参加人数。
SELECT COUNT(职工号) FROM 参加 GROUP BY 编号
力赋给用户李平,并允许他将此权力授予其他用户。
GRANT SELECT,INSERT,DELECT ON 社会团体,参加 TO 李平
WITH GRANT OPTION;
12
7)把对“社会团体”和“参加”两个表的数据查看、插入和删除数据的权