2020年6月19日星期五

学习 SQL Server (5) :视图,索引,事务和锁 ,T_SQL

--=============== 视图的创建 =================、

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

 

作者还在学习中,发现错误的请在评论区留言。  如果有客友觉得文章还行的话,请点波推荐哦👍。 谢谢你们!!

学习 SQL Server (5) :视图,索引,事务和锁 ,T_SQL

没有评论:

发表评论