期末考试
三、简答题二
(每小题5分.共20分)
-
创建员工表,包含员工编号、姓名、年龄、性别、身份证号,其中员工编号是主键,在身份证号上创建唯 一索引,姓名上创建普通索引。
-
创建一个视图,只显示员工表中工资小于2200的员工,且带检查约束。
-
创建一个视图,显示员工姓名和性别。
-
创建一个触发器,判断如果非周六至周日的时间,禁止表操作。
1,
create table emp
(
no int primary key,
name varchar(20),
age int,
gender varchar(10),
iden varchar(18))
create unique index emp_iden_idx
on emp(iden);
create index emp_name_idx
on emp(name);
2,
create view emp_v1
as select *from emp where salary<2000
with check option;
3,
create view emp_v2(empname,empgender)
as select name,gender from emp
with check option;
4,
create trigger ddl_week_trig on database
for ddl_table_events
as
declare @weekday int
select @weekday=datepart(weekday,getdate())
if @weekday in (1,2,3,4,5)
begin
raiserror('错误时间段,禁止操作',16,1)
rollback
end;
四、简答题三
(每小题5分,共20分)
-
创建一个部门表tbldept,要求包含两列: <1)部门编号deptno»类型int,具有identity标识属性; (2)部门名称 deptname,类型 varchar (20)。
-
修改以上部门表tbldept,增加两列:部门经理deptmgr,类型varchar (20);部 门人数deptcount,类型int。
-
在部门tbldept表中插入两条部门信息:销售部/张三/212,人力资源部/王五/116。
-
修改销售部人数为210 A;更改人力资源部经理为李四。
1,
create table tbldept
(
deptno int identity(1,1),
deptname varchar(20)
);
2,
alter table tbldept
add
deptmgr varchar(20),
deptcount int
3,
insert into tbldept values('销售部','张三',212)
insert into tbldept values('人力资源部','王五',116)
4,
update tbldept
set deptcount=210
where deptname='销售部'
update tbldept
set deptname='李四'
where deptname='人力资源部'
五,综合
(1-5每小题3分,6-9每小题5分,共35分) 依据表1和表2完成1-9题
表1 院系表 department
字段 | 类型 | 说明 |
---|---|---|
departmentno | int,自动增长 | 院系编号,主键 |
departmentname | varchar (30) | 院系名称 |
表2 学生表 student
字段 | 类型 | 说明 |
---|---|---|
studentno | int,自动增长 | 学生编号,主键 |
studentname | varchar (20) | 学生姓名,非空、唯一 |
sex | varchar (10) | 学生性别,只能是男或女 |
age | int | 学生年龄 |
departmentno | int | 院系编号,外键,引用d叩artment (departmentno) |
1.创建院系表department。
2.创建学生表studento。
3.查询前50%的学生信息。
4.查询所有姓张的学生信息。
5.查询2006年出生的学生信息。
6.查询年龄介于20-25岁的男学生信息。
7.查询院系编号及该院系学生数量、学生的平均年龄。
8.查询学生信息,要求输出学生编号、姓名、性别、年龄以及所在院系名称。
9.查询每个院系的最小学生年龄,输出信息包括院系名称、最小年龄。
1,
create table department
(departmentno int identity(1,1) primary key,
departmentname varchar(30));
2,
create table student
(studentno int identity(1,1) primary key,
studentname varchar(20) unique not null,
sex varchar(20) check (sex in ('男','女')),
age int,
departmentno int foreign key references department (departmentno));
3,
select top 50 percent *from student;
4,
select *from student where studentname like '张%';
5,
select *from student where age=16;
6,
select *from student where sex='男' and age between 20 and 25;
7,
select departmentno 院系编号,count(*) 学生数量,avg(age) 学生平均年龄 from student join department on department.departmentno=student.departmentno;
消息 8120,级别 16,状态 1,第 24 行 选择列表中的列 'department.departmentname' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
8,
select studentno,studentname,sex,age,departmentname from student o where age=(select min(age) from student i where i.departmentno=o.departmentno);
消息 207,级别 16,状态 1,第 33 行 列名 'departmentname' 无效。
9,未验证,不报错
select departmentname,min(age) from department join student on department.departmentno=student.departmentno
group by departmentname;