SQL 复习

 

期末考试

三、简答题二

(每小题5分.共20分)

  1. 创建员工表,包含员工编号、姓名、年龄、性别、身份证号,其中员工编号是主键,在身份证号上创建唯 一索引,姓名上创建普通索引。

  2. 创建一个视图,只显示员工表中工资小于2200的员工,且带检查约束。

  3. 创建一个视图,显示员工姓名和性别。

  4. 创建一个触发器,判断如果非周六至周日的时间,禁止表操作。

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分)

  1. 创建一个部门表tbldept,要求包含两列: <1)部门编号deptno»类型int,具有identity标识属性; (2)部门名称 deptname,类型 varchar (20)。

  2. 修改以上部门表tbldept,增加两列:部门经理deptmgr,类型varchar (20);部 门人数deptcount,类型int。

  3. 在部门tbldept表中插入两条部门信息:销售部/张三/212,人力资源部/王五/116。

  4. 修改销售部人数为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

字段类型说明
departmentnoint,自动增长院系编号,主键
departmentnamevarchar (30)院系名称

2 学生表 student

字段类型说明
studentnoint,自动增长学生编号,主键
studentnamevarchar (20)学生姓名,非空、唯一
sexvarchar (10)学生性别,只能是男或女
ageint学生年龄
departmentnoint院系编号,外键,引用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;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值