①SELECT LOAN.借书证号,姓名,系名,COUT(*) AS借书数量 FROM BORROWER,LOANS WHERE BORROW.借书证号=LOANS.借书证号 GROUP BY LOANS.借书证号 HAVING COUT(*)>5 ②SELECT姓名,系名,书名,借书日期 FROM BORROWER,LOANS,BOOKS WHERE BORROWER.借书证号=LOANS.借书证号 AND LOANS.图书登记号=BOOKS.图书登记号 AND索书号IN(SELECT索书号FROM BORROWER,LOANS,BOOKS WHERE BORROW.借书证号=LOANS.借书证号 AND LOANS.图书登记号=BOOKS.图书登记号 AND姓名="欧阳"); ③CREATE VIEW SSP AS SELECT BORROWER.借书证号,姓名,班级,LOANS.图书登记号,书名,出版社,借书日期 FROM BORROWER.借书证号=LOANS.借书证号 AND LOANS.图书登记号=BOOKS.图书登记号 AND系名="信息系";
1)CREATE TABLE 职工(职工号CHAR(8) NOT NULL UNIQUE,姓名 CHAR(8)NOT NULL,年龄 SMALLINT,性别 CHAR( 2),CONSTRAINT C1 CHECK(性别IN(‘男’,‘女’))); CREATE TABLE 社会团体(编号 CHAR(8)NOT NULL UNIQUE,名称 CHAR(12)NOT NULL,负责人 CHAR(8),活动地点 VARCHAR( 50),CON-STRAINT C2 FOREICN KEY(负责人)REFERENC-ES 职工(职工号)); CREATE TABLE参加(职工号CHAR(8),编号CHAR(8),参加日期 DATA,CONSTRAINT C3 PRI-MARY KEY(职工号,编号),CONSTRAIN C3 FOREIGNKEY(职工号)REFFRENCES职工(职工号)); 2) CREATE VIEW社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别) AS SELECT编号,名称,负责人,姓名,性别FROM社会团体,职工WHERE社会团体.负责人=职工,职工号; CREATE VIEW参加人情况(职工号,姓名,社团编号,参加日期)AS SFLECT参加.职员号,姓名,社会团体.编号,名称,参加日期FROM职工,社会团体,参加 WHERE 职工,职工号=参加,职工号AND参加,编号=社会团体.编号; 3) SELECT*FROM职工WHERF NOT EXISTS(SELECT*FORM参加WHERE参加.职工号=职工.职工号); 4) SELECT职工号 FROM 职工 WHERENOT EXISTS(SELECT*FROM参加 参加1WHERE 参加1.职工号=‘1001’ AND NOT EX-ISTS (SELECT*FROM 参加 WHERE 参加2.编号=社会团体,编号AND参加2.职工号=职工.职工号)); 5) CRANT SELECT,INSERT,DELETE ON 社会团体,参加 TO 张三 WHERE GRANT OPTION;
[解析] 主要考查了SQL的数据查询功能、数据定义功能和数据操纵功能。这类问题主要是考查对SE-LECT FROM WHERE语句的掌握。
3. 在SQLServer2000的某数据库中有如下两张关系表: 学生表(学号,姓名,性别,系号),学号为主码 系表(系号,系名,系简称),系号为主码 ①在数据库中执行如下T-SQL代码: DECLARE @DePtID varchar(10) DECLARE @cnt int set @cnt=O DECLARE cursor1 cursor FOR SELEET系号FROM系表 WHERE系名LIKE'%电%' OPEN cursorl FETCH NEXT FROM cursor1 INTO @DePtID WHILE @@FETCH_STATUS=O BEGIN DECLARE @temp_cnt int sELECT @temp_cnt=COUNT(*)FROM学生表WHERE系号=@DeptID set @Cnt=@cnt+@temp_cnt FETCH NEXT FROM cursor1 INTO ODePtID END CLOSE cursor1 DEALLOCATE cursor1 SELECT @cnt 执行过程中发现速度比较慢,为了解决性能问题,需在功能不变的情况下,将此T-SQL代码改为一条SQL语句,请写出此SQL语句(语句中不能含有子查询)并说明为什么此种修改可以提高性能。 ②设在学生表的(姓名,系号)列上建有一个复合索引,该索引是否有助于提高下列两个语句的查询效率?并说明原因。 SELECT*FROM学生表 WHERE系号=‘1’; SELEET*FRoM学生表WHERE姓名=‘张三’;