From f77369a875665c735ca7a09e98239be3cefcf8d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E9=B9=8F?= <3460863727@qq.com> Date: Mon, 10 Oct 2022 16:20:03 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2022-10-7\345\207\275\346\225\260.sql" | 110 ++++++++++++++++++ ...5\345\222\214\350\247\206\345\233\276.sql" | 10 ++ ...7\346\254\241\350\247\206\345\233\276.sql" | 89 ++++++++++++++ .../\344\275\234\344\270\232/SQLQuery2.sql" | 54 +++++++++ .../\347\254\25411\346\254\241.sql" | 104 +++++++++++++++++ ...3\346\254\241\344\272\213\345\212\241.sql" | 49 ++++++++ ...30\345\202\250\350\277\207\347\250\213.md" | 66 +++++++++++ .../2022-10-6\345\207\275\346\225\260.md" | 65 +++++++++++ ...42\345\274\225\350\247\206\345\233\276.md" | 95 +++++++++++++++ .../2022-9-27\350\247\206\345\233\276.md" | 20 ++++ .../2022-9-28\344\272\213\345\212\241.md" | 15 +++ ...41\350\257\276\346\237\245\350\257\242.md" | 19 +++ 12 files changed, 696 insertions(+) create mode 100644 "18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-10-7\345\207\275\346\225\260.sql" create mode 100644 "18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-26\347\264\242\345\274\225\345\222\214\350\247\206\345\233\276.sql" create mode 100644 "18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-27\347\254\2547\346\254\241\350\247\206\345\233\276.sql" create mode 100644 "18\351\231\210\351\271\217/\344\275\234\344\270\232/SQLQuery2.sql" create mode 100644 "18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\25411\346\254\241.sql" create mode 100644 "18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\254\345\205\253\346\254\241\344\272\213\345\212\241.sql" create mode 100644 "18\351\231\210\351\271\217/\347\254\224\350\256\260/20-10-10\345\255\230\345\202\250\350\277\207\347\250\213.md" create mode 100644 "18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-10-6\345\207\275\346\225\260.md" create mode 100644 "18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-26 \347\264\242\345\274\225\350\247\206\345\233\276.md" create mode 100644 "18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-27\350\247\206\345\233\276.md" create mode 100644 "18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-28\344\272\213\345\212\241.md" create mode 100644 "18\351\231\210\351\271\217/\347\254\224\350\256\260/9-16\347\254\254\344\272\214\346\254\241\350\257\276\346\237\245\350\257\242.md" diff --git "a/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-10-7\345\207\275\346\225\260.sql" "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-10-7\345\207\275\346\225\260.sql" new file mode 100644 index 0000000..73e943b --- /dev/null +++ "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-10-7\345\207\275\346\225\260.sql" @@ -0,0 +1,110 @@ +select * from BankCard +--(1)编写一个函数求该银行的金额总和 +create function ban_sum () +returns money +as +begin +declare @money money +select @money=sum(CardMoney) from BankCard +return @money +end +select dbo.ban_sum() +drop function ban_sum +--(2)传入账户编号,返回账户真实姓名 +select * from AccountInfo +create function reeal(@sum varchar(20)) +returns @name table( +Number varchar(20), +name varchar(20) +) +as +begin +insert into @name +select AccountCode,RealName from AccountInfo where AccountCode=@sum +return +end +drop function reeal +select * from reeal('420107198905064135') +--(3)传递开始时间和结束时间,返回交易记录(存钱取钱),交易记录中包含 真实姓名,卡号,存钱金额,取钱金额,交易时间。 +select * from CardExchange +select * from AccountInfo +select * from BankCard +create function change(@start varchar(20),@end varchar(20)) +returns @record table( +realname varchar(20), +cardno varchar(20), +Inmoney money, +Outmoney money, +dealtime varchar(20) +) +as +begin +insert into @record +select realname,BankCard.CardNo,MoneyInBank,MoneyOutBank,ExchangeTime from CardExchange +left join BankCard on BankCard.CardNo=CardExchange.CardNo +left join AccountInfo on AccountInfo.AccountId=BankCard.AccountId +where ExchangeTime between @start and @end +return +end +select * from @record('') +--方案一(逻辑复杂,函数内容除了返回结果的sql语句还有其他内容,例如定义变量等): + +--(4)查询银行卡信息,将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”,根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户",分别显示卡号,身份证,姓名,余额,用户等级,银行卡状态。 + +--方案一:直接在sql语句中使用case when + +--方案二:将等级和状态用函数实现 +create function class(@myMoney int) +returns varchar(10) +as +begin + declare @result varchar(10) + if @myMoney < 3000 + set @result = '普通用户' + else + set @result = 'VIP用户' + return @result +end + + +create function Astate(@myNum int) +returns varchar(10) +as +begin + declare @result varchar(10) + if @myNum = 1 + set @result = '正常' + else if @myNum = 2 + set @result = '挂失' + else if @myNum = 3 + set @result = '冻结' + else if @myNum = 4 + set @result = '注销' + else + set @result = '异常' + return @result +end +--(5)编写函数,根据出生日期求年龄,年龄求实岁,例如: + +--​ 生日为2000-5-5,当前为2018-5-4,年龄为17岁 +--​ 生日为2000-5-5,当前为2018-5-6,年龄为18岁 +create table Emp +( + EmpId int primary key identity(1,2), --自动编号 + empName varchar(20), --姓名 + empSex varchar(4), --性别 + empBirth smalldatetime --生日 +) +insert into Emp(empName,empSex,empBirth) values('刘备','男','2008-5-8') +insert into Emp(empName,empSex,empBirth) values('关羽','男','1998-10-10') +insert into Emp(empName,empSex,empBirth) values('张飞','男','1999-7-5') +insert into Emp(empName,empSex,empBirth) values('赵云','男','2003-12-12') +insert into Emp(empName,empSex,empBirth) values('马超','男','2003-1-5') +insert into Emp(empName,empSex,empBirth) values('黄忠','男','1988-8-4') +insert into Emp(empName,empSex,empBirth) values('魏延','男','1998-5-2') +insert into Emp(empName,empSex,empBirth) values('简雍','男','1992-2-20') +insert into Emp(empName,empSex,empBirth) values('诸葛亮','男','1993-3-1') +insert into Emp(empName,empSex,empBirth) values('徐庶','男','1994-8-5') +select * from Emp + +create function outBirth(@birth ) \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-26\347\264\242\345\274\225\345\222\214\350\247\206\345\233\276.sql" "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-26\347\264\242\345\274\225\345\222\214\350\247\206\345\233\276.sql" new file mode 100644 index 0000000..0ba8c6c --- /dev/null +++ "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-26\347\264\242\345\274\225\345\222\214\350\247\206\345\233\276.sql" @@ -0,0 +1,10 @@ +----1.tb_student(name) Ϊ50 +create nonclustered index IX_name on tb_student(name) with(fillfactor = 40) + +--2.tb_record(borrow_time,return_time) ʹѯûͬѧûͬѧͼ黹 +create index IX_Br on tb_record(borrow_time,return_time) +select *,isnull(return_time , getdate())ǿƹ from tb_record with(index = IX_Br) where return_time is null + +----3.id() ۼtb_book(id) +alter table tb_book add id int +create clustered index IX_id on tb_book(id) \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-27\347\254\2547\346\254\241\350\247\206\345\233\276.sql" "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-27\347\254\2547\346\254\241\350\247\206\345\233\276.sql" new file mode 100644 index 0000000..c0e4f3b --- /dev/null +++ "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-27\347\254\2547\346\254\241\350\247\206\345\233\276.sql" @@ -0,0 +1,89 @@ +--1дͼʵֲѯп˻Ϣʾţ֤ +select b.*,a.AccountCode,a.RealName from BankCard b join AccountInfo a on a.AccountId=b.AccountId + +go +create view V_GetCar +as +select b.*,a.AccountCode,a.RealName from BankCard b join AccountInfo a on a.AccountId=b.AccountId +go + + +select * from V_GetCar + +--2תг: group by + sum(case when) /+count(case when) ݷ+ over (paritition by, order by) + +--һ +-- +create database okk +go +use okk +go +-- +create table ac + ( + ID int primary key identity(1,1), + GameName varchar(20) not null, + English int not null, + Maths int not null , + Music int not null, + ); + +--ɼ +insert into ac (GameName,English,Maths,Music) values ('',60,80,90); +insert into ac(GameName,English,Maths,Music) values ('',50,88,40); +insert into ac(GameName,English,Maths,Music) values ('',60,80,60); + + +--unpivot + select * from ac + select ID,GameName,subject,score from ac +unpivot +( +score +for subject in ([English],[Maths],[Music]) +) + as a + + +--ڶ +-- +create table yoo + ( + [year] int, + [month] int, + amount float, + ) + go +--ֵ + insert into yoo([year],[month] ,amount ) values (1991,1,1.1), + (1991,2,1.2), + (1991,3,1.3), + (1991,4,1.4), + (1992,1,2.1), + (1992,2,2.2), + (1992,3,2.3), + (1992,4,2.4) + go + select * from yoo + go + +--pivot вͨ + select year,m1,m2,m3,m4 from yoo +as p +PIVOT +( + sum(amount) for + p.month in ([m1],[m2],[m3],[m4]) +) as b + + + +------------ + select [year], + min((case when [month] =1 then amount else 666 end))m1, + min((case when [month] =2 then amount else 666 end))m2, + min((case when [month] =3 then amount else 666 end))m3, + min((case when [month] =4 then amount else 666 end))m4 + from yoo + group by [year] +-- No newline at end of file \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\344\275\234\344\270\232/SQLQuery2.sql" "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/SQLQuery2.sql" new file mode 100644 index 0000000..7b7cd8e --- /dev/null +++ "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/SQLQuery2.sql" @@ -0,0 +1,54 @@ +--1. ѯ人еԱϢҪʾԼԱϸ +select * from People +join Department on People.DepartmentId = Department.DepartmentId +where PeopleAddress ='人'; + +--2. ѯ人еԱϢҪʾƣְԼԱϸ +select * from People +join Department on People.DepartmentId = Department.DepartmentId +join [rank] on people.departmentid=[rank].rankid +where PeopleAddress ='人'; + +--3. ݲŷͳԱԱܺͣƽʣ߹ʺ͹ʡ +select DepartmentName,COUNT(*) Ա, SUM(PeopleSalary) ܺ, AVG(PeopleSalary) ƽ, MAX(PeopleSalary) ,MIN(PeopleSalary) С from People +join Department on People.DepartmentId = Department.DepartmentId +group by DepartmentName; + +--4. ݲŷͳԱԱܺͣƽʣ߹ʺ͹ʣƽ10000 µIJͳƣҸƽʽС +select DepartmentName,COUNT(*) Ա, SUM(PeopleSalary) ܺ, AVG(PeopleSalary) ƽ, MAX(PeopleSalary) ,MIN(PeopleSalary) С from People +join Department on People.DepartmentId = Department.DepartmentId +group by DepartmentName +having AVG(PeopleSalary)>=10000 +order by AVG(PeopleSalary) desc; + + + + +--5. ݲƣȻְλƣͳԱԱܺͣƽʣ߹ʺ͹ +select DepartmentName,RankName ,[Rank].RankId ְλȼ , COUNT(*) Ա,SUM(PeopleSalary) ܺ, AVG(PeopleSalary) ƽ, MAX(PeopleSalary) ,MIN(PeopleSalary) С from people +join department on People.DepartmentId = Department.DepartmentId +join [Rank] on People.RankId = [Rank].RankId +group by DepartmentName,RankName,[Rank].RankId + + +--6.ѯз 6.22--7.22 ԱϢ +select * from people where +(MONTH(PeopleBirth)=6 and DAY(PeopleBirth)>=22) or +(MONTH(PeopleBirth)=7 and DAY(PeopleBirth)<=22) + +--7.ѯԱϢһʾ(,ţ,,,,,,,,,,) +select * , +case when datepart(YY,PeopleBirth)%12=0 then'' +when datepart(YY,PeopleBirth)%12=1 then'ţ' +when datepart(YY,PeopleBirth)%12=2 then'' +when datepart(YY,PeopleBirth)%12=3 then'' +when datepart(YY,PeopleBirth)%12=4 then'' +when datepart(YY,PeopleBirth)%12=5 then'' +when datepart(YY,PeopleBirth)%12=6 then'' +when datepart(YY,PeopleBirth)%12=7 then'' +when datepart(YY,PeopleBirth)%12=8 then'' +when datepart(YY,PeopleBirth)%12=9 then'' +when datepart(YY,PeopleBirth)%12=10 then'' +when datepart(YY,PeopleBirth)%12=11 then'' +end as +from people ; \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\25411\346\254\241.sql" "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\25411\346\254\241.sql" new file mode 100644 index 0000000..1226852 --- /dev/null +++ "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\25411\346\254\241.sql" @@ -0,0 +1,104 @@ +use BankTest +go + +--1. 洢ʵֲѯ˻͵п˻Ϣ,ʾпţ˻ +select * from bankcard +go +create proc getmin +@info money output +as +begin + select @info=MIN(Cardmoney)from bankcard + select cardno,realname,cardmoney from BankCard b + join AccountInfo a on b.AccountId=a.AccountId + where CardMoney=@info + end + go + declare @info money + exec getmin @info output + + + --2. ģпǮпţǮʵִǮ + select * from CardExchange + go + create proc yinhang + @kahao varchar(50), + @jine money + as + begin + insert into CardExchange values(@kahao ,@jine ,0,GETDATE()) + end + go + declare @kahao varchar(50)='6225547854125656',@jine money=777 + exec yinhang @kahao,@jine + select * from CardExchange + + --3. ģпȡǮпţȡǮʵȡǮȡǮɹ1ȡǮʧܷ-1 + select * from BankCard + go + create proc quqian + @ka varchar(50), + @quqian money, + @bankout int output + as + begin + select @bankout=(case when cardmoney >=@quqian then 1 else 0 end) + from BankCard where CardNo=@ka + update bankcard set CardMoney -=@quqian where cardno=@ka + end + go + declare @ka varchar(50)='222222222222 ', + @quqian money =666, + @bankout int + exec quqian @ka,@quqian,@bankOut output + select @bankOut + select * from BankCard + + +4.-- ѯijʱεдȡϢԼܽ**ȡܽ +--뿪ʼʱ䣬ʱ䣬ʾȡϢͬʱشܽȡܽ + select * from CardExchange + go + create proc getSum + @openTime smalldatetime, + @overTime smalldatetime, + @InSum money output, + @OutSum money output + as + begin + select @InSum=SUM(MoneyInBank),@OutSum=SUM(MoneyOutBank) from CardExchange where ExchangeTime between @openTime and @overTime + end + go + declare @openTime smalldatetime ='2022-09-07', + @overTime smalldatetime ='2022-09-30', + @InSum money,@OutSum money + + exec getSum @openTime,@overTime ,@InSum output ,@OutSum output + select @InSum ܶ ,@OutSum ȡܶ + + --5. ****û룬ûȷ볤<8Զ8λ +--(ʾ 0-9 float(rand()*10)) rand():0.0-1.0С float:ȡ + +go +create proc pro_yhm + @carNo varchar(50), + @pwd varchar(50) +as +begin + if((select CardNo from BankCard where CardNo =@carNo) !='' + and @pwd = (select CardPwd from BankCard where CardNo =@carNo and @pwd=CardPwd )) + begin + if(len(@pwd) <8) + begin + update BankCard set CardPwd = CONCAT(ROUND(99999+RAND()*99999,0),ROUND(RAND()*9,0),ROUND(RAND()*9,0)) where CardNo =@carNo + end + end + else + begin + print'' + end + end + go + declare @carNo varchar(50) = '6225125478544587',@pwd varchar(50) = '123456' + exec pro_yhm @carNo,@pwd + select * from BankCard diff --git "a/18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\254\345\205\253\346\254\241\344\272\213\345\212\241.sql" "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\254\345\205\253\346\254\241\344\272\213\345\212\241.sql" new file mode 100644 index 0000000..de1ec76 --- /dev/null +++ "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\254\345\205\253\346\254\241\344\272\213\345\212\241.sql" @@ -0,0 +1,49 @@ +select * from AccountInfo +select * from BankCard +select * from CardExchange +select * from CardStateChange +select * from CardTransfer + + +--1.ȡ6000(checkԼ˻>=0)Ҫʹʵ֣޸ȡ¼ʹ +alter table BankCard add constraint CK_Money check(CardMoney>=0) +begin transaction A +declare @Myerror int =0 +declare @myerr int = 0 +update BankCard set CardMoney = CardMoney-6000 where CardNo ='6225125478544587' +set @myerr += @@error +insert into CardExchange (CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) +values('6225125478544587',0,6000,GETDATE()) +set @myerr += @@error +if @Myerror = 0 +begin + commit transaction + print'ȡɹ' +end +else +begin +rollback transaction + print'ȡʧ' +end +--2.ŷת1000Ԫ(checkԼ˻>=0) +alter table BankCard add constraint CK_Money check(CardMoney>=0) +begin transaction +declare @error int = 0 +declare @myerry int = 0 +update BankCard set CardMoney = CardMoney -1000 where CardNo = '6225125478544587' +set @myerry+=@@ERROR +update BankCard set CardMoney = CardMoney + 1000 where CardNo = '6225547854125656' +set @myerry+=@@ERROR +insert into CardTransfer(CardNoOut,CardNoIn,TransferMoney,TransferTime) +values('6225125478544587','6225547854125656',1000,GETDATE()) +set @myerry+=@@ERROR +if @error = 0 + begin + commit + print 'ת˳ɹ' + end +else + begin + rollback + print 'תʧ' + end \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\347\254\224\350\256\260/20-10-10\345\255\230\345\202\250\350\277\207\347\250\213.md" "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/20-10-10\345\255\230\345\202\250\350\277\207\347\250\213.md" new file mode 100644 index 0000000..0a380c1 --- /dev/null +++ "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/20-10-10\345\255\230\345\202\250\350\277\207\347\250\213.md" @@ -0,0 +1,66 @@ +存储过程(Stored Procedure) + +存储过程是 预编译 SQL语句集合,这些语句存储在一个名称(存储过程的名称)下并作为单元来处理。存储过程代替了传统的逐条执行SQL语句的方式,一个存储过程中可以包含查询、插入、删除、更新等操纵的一系列SQL语句,当这个存储过程被调用执行时,这些操作也会同时执行。 + +封装好 --> 调用 + + 存储过程的分类 + + 系统存储过程 + + 系统存储过程是用来管理SQL Server与显示有关数据库和用户的信息的存储过程。 + +常见的系统存储过程有 +sp_databases 列出服务上的所有数据库 +sp_helpdb --报告有关指定数据库或所有数据库的信息 +sp_renamedb 更改数据库的名称 +sp_tables --返回当前环境下可查询的对象的列表 +sp_columns 返回某个表列的信息 +sp_help --返回某个表的所有信息 +sp_helpconstraint 查看某个表的约束 +sp_helpindex --查看某个表的索引 +sp_stored_procedures 列出当前环境中的所有存储过程 +sp_password --添加或修改登录账户的密码 +sp_rename 重命名存储过程 +sp_helptext 显示默认值,未加密的存储过程、用户定义的存储过程、触发器或视图的实际文本。 + + + + 自定义存储过程 + +创建存储过程 + +1.没有输入参数,没有输出参数的存储过程。 + create proc <存储过程名称> + as + + go + +执行存储过程 + +--无参 +exec <存储过程名称> +--带参 +exec <存储过程名称> <形参1>,<形参2>,... +--带参带返回值 +declare @变量 +exec @变量 = <存储过程名称> <形参1>,<形参2>,... +--有输入参数,有输出参数的存储过程 +declare @变量 +exec <存储过程名称> <形参1>,<形参2>,@变量 output +--一个变量同时具备输入输出功能 +declare @变量 <数据类型> = 值 +exec <存储过程名称> <形参1>,<形参2>,@变量 output + +删除存储过程 +drop procedure <存储过程名称> + + 存储过程的优点 + + 允许模块化程序设计 + + 执行速度更快 + + 减少网络流通量 + + 提高系统安全性 \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-10-6\345\207\275\346\225\260.md" "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-10-6\345\207\275\346\225\260.md" new file mode 100644 index 0000000..680aa63 --- /dev/null +++ "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-10-6\345\207\275\346\225\260.md" @@ -0,0 +1,65 @@ +## 函数 + +函数分为(1)系统函数:,(2)自定义函数(方法:将一个功能封装成可重用的函数)。 + +其中自定义函数又可以分为(1)标量值函数(返回单个值),(2)表值函数(返回查询结果) + +本文主要介绍自定义函数的使用。 + +### 标量值函数 语法格式 + +` + +``` +CREATE FUNCTION function_name(@parameter_name parameter_data_type) --(@参数名 参数的数据类型)` +`RETURNS date_type --返回返回值的数据类型` + +`[AS]` + +`BEGIN` + + `function_body --函数体` + + `RETURN 表达式; --必须要有的` + +`END +``` + +` + +### 表值函数 语法格式 + + + +```sql +create function 名称 + +([{@参数名称 参数类型[=默认值]}[,n]]) + +returns @局部变量 table(参数名 参数类型) + +[with encryption] + +[as] + +begin + +函数体 + +return 函数返回值 + +end +``` + +### 删除自定义函数 + +```sql +DROP function 函数名 +``` + +### --总结:自定义函数 + +##### --1.标量值函数: 1.returns 数据类型 2.return 标量(某个值) + +##### --2.多语句表值函数 1.returns 表名 table(字段 数据类型) 2.return + diff --git "a/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-26 \347\264\242\345\274\225\350\247\206\345\233\276.md" "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-26 \347\264\242\345\274\225\350\247\206\345\233\276.md" new file mode 100644 index 0000000..4e8d3e1 --- /dev/null +++ "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-26 \347\264\242\345\274\225\350\247\206\345\233\276.md" @@ -0,0 +1,95 @@ +## 视图 + +#### 关系(Relations) + +三种类型关系: + +- 表(Table)--基表,存储关系(Base Tables,Sorted relations) +- 视图(Views)--虚拟关系(Virtual relations)(不是物理存在的是虚拟的) +- 临时结果(Temporary results)--用于构建**子查询**的结果 + + + +**视图的作用** + +视图能够简化用户的操作 + +视图使用户能以多种角度看待同一数据 + +视图对重构数据库提供了一定的逻辑独立性 + +视图能够对机密数据提供安全保护 + +#### 基于视图的操作 + +##### 定义视图 + +```sql +--建立视图 +create view <视图名> [(<列名>[,<列名>]...)] + as <子查询> [with check option] +``` + +##### 常见的视图形式 + +- 行列子集视图:去掉了某些行和某些列,但保留了主键 + +```sql +--建立信息学院学生的视图 +create view V_StuMajor(学号,姓名,学院,专业) +as +(select stu_num ,name ,school ,major from tb_student where school='信息学院') +go + +``` + +- with check option 视图 + +```sql +--建立信息学院学生的视图,并要求通过该视图进行的更新操作只涉及信息学院的学生 +``` + + + +- 带表达式的视图 + +```sql +--定义一个反映学生年龄的视图 +create view V_StuMajor(学号,姓名,学院,专业) +as +(select stu_num ,name ,school ,major from tb_student where school='信息学院') +with check option +go +``` + +##### 查询视图 + +```sql +select * from V_StuMajor +``` + + + +##### 更新视图 + +```sql +update V_StuMajor set 姓名='王博文' where 学号=16130201 +``` + + + +##### 删除视图 + +```sql +drop view <视图名> +--该语句从数据字典中删除指定的视图定义 +--由该视图导出的其他视图仍在数据字典中,但不能使用,需要删除 +--删除基表时,由该基表导出的所有视图定义都必须显示删除 +``` + +#### 视图的设计原则 + +- 以 select * 方式创建的视图:可扩充性差,应尽可能避免 + + + diff --git "a/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-27\350\247\206\345\233\276.md" "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-27\350\247\206\345\233\276.md" new file mode 100644 index 0000000..67bfe6b --- /dev/null +++ "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-27\350\247\206\345\233\276.md" @@ -0,0 +1,20 @@ + + +#### 什么是视图 + +- 视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上 +- 视图中并不存放数据,而是存放在视图所引用的原始表(基表)中,即基本中的数据发生变化,从视图中查询的数据也随之改变。 +- 同一张原始表,根据不同用户的不同需求,可以创建不同的视图 + +--触发器,存储过程 +--视图: +--数据表:1.基表 2.临时表(select,) 3.视图(虚拟表) + +--创建 view:视图 index:索引 proc:存储过程 + +--删除视图 +--drop view V_名称 + +--建立视图 +create view <视图名> [(<列名>[,<列名>]...)] + as <子查询> [with check option] \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-28\344\272\213\345\212\241.md" "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-28\344\272\213\345\212\241.md" new file mode 100644 index 0000000..5729977 --- /dev/null +++ "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-28\344\272\213\345\212\241.md" @@ -0,0 +1,15 @@ +#### 事务的属性(ACID) + +一般来说,事务具有四个标准属性,分别是原子性(**A**tomicity,或称不可分割性)、一致性(**C**onsistency)、隔离性(**I**solation,又称独立性)、持久性(**D**urability),简称 **ACID**。具体说明如下: + +### 事务使用方法 + +----begin try +---- --事务的开始:begin tran +---- --sql语句 +---- commit --提交 +----end try + +----begin catch --捕获错误,如果某条语句执行错误,将被捕获 +---- rollback tran +----end \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\347\254\224\350\256\260/9-16\347\254\254\344\272\214\346\254\241\350\257\276\346\237\245\350\257\242.md" "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/9-16\347\254\254\344\272\214\346\254\241\350\257\276\346\237\245\350\257\242.md" new file mode 100644 index 0000000..fbd4e47 --- /dev/null +++ "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/9-16\347\254\254\344\272\214\346\254\241\350\257\276\346\237\245\350\257\242.md" @@ -0,0 +1,19 @@ +## 第二次课查询 + +--保留小数点后2位 + +--round(小数,保留位数) + +--convert 02154.13200 decimal(5,2):保留小数后2位,有效数字总共是5 + +--convert和cast 可以强制转换数据类型 + +--count(*):空值也统计 count(字段):当前字段的空值不统计 + +--删除数据 +delete from 表名 where 列名='' + +--删除 +--drop 删除整张表 +--truncate删除整张表,表还在 + -- Gitee