6.查询没有选修数据库课程的学生的信息
select * from student
where(not exists (select * from sc,course
where o=o and cname='数据库')
实验六 创建视图
9,查询职工的年薪,并按年薪的升序排列;
select tname 姓名,sal*12 年薪
from teacher
order by sal asc
10,求每个班的学生数
select count(sno)
from student
group by clno
filename='D:\SQL\SM_DATA.MDF',
size=3,
maxsize=50,
filegrowth=10%
)
log on
(name=SM_LOG,
fห้องสมุดไป่ตู้lename='D:\SQL\SM_LOG.LDF',
size=2,
maxsize=unlimited,
filegrowth=1
3. 把在test数据库中的建表权限授予给用户yy。
4. 把查询表s和修改学生编号sno的权限授予给户yy。
5. 收回用户yy在test数据库中的建表权。
6. yy用户拒绝对C表的查看权限 实验八 索引的创建与使用,默认与规则的创建
2. 将04001班全体学生的成绩置0
update sc
set score=0
where (sno=(select sno from s where clno='04001'))
3. 删除04002班全体学生的选课记录
delete from sc
where (sno=(select sno from s where clno='04002'))
tno为教职工编号,tname姓名,age年龄,sal为月薪,dno为部门号
create table teacher
(
tno nchar(8) constraint pk_tno primary key,
tname nvarchar(30) not null,
age int,
(
sid int identity(1,1),
sno nchar(8) constraint pk_sno primary key,
clno nchar(4),
sname nvarchar(20) not null,
ssex nchar(2) constraint ck_ssex check(ssex='男' or ssex='女'),
sbir date,
sage int,
)
course(cno,cname,ccredits,ctno,cpno,ctime)
说明:cno 字符类型,主关系键
cname 字符类型,唯一键
ccredits 学分,精确数值型,精确长度为2,小数位为1
ctno ,cpno 字符类型
实验内容:
实验一:创建数据库
1.使用企业管理器或sql语句创建一个名为“SM”的数据库,初始大小为3MB,最大为50MB,数据库自动增长,增长方式按10%;
日志文件初始大小为2MB,最大大小不受限制,按1MB增长。
create database SM
on primary
(name=sm_data,
score decimal(4,1) constraint ck_score check(score between 0 and 100),//检查约束
constraint pk_sc primary key(sno,cno)
)
实验三:表的维护(ALTER TABLE)
1.用sql语句修改表course的列属性,将cname的长度改为40,且不允许空***
create view 选修c1的0403班学生
as select SNAME
from sc,student
where sc.sno=student.sno and cno='c1' and clno='0403'
实验七 数据安全
1.在服务器中创建test数据库的用户yy和登陆账号。
2.把对表sc的插入权授予给用户yy,并允许将此权限再授予其他用户
需要先将约束删除 才可设置不允许空
alter table course
drop constraint uk_cn
alter table course
alter column cname nvarchar(40) not null
2.用sql语句向表student中增加列email,且要求输入的电子邮件地址必须包括"@"
)
实验二:创建表
1. 在数据库SM中创建学生表student,课程表course,选课表sc
student(sid,sno,clno,sname,ssex,sage,sbir)
说明:sid int identity(1,1) 序号
sno 为主关系键,为字符类型 学号
6,查询有多少名学生的物理课成绩不及格;
select cname,COUNT(sno) 不及格人数
from sc,course
where o=o and
cname='物理' and score<60
group by cname
alter table student
add email char(50) constraint ck_email check(email='like %@%')***
3.用sql语句删除表student中的列sbir
alter table student
drop column sbir
ctime 整型
B:create table course
(
cno nchar(4) constraint pk_cno primary key,
cname nvarchar(20) constraint uk_cn unique,
ccredits decimal(2,1),
4.删除sname列上的约束。
not null的 直接修改 不能删除***
alter table student
alter column sname nvarchar(30)
实验四:简单数据查询
在实验二的基础上,再在sm数据库中新建表teacher,包括如下数据项
teacher(tno,tname,age,sal,dno)
where o=o
and score>60
group by sno
实验五 复杂查询
1. 查询体育课成绩不及格的男生名单
select sname from sc,student,course
where sc.sno=student.sno and o=o and cname='体育' and ssex='男' and score<60
7,求女学生的学生总数;
select COUNT(sno)
from student
where ssex='女'
8,求职工的最高工资、最低工资和平均工资;
select MAX(sal),MIN(sal),AVG(sal)
from teacher
sal money,
dno int,
)
在student,course,sc,teacher四张表中进行下列查询
1,查询所有0002部门职工的信息;
select *
from teacher
where dno='0002'
2,查询1984年和1985年出生的女生的信息;
ctno char(8),
cpno char(8),
ctime int,
)
sc(sno,cno,score)
说明:sno+cno为主键,并且sno是student的外部键,cno是course的外部键。
score精确数值型,精确长度为4,小数位为1
C: create table sc
from student
where (2016-year(sbirth)< all (select sname min(sage)
as minage
from s
where clno='04001')
as select *
from student
where clno=0401
3.将学生的学号和平均成绩建立一个视图
create view 平均成绩(学号,Avg)
as select sc.sno,avg(score)
from sc
group by sno
4. 建立04003班学生选修了0001号课程的学生的视图.
(
sno nchar(8) constraint fk_sno foreign key(sno) references student(sno),
cno nchar(4) constraint fk_cno foreign key(cno) references course(cno),