diff --git "a/\346\210\264\344\277\212\351\224\213/\344\275\234\344\270\232/2022.9.22\344\275\234\344\270\232--\345\217\230\351\207\217\343\200\201\345\276\252\347\216\257.sql" "b/\346\210\264\344\277\212\351\224\213/\344\275\234\344\270\232/2022.9.22\344\275\234\344\270\232--\345\217\230\351\207\217\343\200\201\345\276\252\347\216\257.sql" new file mode 100644 index 0000000000000000000000000000000000000000..4a9086649e4d725c79d80eea0f2dcb9d4f6931a1 --- /dev/null +++ "b/\346\210\264\344\277\212\351\224\213/\344\275\234\344\270\232/2022.9.22\344\275\234\344\270\232--\345\217\230\351\207\217\343\200\201\345\276\252\347\216\257.sql" @@ -0,0 +1,78 @@ +--1.为赵云此人进行开户开卡操作,赵云身份证:420107199904054233 +declare @name varchar(20),@id varchar(20) +set @name = '赵云' +set @id = '420107199904054233' +insert into AccountInfo values(@id,'13554785426',@name,'2022-09-19 19:20:00') +go + +--2.需要求出张飞的银行卡卡号和余额,张飞身份证:420107199602034138 (1.使用连接查询,2.使用变量) +declare @id varchar(20) +set @id = '420107199602034138' +select b.CardNo 卡号,b.CardMoney 余额 from BankCard b +inner join AccountInfo a +on a.AccountId = b.AccountId +where a.AccountCode = @id +go + +-- 3.某用户银行卡号为“6225547854125656”,该用户执行取钱操作,取钱5000元,余额充足则进行取钱操作,并提示"取钱成功",否则提示“余额不足”。 +declare @money int , @getMoney int +select @money = (select CardMoney from BankCard where CardNo = '6225547854125656') +set @getMoney = 5000 +if(@money-@getMoney >= 0) +begin + print '取钱成功' +end +else +begin +print '余额不足' +end +go + +​--4.查询银行卡信息,将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”, +--并且根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户", +--显示列分别为卡号,身份证,姓名,余额,用户等级,银行卡状态。 +select t.CardNo 卡号,a.AccountCode 身份证,a.RealName 姓名,t.CardMoney 余额, +case +when t.CardMoney < 300000 then '普通用户' +when t.CardMoney >= 300000 then 'VIP用户' +end 登记 +from AccountInfo a +inner join +( +select * , +case +when b.CardState = 1 then '正常' +when b.CardState = 2 then '挂失' +when b.CardState = 3 then '冻结' +when b.CardState = 4 then '注销' +end 状态 +from BankCard b +) t +on a.AccountId = t.AccountId +go + +-- 5.循环打印1-10。 +declare @i int +set @i = 1 + +while (@i<=10) +begin + print @i + set @i = @i +1 +end +go + +-- 6.打印99乘法表 + declare @i int = 1 +while @i <= 9 + begin + declare @j int = 1 + declare @result varchar(200) = '' + while @j <= @i + begin + set @result = @result + cast(@i as varchar(1))+ ' * ' + cast(@j as varchar(1)) + ' = '+ cast(@i*@j as varchar(2)) + char(9) + set @j = @j + 1 + end + print @result + set @i = @i + 1 + end diff --git "a/\346\210\264\344\277\212\351\224\213/\347\254\224\350\256\260/2022.9.22--\345\217\230\351\207\217\343\200\201\345\276\252\347\216\257.md" "b/\346\210\264\344\277\212\351\224\213/\347\254\224\350\256\260/2022.9.22--\345\217\230\351\207\217\343\200\201\345\276\252\347\216\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..87c9b3b0558f799d151d1265af5233370ee867f5 --- /dev/null +++ "b/\346\210\264\344\277\212\351\224\213/\347\254\224\350\256\260/2022.9.22--\345\217\230\351\207\217\343\200\201\345\276\252\347\216\257.md" @@ -0,0 +1,98 @@ +# 1.变量 + +## 1.1局部变量 + +局部变量必须以标记@作为前缀 ,如@age +局部变量的使用是先声明,再赋值 +局部变量只在定义它的局部范围内有效 + + + +声明一个局部变量:**declare @变量名 数据类型** + +```sql +--例: + declare @id int --声明一个名为id的整型变量 + declare @name varchar(50) --声明一个可变长度为50的存放姓名的字符串变量 + +``` + +赋值: + +- set @变量名 = 值 + +- select @变量名 = 值 + +```sql +--例: + select @id = 1001 + set @name = '周飘' +``` + +**set与select赋值的区别:** + +set赋值给变量指定的值,select一般用于表中查询出的数据赋值给变量,如果查询结果有多条,取最后一条赋值给变量 + +## 1.2全局变量 + +全局变量必须以标记@@作为前缀,如@@version +全局变量由**系统定义和维护**,我们**只能读取,不能修改全局变量的值** +全局变量在整个SQL环境下都可以被访问或调用 + +```sql +--@@ERROR:返回执行的上一个语句的错误号 +--@@IDENTITY:返回最后插入的标识值 +--@@MAX_CONNECTIONS:返回允许同时进行的最大用户连接数 +--@@ROWCOUNT:返回受上一语句影响的行数 +--@@SERVERNAME:返回运行 SQL Server 的本地服务器的名称 +--@@SERVICENAME:返回 SQL Server 正在其下运行的注册表项的名称 +--@@TRANCOUNT:返回当前连接的活动事务数 +--@@LOCK_TIMEOUT:返回当前会话的当前锁定超时设置(毫秒) +``` + +# 2.逻辑控制语句 + + + +## 2.1 if else + +```sql +if(条件) + begin + 语句1 + 语句2 + end + +else + begin + 语句1 + 语句2 + end +``` + +## 2.2循环控制语句 + +```sql +while(条件) + begin + 语句1 + 语句2 + end +``` + +## 2.3逻辑控制语句 switch case + +# 3.批处理语句 + +go语句特点: + +1. 等待go语句前的代码执行完成后,再执行go后面的代码。 +2. 批处理语句的结束标志。 + +# 4.总结 + +变量的使用。要先用DECLARE 关键字声明,然后用SET或SELECT赋值。局部变量前必须有 “@” 作前缀,全局变量必须有 “@@” 作前缀。 +变量的输出可以用:PRINT或SELECT语句。 +逻辑控制语句提供了条件操作所需的顺序和逻辑。 +了解T-SQL编写工具。 +批处理可以提高语句执行的效率,使用“GO”作为结束标志。