SQL Server 入门
第三章
--创建stu01db数据库
create database stu01db
on primary
(
name=stu01data, //主文件名
filename='F:\Data\stu01data.mdf', //主文件内容要存的路径
size =5mb, // 初始容量
maxsize=10mb, //最大容量
filegrowth=20% //增长率
)
log on
(
name=stu01log, //主文件名
filename='F:\Data\stu01log.ldf', //主文件内容要存的路径
size=5mb,
maxsize=unlimited,
filegrowth=2mb
)
--5
create database studb
on primary
(
name=studbdata,
filename='F:\studbdata.mdf',
size=3mb,
maxsize=5mb,
filegrowth=20%
)
log on
(
name=studblog,
filename='F:\studblog.ldf',
size=1mb,
maxsize=5mb,
filegrowth=1mb
)
--7
drop database studb
-- 第四章 (对于表处理——alter table 表名_增(add )、删 (drop))
--①.创建成绩表
create database two
use two
create table 成绩
(
学号 char(12) not null,
课程号 char(12) not null,
授课教师 varchar(12) not null,
期中成绩 int,
期末成绩 int,
总评成绩 char(8) not null,
primary key (学号,课程号)
)
--创建课程表
--1
create table 课程
(
课程号 char(12) not null primary key,
课程名称 varchar(30) not null,
授课教师 varchar(10) not null,
学分 int null
)
--②
alter table 课程
alter column 学分 smallint not null
alter table 课程
alter column 课程名称 varchar(10)
--③
alter table 成绩
add 总成绩 int
alter table 成绩
add 平时成绩 int null
alter table 成绩
drop column 授课教师
--(2)表数据操作
--①.向表中插入数据
insert 成绩(学号,课程号,期中成绩,期末成绩,总评成绩,总成绩,平时成绩)
values('1','2','3','4','5','6','7')
insert 课程(课程号,课程名称,授课教师,学分 )
values('2','3','4','5')
第五章 单数为主 其中(1)① 和(2)⑦ 不考
--(1)
--③.检索其他系中年龄小于计算机系年龄最大者的学生
-- 方法.1
select stu_id,stu_name
from 学生信息
where datediff(yy,stu_birth,getdate())<
(select max(datediff(yy,stu_birth,getdate()))
from 学生信息
where 学生信息.dept_id=(select dept_id from 系部
where dept_name='计算机系'))and dept_id!
=(select dept_id from 系部
where dept_name='计算机系')
-- 方法.2
select stu_id,stu_name
from 学生信息
where stu_birth> (select min(stu_birth)from 学生信息
where 学生信息.dept_id=(select dept_id from 系部
where dept_name='计算机系'))
and dept_id!=(select dept_id from 系部
where dept_name='计算机系')
--⑤.检索全部学生都选修的课程表中的课程号和课程名称
select course_id,course_name
from 课程
where
(select count(*) from 成绩 where course_id=课程.course_id)
=(select count(*) from 学生信息)
--(2)
--①.根据课程分组,统计期中成绩的平均分和总分
select course_id ,avg(score) as 平均分,sum(score) as 总分
from 成绩
group by course_id
order by avg(score),sum(score)
--③,根据课程号和学号分组,分组条件是期末的平均成绩不低于90分,统计期末
--成绩的平均分
select sum(score)总分,avg(score)as 平均分 from 成绩
group by course_id
having avg(score)>=90
order by sum(score),avg(score)
--⑤,列出年龄等于18岁的学生的成绩记录
select score
from 成绩
where (select stu_id,stu_name
from 学生信息 where datediff(yy,stu_birth,getdate())=18)
***求年龄的语句: datediff(yy,stu_birth,getdate())
--(3)
--①
create view 计算机系学生
select stu_id,stu_name,stu_sex,stu_birth,dept_name
from 学生信息 inner join 系部 on 系部.dept_id=学生信 息.dept_id
where dept_name='计算机系'
--③ 重命名视图
exec sp_rename 计算机系学生,v_计算机系学生
--⑤
drop view v_计算机系学生
第六章
(1)使用对象资源管理器与T_sql语句两种方式创建索引:::::::聚焦索引---unique index ; 复合索引——nonclustered
create unique index indexname
①.在jxgl数据库的"系部"表上按dept_id 创建一个名为 dept_id_index的聚集索引
use jxgl
create unique index dept_id_index on 系部 (dept_id)
②.在jxgl数据库的"系部"表上按stu_id 和course_id 创建一个名为 stu_course_index的复合索引-----nonclustered
use jxgl
create nonclustered index stu_course_index on 成绩 (stu_id,course_id)
③.在jxgl 数据库“学生信息”表上按stu_id建立聚集引 stu_id_index
create unique index stu_id_index on 学生信息 (stu_id)
第八章 (1)、(2)、(5)、(6)
--(1)
use jxgl
declare @a int
set @a=(select count(*) from 学生信息)
select @a=count(*) from 学生信息
select @a as '总人数'
--(2)
select @@version as 版本
select @@language as 语言
select @@servicename as 服务器
select @@servername as 服务器名称
select @@max_connections as 同时连接的最大用户数
--(5)
select stu_id,
course_name=case course_id
when '112011' then '近代文学'
when '112012' then '哲学'
when '312010' then '大学英语'
when '312011' then '西方文学'
when '612010' then '大学语文'
when '612020' then 'sql server'
when '612021' then 'jsp'
end,
score
from 成绩
--(6)
declare @i int,@s int
set @i=1
set @s=1
while @i<=10
begin
set @s=@s*@i
set @i=@i+1
end
print '10!='
print @s
--select @s as '10!'
第九章 (1)、(2)、(5)、(6)
--(1)
create procedure Insert_stu
@xid char(10),@xname varchar(10),@xsex char(2),@xbirth smalldatetime,@xdept char(4)
as
begin
insert into 学生信息
(stu_id,stu_name,stu_sex,stu_birth,dept_id)
values(@xid,@xname,@xsex,@xbirth,@xdept)
end
--(2)
use jxgl
execute Insert_stu @xid='1100',@xname='小薛',@xsex='女',@xbirth='1996/2/8',@xdept='d005'
--(5)
create procedure Query_stu
@xid char(10)
as
begin
select stu_name,stu_sex,stu_birth
from 学生信息
where stu_id=@xid
end
--(6)
execute Query_stu '2013010115'
第十章,单数为主——1,3,5,7,9,11
--(1)为学生信息表和课程表建立主键约束
use jxgl
alter table 学生信息
add constraint st_pk
primary key(stu_id)
use jxgl
alter table 课程
add constraint cs_pk
primary key(course_id)
--(3)删除1/2中创建主键
alter table 学生信息
drop constraint st_pk
alter table 课程
drop constraint st_pk
alter table 学生信息
drop constraint st_uk
alter table 课程
drop constraint cs_uk
--(5)为学生信息表的性别列定义check约束,值域为'男'或'女'
alter table 学生信息
add constraint st_sex check (stu_sex='男' or stu_sex='女')
--(7)将(6)中创建的默认值对象和规定对象与性别解除绑定并删除
drop rule ll_sex
--(9) 调用insert_stu 存储过程验证触发器
use jxgl
exec Insert_stu @xid='1111',@xname='笑笑',@xsex='女'
,@xbirth='1995/5/1',@xdept='d007'
--(11)
create trigger tr_person_del
on Txl
with encryption
after delete
as
delete from Txl
where id=(select id from deleted)
go
--(10) 管理触发器
--① 建立数据库testdb,并在数据库中建立两个表
create database testdb
create table Txl(id int,name char(10),age int)
create table Person_count(Person_count int, id int)
--②
create trigger tr_person_insert
on Txl
for insert
as
update Person_count set Person_count=Person_count+1 where id=1
--验证
insert Person_count values(0,1)
insert Txl values(2,'峭',20)
--③
create trigger tr_person_del
on Txl
for delete
as
begin
update Person_count set Person_count=Person_count-1
end
--验证
delete Txl
where name='峭'