SQL Server
一、简答
根据表回答以下问题
两个表是先建关系,然后才输入数据,其中的关系为:book表中author_id作为外键关联到authors表的主键author_id上。 book表 列名 book_id book_name author_id
authors表 列名 author_id author_name int varchar 数据类型 4 30 长度 允许空 int varchar int 数据类型 4 50 4 长度 允许空 (1)用Transact-SQL语句建立authors表(包括建立主键,列取值非空)
(2)根据参照完整性在两个表都要输入第一个记录时一般应先输入哪个表的数据?为什么?
二、编程题(共4题) student表(学生表) 学号 1 2 3
course表(课程表) 课程号 1 2 3 课程名 SQL Server VB 专业英语 学分 4 3 2 姓名 李明 张然 许晴 性别 男 女 女 年龄 20 19 18 系别 计算机系 经管系 电子系 sc表(选课表) 学号 1 课程号 1 成绩 90 2 2 3 1 2 3 85 76 70 1、 把course表中课程号为2的课程的学分修改为4。
2、 在student表中查询年龄大于18的学生的所有信息,并按学号降序排列。
3、 在以上三个表中查询选的课程的“学分”为4,并且成绩大于80的学生的学号、姓名和
性别。
SQL Serve答案
3、
(1) create table authors
(author_id int primary key,
author_name varchar(30) not null)
(2)
如果先建立关系,然后再输入记录,在输入第一条记录时一般要先输入authors表,后输入book表。因为根据表之间的参照完整性,book表中author_id列的值要么取空值、要么取authors表中author_id列的某一个值,在此时book表的author_id列是不允许取空值的,所以应先输入authors表,后输入book表。
一、编程题 1、
update course set 学分=4
where课程号=2 3、 方法1:
select distinct student.学号,姓名,性别 from student, course, sc
2、select * from student where 年龄>18 order by 学号 desc
where (student.学号=sc.学号) and (course.课程号=sc.课程号)
and (course.学分=4) and (sc.成绩>80)
方法2:
select distinct student.学号,姓名,性别
from student Inner Join (sc Inner Join course On course.课程号=sc.课程号)
On student.学号=sc.学号
where (course.学分=4) and (sc.成绩>80)