创建学生表:
create table 学生(学号char (1) not null,
姓名varchar (6),
年龄int ,check (年龄between 0 and 100),
性别char (2),
系varchar (10),
primary key (学号));
创建课程表:
create table 课程(课程号 char (2)not null,
课程名 varchar (10),
先修学科 int not null,
学分 int , check (学分between 0 and 100),
primary key (课程号));
创建选课表:
create table 选课(学号 char (1) not null,
课程号 char (2) not null,
成绩 int , check (成绩 between 0 and 100),
primary key (学号,课程号),
foreign key (课程号) references 课程(课程号),
foreign key (学号) references 学生(学号));
查看这三个表:
select * from 学生
select * from 课程
select * from 选课
给这三个表插入数据:
insert into 学生 values ('1','张三','20','男','中文');
insert into 学生 values ('2','李四','21','女','英语');
insert into 学生 values ('3','王五','22','男','数学');
insert into 学生 values ('4','赵六','23','女','物理');
insert into 学生 values ('5','马八','25','男','计算机');
insert into 课程 values ('01','语文','01','30');
insert into 课程 values ('02','数学','02','40');
insert into 课程 values ('03','英语','03','50');
insert into 课程 values ('04','物理','04','60');
insert into 课程 values ('05','计算机','05','80');
insert into 选课 values ('1','01','20');
insert into 选课 values ('2','02','30');
insert into 选课 values ('3','03','40');
insert into 选课 values ('4','04','50');
insert into 选课 values ('5','05','60');
删除基本表
drop table 选课
删除表中所有的行
truncate table 学生
创建索引
create unique index 索引名 on 表名(学号次序)
给学生表创建一个名为学生_索引年龄降序排列的唯一索引
create unique index 学生_索引 on 学生(年龄desc)
给学生表创建一个名为学生表_索引年龄升序排列的不唯一索引(默认是升序)
create unique index 学生表_索引 on 学生(年龄asc)
给学生表创建一个名为学生的_索引年龄降序排列的聚簇索引
create clustered index 学生的_索引 on 学生(年龄)
删除索引
drop index 表名.索引名
删除学生表_索引
drop index 学生.学生表_索引名
修改数据
update 表名 set 列名=表达式 where 条件
将学生表中的张三的年龄变为岁
update 学生 set 年龄='22' where 学号='1'
将所有学生的年龄都加一岁(不加where代表全部)
update 学生 set 年龄=年龄+1
删除数据
delete from 表名 where 条件
删除学生表中的学号的学生
delete from 学生 where 学号=1
删除所有学生选课记录(不加where代表全部)
delete from 学生
删除计算机系所有学生的选课记录
delete from 选课 where 学号in (select 学号 from 学生 where 系='计算机')
查询学生表中选择中文系的学号:
select 学号 from 学生 where 系='中文'
查询学生表中的所有学号:
select all 学号 from 学生
查询学生表中学生的学号并去除重复的学号:
select distinct 学号 from 学生
查看学生的出生日期并命名该列:
select 年龄,-年龄 as 出生日期 from 学生
查看成绩不及格的学生的学号:
select 学号 from 选课 where 成绩<60
查看成绩及格的学生的学号:
select 学号 from 选课 where 成绩>=60
修改一个已有的元组:
update 学生 set 姓名='牛七' ,性别='男' where 学号='4';
将所有选了中文系的学生的成绩清零:
update 选课 set 成绩=0 where 学号in (select 学号 from 学生 where
系='中文');
删除一个元组:
delete from 学生 where 学号='1'
将选课中学生的成绩都提升百分之五:
update 选课 set 成绩=成绩*1.05
查看选择中文系的学生的学号:
select 学号 from 学生 where 系='中文'
删除选课中所有选择中文系的信息:
delete from 选课 where 学号in (select 学号 from 学生 where 系='中文');
清空已有元组中的一列:
update 学生 set 年龄=null
查询学生的成绩在-90之间的学生的学号,所在系,课程名,年龄,姓名,性别,年龄按.降序排列,且是女生:
select 学生.学号,系,年龄,姓名,性别, 课程.课程名, 选课.成绩 from 学生,课程,选课
where 学生.学号=选课.学号 and 课程.课程号=选课.课程号 and 选课.成绩 between 40 and 90 and
学生.性别='女'order by 学生.年龄 desc
插入时间格式:
create table qq(qs char (2),
qdate datetime,
qtime datetime,
qsdate smalldatetime,
primary key (qs));
select * from qq
set dateformat mdy
insert into qq values
('02','05/15/1788','16:50:28.000','05/15/2078');
所有学生他们每个人的平均成绩及格的学生学号和平均成绩
select 学号,avg(成绩) from 选课 group by 学号 having avg(成绩) in(
select avg(成绩)from 选课 group by 学号) and avg (成绩)>=60;
select 学号,avg(成绩) from 选课 group by 学号 having avg (成绩)>=60
1.列出成绩不合格的学号
select 学号 from 选课 where 成绩<60
2.不重复的学号
select distinct 学号 from 学生
1.中文系,数学系学生的姓名,性别,系号:
select 姓名,性别,系 from 学生 where 系='中文' or 系='英语' or 系='数学';
2.年龄在15至25之间的学生信息:
select 年龄 from 学生 where 年龄between 15 and 25;
3.性别是男的学生的姓名和性别所在的系:
select 姓名,系 from 学生 where 性别= '男';
4.中文系及格的学生的姓名 学号
select 姓名,学号 from 学生 where 学号in (select 学号 from 选课 where 课程号in
(select 课程号 from 选课 where 成绩>=60)) and 系='中文'
5.张三的网络布线的考试成绩
select 成绩 from 选课 where 学号 in (select 课程号 from 选课 where 学号 in
(select 学号 from 学生 where 姓名='张三'))
6.中文系的学生及年龄不大于22的学生
select 姓名 from 学生 where 年龄<=22 and 系='中文'
7.既选修了1号课程又选择了5号课程的学生
select 姓名 from 学生 where 学号 in (select 学号 from 选课 where 课程号='1' and
课程号='5')
8.年龄在岁以上的一个视图,体现学号,姓名,年龄
create view 视图(学号,姓名,年龄) as select 学号,姓名,年龄 from 学生 where
年龄>20
9.只有学分的课程代号.课程名的视图
create view 好的(课程号,课程名,先选修课)
as select 课程号,课程名,先修学科 from 课程 where 课程号 in (select 课程号 from 选课
where 成绩='4')
10.绩及格和参加选课但没有考试成绩的视图.学号,课程号和成绩
create view 我的视图(学号,课程号,成绩)
as select 学号,课程号,成绩 from 选课 where 成绩>=60 or 成绩 is null
11.创建选择号课程的学生的学号,姓名,成绩
create view 我的又一个视图 as select 学生.学号,学生.姓名,选课.成绩 from 学生,选课 where
学生.学号=选课.学号and 选课.程号='05'
insert into 视图名 as select 学号,姓名,年龄 from 学生 where 系='中文' with check
option;
12.显示大于年龄的学生学号和姓名,学号按照升学输出
select 学号,姓名 from 学生 where 年龄>(select avg(年龄)from 学生) order by
学号
13.显示学生表中姓名和最小年龄
select 姓名,年龄最小年龄 from 学生 where 年龄 in (select min(年龄) from 学生)
14.完全备份mgc数据库
use mgc
exec sp_addumpdevice
'disk','wodebeifen','c:\wodebeifen\wodebeifen.bak'
backup database mgc to wodebeifen
15.差异备份mgc数据库
use mgc
backup database mgc to disk='c:\wodebeifen\wodechalingbeifen.bak'
with diffrential
注:差异备份需要一个全库(完全)备份做基础,差异备份就是备份最后一次全库备份以来的数据库改变的部分
16.备份日志文件
use mgc
exec sp_addumpdevice
'disk','rizhidebeifen','c:\wodebeifen\rizhibeifen.bak'
backup log mgc to wodebeifen
17.课本第五章复习题:(全部内容)
create table 学生(学号char(2),
姓名varchar(10),
性别char (2),
年龄int,
所在系varchar (10),
primary key(学号));
create table 课程(课程号 char(2)default '1',
课程名 varchar (6),
先修课号 char (2),
学分 int,
primary key (课程号));
create table 选课(学号 char (2),
课程号 char (2),
成绩 int check (成绩between 0 and 100),
primary key (学号,课程号),
foreign key (学号) references 学生(学号),
foreign key (课程号) references 课程(课程号));
select* from 学生
select * from 课程
select * from 选课
insert into 学生 values ('1','马一','男','20','中文')
insert into 学生 values ('2','赵二','女','21','英语')
insert into 学生 values ('3','张三','男','22','物理')
insert into 学生 values ('4','李四','女','23','化学')
insert into 学生 values ('5','王五','男','24','生物')
insert into 学生 values ('6','钱六','女','25','计算机')
insert into 学生 values ('7','刘七','男','26','地理')
insert into 学生 values ('8','马八','女','27','历史')
insert into 学生 values ('9','付九','男','28','政治')
insert into 学生 values ('10','孙十','女','29','中文')
insert into 学生 values ('11','程十一','男','30','中文')
insert into 学生 values ('12','刘十二','女','31','英语')
insert into 学生 values ('13','牛十三','男','32','英语')
insert into 学生 values ('14','虎十四','女','33','计算机')
update 学生 set 姓名='马一'where 学号='1'
delete from 学生 where 学号='10'
select* from 学生
select * from 课程
select * from 选课
insert into 课程 values ('1','语文','1','90')
insert into 课程 values ('2','数学','2','80')
insert into 课程 values ('3','英语','3','70')
insert into 课程 values ('4','物理','4','60')
insert into 课程 values ('5','化学','5','50')
insert into 课程 values ('6','生物','6','40')
insert into 课程 values ('7','历史','7','30')
insert into 课程 values ('8','地理','8','20')
insert into 课程 values ('9','政治','9','10')
insert into 课程 values ('10','linux','9','10')
insert into 课程 values ('11','win','9','10')
insert into 课程 values ('12','sql','9','10')
insert into 课程 values ('13','路由器','9','10')
insert into 课程 values ('14','交换机','9','10')
insert into 课程 values ('15','pix','9','10')
insert into 选课 values ('1','1','90')
insert into 选课 values ('2','2','80')
insert into 选课 values ('3','3','70')
insert into 选课 values ('4','4','60')
insert into 选课 values ('5','5','50')
insert into 选课 values ('6','6','40')
insert into 选课 values ('7','7','30')
insert into 选课 values ('8','8','20')
insert into 选课 values ('9','9','10')
insert into 选课 values ('1','9','10')
insert into 选课 values ('1','2','10')
insert into 选课 values ('2','1','10')
insert into 选课 values ('2','3','10')
insert into 选课 values ('3','2','10')
insert into 选课 values ('3','5','10')
insert into 选课 values ('3','4','10')
insert into 选课 values ('2','4','10')
insert into 选课 values ('1','3','10')
查询选修了号课程的全部学生的姓名,出生年份,(假定当前为年)
select 姓名,年龄,2002-年龄 from 学生 where 学号in (select 学号 from 选课 where
课程号='1')
将年龄大于岁的的学生所有成绩设为零
update 选课 set 成绩='0' where 学号in (select 学号 from 学生 where
年龄>25)
以name,birthday为标题,显示学生表中所有学生的姓名,出生年份,(假定当前是年),按姓名降序排列
select 姓名 as name, 2002-年龄 as birthday from 学生 order by 姓名
desc
显示选修一号课程的学生的最高分,最低分,平均分,总分及人数
select max(成绩),min(成绩),avg(成绩),sum(成绩),count(*) from 选课 where
课程号='1'
显示选课数目大于3的学生的学号及选课数
select 学号,count(课程号) from 选课 group by 学号
having count(课程号)>=3
为计算机系建一个视图名为cs,包含如下信息:学号,姓名,性别,年龄,课程号,成绩
create view cs (学号,姓名,性别,年龄,课程号,成绩)
as select 学生.学号,姓名,性别,年龄,课程.课程号,选课.成绩 from 学生,课程,选课 where
学生.学号=选课.学号and 课程.课程号=选课.课程号
select * from cs
至少选修了3,4号课的学生姓名
select 学号 from 选课 where 学号in (select 学号 from 选课 where 课程号='3') and
学号in (select 学号 from 选课 where 课程号='4')
查询和张三在一个系的学生姓名和年龄
select 姓名,年龄 from 学生 where 所在系in (select 所在系 from 学生 where
姓名='张三')
查询选了号课且没选号课的学生的姓名
select 姓名 from 学生 where 学号in (select 学号 from 选课 where 课程号='2' and
课程号!='1')
只选 1 2号课程的学生姓名
select 学号 from 学生 where 学号in( select 学号 from 选课 where 课程号='02') and
学号in (select 学号 from 选课 where 课程号='03') and 学号in (select 学号 from 选课
group by 学号 having count(课程号)='2')
创建数据库:
create database school
on primary (name=school,
filename='c:\shujuku\school.mdf',
size=200mb,
maxsize=1gb,
filegrowth=5mb)
log on (name=school_log,filename='c:\shujuku\school_log.ldf',
size=100mb,
maxsize=2gb,
filegrowth=10%);