学习 SQL Server (5) :视图,索引,事务和锁+T_SQL
- 2020 年 6 月 19 日
- 筆記
–=============== 视图的创建 =================、
–create view 视图名 as 查询语句
–注意:视图查询中的字段不能重名
— 视图中的数据是‘假数据’,真实数据在数据表中,如果数据表中被修改了,则视图中的数据也受影响
— 使用视图和使用数据表方法一样。视图也可排序、分组、设置条件,还可以嵌套
create view edu_view
as
select s1.Id 学生编号,s1.Name 学生姓名,s2.Score 分数,c.Name 课程名称,t.Name 教师姓名 from Students s1 join Scores s2 on s2.StudentId=s1.Id join Course c on s2.CourseId=c.Id join Teachers t on t.Id=c.TeacherId
select * from edu_view
–修改视图
–alter view 视图名 as 查询语句
alter view edu_view
as
select s1.Id 学生编号,s1.Name 学生姓名,s2.Score 分数,c.Name 课程名称,t.Name 教师姓名 from Students s1
join Scores s2 on s2.StudentId=s1.Id
join Course c on s2.CourseId=c.Id
join Teachers t on t.Id=c.TeacherId
where t.Name=’耿冰冰’
select * from edu_view
–删除视图
— drop view edu_view
–查看视图信息
exec sp_help students
–========================== 索引 ===============================
–索引的创建
–创建非聚集索引
— create index 索引名 on 表名(字段名)
create index index_age on students(Age)
–create unique [clustered] / [nonclustered] 【聚集】 / 【非聚集】
–index 索引名称 on 表名(列名 asc/desc)
–with fillfator =98 【填充因子,填充比例】
create unique clustered index index_age1 on Students(age) with fillfactor=90
–删除索引
–drop index 表名.索引名
drop index students.index_age
–修改索引
–exec sp_rename ‘表名.现有名称’,’新名称’
exec sp_rename ‘students.index_age1′,’newindex_age’
–查看 索引
exec sp_helpindex ‘students’
— ================ 事务 transaction / tran ============和锁=======
select * from Students
begin tran
insert into Students values(‘学生小明’,33,1)
insert into Students values(‘学生小李’,34,1)
insert into Students values(‘学生小红’,35,1)
insert into Students values(‘学生小黑’,36,1)
declare @num int –定义int类型变量
set @num=(select count(1) from Students) —给变量@num赋值 num的值就是数据表中的行数
if @num>=9
begin
rollback tran –回滚事务
end
else
begin
commit tran –提交事务
end
–========= 锁的大小分类
–锁按照锁定的数据的范围的大小,分为库所、表锁、页锁、行锁
–创建第一个事务
begin tran
update Students set Name=’沙雕’ where Id=1023
–设置锁定时间
waitfor delay ’00:00:09′
commit tran
–创建第二个事务
–==================== T_SQL =====================
use Unit11
—————————————————————–
–判断学生表人数是男生多还是女生多
declare @count1 int –定义整形变量 存储男生人数
declare @count0 int –定义整形变量 存储女生人数
set @count1=(select count(1) from Students where Sex=1) –通过查询给变量@count1赋值
select @count0=(select count(1) from Students where Sex=0)
if @count1>@count0
begin
print ‘男生多’
end
else
begin
print ‘女生多’
end
—————————————————————–
———————————输出1-100之间的偶数——————————-
declare @n int
set @n=1
while @n<=100
begin
if @n%2=0
begin
print @n
end
set @n=@n+1
end
———————————————————————————–
–全局变量 @@变量名
–局部变量名 @变量名
select @@ERROR
select datediff(day,getdate(),’2020-1-1′)
select datediff(day,’2000-9-14′,getdate())
select datediff(hour,’2000-9-14′,getdate())
作者还在学习中,发现错误的请在评论区留言。 如果有客友觉得文章还行的话,请点波推荐哦。 谢谢你们!!