的基本了解

alter table Class add constraint FK_Class_Student foreign
key(EmpDeptId)
references Student(DeptId)

–插入数据
insert into Teacher values(‘网名好’,’12352536′,’Wjifdfji@qq.com’)

–次之个参数假诺用户不传,则有一个暗许值
create procedure usp_Add
@num1 int,
@num2 int 一千 –为存款和储蓄进程的参数设置暗中同意值
as
begin
print @num1+@num2
end

部分一时表:表名以#为发端。只在方今对话中央银立竿见影,不能够跨连接待上访谈。若是一直在连年会话中创建,则当前连连断开后删除,假诺是在仓储进程中创设的,则存款和储蓄进程举办完成后去除

 

4.声称变量与行使

–》》》通过while总结1-100中间具备奇数的和

–2》第一页 显示5条数据
select Top 5 * from Student order by id desc

政工有多少个属性:原子性 一致性 隔绝性 持久性
原子性:对于数据修改,要么全都实施,要么全都不进行
一致性:当数码产生时,数据必须处于同样状态
隔断性:对数据开始展览退换的有所并发事务时相互隔绝的。那标记工作必须是单独的,它不应以其他措施正视于或影响其余业务
永远性:事务完毕后,他对数据库的修改被永恒保持,事务日志可以保险业务的恒久性

视图本人并不存款和储蓄数据,只是存款和储蓄的查询语句,假诺把真正表中的数目修改后,则透过视图查询到的结果也变了。

注:内容比较基础,适合入门者对SQL
Server 数据库的垂询!!!

3.视图

9.(补充)全局偶尔表,局地一时表

–》》》右外对接
–代表要将右表(right join
左边的表)中的全体数据都展现,左表中只显示那多少个相称的数码。

后记

–3.闭馆游标
close cur_Student

–2.1.1将游标向后活动一条
fetch next from cur_Student

–存款和储蓄进程中的参数的难题
–存款和储蓄进度假使有参数,则调用的时候必须为参数赋值
exec usp_Add –不传参数则报错

–注明变量并初阶化

–删除叁个储存进程
drop proc usp_Add

–查询未有到场考试的学习者的人名与数码
–把左表(left join
关键字左侧的表)中的全体记录都展现出来,对于那三个在右表中能找到匹配的笔录,显示对应极度数据,对于那多少个右表中找不到非凡的记录彰显为null
select
ts.tsid,
ts.tsname,
TblScore.*
from TblStudent as ts
left outer join TblSore.tsid=ts.tsid   –outer能够不写

–在视图中不可能动用order by语句。除非:另外还钦赐了top 或for xml
–错误
create view vw3
as
select * from TblStudent order by tsage desc

select
ts.tsid,
ts.tsname,
TblScore.*
from TblStudent as ts
right outer join TblSore.tsid=ts.tsid

–3》第二页
select top 5 * from Student
where id not in (select top 5 * from Student order by id desc)
order by id desc

–扩大一列(扩充一列EmpAddr varchar(一千))
alter table Class Add EmpAddr varchar(1000)

–第七页数据 每页5条数据
–over属于开窗函数

–为性别扩大二个私下认可约束,私下认可为男
alter table Class add constraint DF_Class_EmpGender default(‘男’) for
EmpGender

–修改一下Emp 的数据类型(varchar(200))
alter table Class alter column Emp varchar(200)

–》》》演习:查询全体学生(参加和未加入的试验)的学员姓名、年龄、成绩,若无出席考试显示缺考,假诺小于english只怕math
小于60分展现不如格
select
ts.tsname,
ts.tsage,
tscore.tsid,
case
when tscore.tenglish is null then ‘缺考’
else convert(varchar(10),tscore.tenglish)
end as 保加拉斯维加斯语成绩,
case
when tscore.tmath id null then ‘缺考’
else convert (varchar(10),tscore.tmath)
end as 数学成绩,
是或不是报名考试=
case
when tscore.tscoreid is null then ‘是’
else ‘否’
end
from TblStudent as ts
left join TblScore as tscore on ts.tsid=tscore.tsid

–把贰个询问结果作为其它八个查询的查询源
select * from (select * from Student where tbage between 3 and 5)
as ct where tbname=5 –ct是新创的表名

7.触发器

–回滚事务
rollback transaction

–4.放出能源
deallocate cur_Student

–》》》左外联接(左联接)

–成立一个仓储进程计算两个数的和
create procedure usp_Add
@num1 int,
@num2 int
as
begin
print @num1+@num2
end

–》》》全局变量
print @@language
print @@version
print ‘aaa’+100
–通过判别@@error变量中是或不是不为0,就可以肯定上一条sql语句推行是或不是出错了
–借使@@error为0,表示上一条sql语句试行没出错,要是@@error不为0,则表示上一条sql语句出错了。
print@@error

–扩张外键约束,表Class中有一列EmpDeptId援用Student表中的DeptId
alter table Class add EmpDeptId int not null
alter table Student add constraint PK_Student_DeptId primary
key(DeptId)

正文

2.连表查询

尽量防止在触发器中进行耗费时间操作,因为触发器会与sql语句以为在同二个政工中(事务不甘休,就无法自由锁)

–查询学生姓名、年龄、班级及战表(战表属于第三张表)
select
ts.tsname,
ts.tsage,
tc.tclasssname,
tscore.tenglish,
tscore.tmath
from TblStudent as ts
inner join TblClass as tc on ts.tsclassid=tc.tclassid 
inner join TblScore as tscore on tscore.tsid=ts.tsid

–4》第三页
select top 5 * from Student
where id not in (select top (2*5) * from Student order by id desc)
order by id desc

–把别的二个询问的结果作为当前查询的准则来利用。
–子查询中=、!= 、< 、> 、<=
、>=之后只好回去单个值,假诺几个值就能报错
–化解办法 能够用in 代替
select * from Student
where tbage in(select tbage from Student where tbname=3)

–输出值
exec usp_Add 100,230

–一条语句删除多个约束,约束名用 逗号 隔开
alter table Class drop constraint
PK_Student_DeptId,
FK_Class_Student,
CK_Class_EmpAge

–张开专门的学问
begin transaction

10.(补充)约束

–输出存款和储蓄进程
exec usp_HelloWorld

–查询全部学生的人名、年龄及所在班级 (班级在另七个表中)
–当多少个列在分裂的表中时,要跨表查询,所以一般能够采用inner join
–tc ts是对表名起的别称
select
ts.tsname,
ts.tsage,
tc.tclassname
from TblStudent as ts
inner join TblClass as tc on
ts.tsclassid=tc.tclassid(只询问七个表中都局地数据)

–赋值
set @name=’yhz’
set @age=17

declare @rcount int
select @rcount=count(*) from TblStudent
print @rcount

–使用set与select为变量赋值的界别
declare @rcount int
set @rcount=(select count(*) from TblStudent)
print @rcount

笔记不全,还请见谅!希望对你有所进步。

–1.定义游标
declare cur_Student cursor fast_forward for select * from Student

declare @sum int=0
declare @i int =1
while @i<=100
begin
if @i%2<>0
begin
set @sum=@sum+@i
end
end
print @sum

》》》开窗函数分页《《《

select * from
(
select * ,row_number() over( order by id desc) as paixu from Student
) as tbl
where tbl.paixu between 6*5+1 and 7*5

–为EmpId扩充二个主键约束
alter table Class add constraint PK_Class_EmpId primary key(EmpId)

—子查询写法
select
tsname,
tsage,
班级名称=(select tclassname from TblClass where
TblClass.tclassid=TblStudent.tsclassid)
from TblStudent

–创造插入数据触发器
create trigger tri_Teacher_insert_after
on Teacher after insert
as
begin
declare @id int
declare @name varchar(10)
declare @phone int
declare @mail varchar(50)
select @id=tcid,@name=tcname,@phone=tcphone,@mail=tcmail from inserted

–账户A给账户B转账 当一方出标题时,多个语句都不奉行
begin tran
declare @sum int=0
update bank set balance =balance-1000 where cid=’0001′
set @sum=@sum+@@error
update banl set balance =balance+1000 where cid=’0002′
set @sum=@sum+@@error

–1》呈现第一页的数码
–分页查询的时候首先是将数据排序
select * from Student order by id desc

if @sum<>0
begin
rollback tran
print ‘回滚’
end
else
begin
commit tran
print ‘提交了’
end

–》》》full join 是查询全数的数目(未有的为空)

select * from Student
where tbage=(select tbage from Student where tbname=3)

–为EmpName扩展多个唯一约束
alter table Class add constraint UQ_Class_EmpName unique(EmpName)

大局有时表:表名以##为始发。五个会话可分享全局有的时候表。当创制全局不经常表的对话断开,并且未有用户正在访谈全局有时表时删除

6.积累进度

正文是私有学习SQL Server 数据库时的陈年笔记的整理,内容根本是对数据库的宗旨增加和删除改查的SQL语句操作自律,视图,存款和储蓄进度,触发器的宗旨明白。

–输出值
print @name
print @age

–成立删除数据触发器
–不可能有主键
create trigger tri_Teacher_after
on Teacher after delete
as
begin
insert into TeacherBak
select * from deleted
end

print @id
print @name
print @phone
print @mail
end

–为岁数扩充二个检查约束,年龄必须在1—120岁以内(包蕴)
alter table Class add constraint CK_Class_EmpAge check(EmpAge>=0
and EmpAge<=120)

–删除一列(EmpAddress列)
alter table Class drop column EmpAddress

–删除数据
–sql
server中的触发器是表级触发器,无论删除多少行照旧插入多少行,只触发一遍
–是按语句来触发的,每趟推行二次讲话,触发二遍触发器
delete from Teacher where tcid>18

–用一条语句为表扩大多个约束
alter table Class add
constraint PK_Student_DeptId primary key(DeptId),
constraint CK_Class_EmpAge check(EmpAge>=0 and EmpAge<=120),
add constraint DF_Class_EmpGender default(‘男’) for EmpGender

–》》》局地变量
–证明变量
declare @name varchar(10)
declare @age int

8.游标

–在视图中的查询语句,必须为每一列创造一个列名
create view vw2
as
select
tsname,
case
when tsage>13 and tsage<=16 then ‘少年’
when tsage>50 then ‘老年’
else ‘青壮年’
end as 称呼
from TblStudent

–创造三个自定义的仓库储存进度
create proc usp_HelloWorld
as
begin
print ‘hello world’
end

 

–正确
create view vw3
as
select top 3 * from TblStudent order by tsage desc

–将游标循环向后移动,直到最终
while @@fetch_status=0
begin
fetch next from cur_Student
end

–2.展开游标
open cur_Student

–提交事务
commit transaction

5.事务

–右外联与左外联都以先将协作的数量找到,然后再将那八个从没相配的数目增进进去,(注意:不是手拉手查询出来的,有先后顺序)

–2.1 对游标的操作
–将每条数据读取并出口

–创设分页存款和储蓄进程
create proc usp_PageBum
@pageSize int, –每页展现的多少
@pageIndex int –第几页
as
begin
select * from (select *,row_number()over (order by CityID asc)as num
from S_City )as s
where s.num between (@pageIndex -1)*@pageSize +1 and @pageIndex
*@pageSize
end
–查询第5页内容每页呈现10条数据
exec usp_PageBum 10,5

视图的指标是有助于查询,所以一般景观下不可能对视图举办增加和删除改查

》》》》》》子查询分页《《《《《《

前言

1.子查询

相关文章