diff --git "a/20\345\220\264\346\263\263\346\263\260/\344\275\234\344\270\232/2022.9.6.md" "b/20\345\220\264\346\263\263\346\263\260/\344\275\234\344\270\232/2022.9.6.md" new file mode 100644 index 0000000000000000000000000000000000000000..75c75d1ba78bf709c7b5501af332068c90ca1bd9 --- /dev/null +++ "b/20\345\220\264\346\263\263\346\263\260/\344\275\234\344\270\232/2022.9.6.md" @@ -0,0 +1,135 @@ +create database BankTest; +go +use banktest; +go +--账户信息表:存储个人信息 +create table AccountInfo +( + AccountId int primary key identity(1,1), --账户编号 + AccountCode varchar(20) not null, --身份证号码 + AccountPhone varchar(20) not null, --电话号码 + RealName varchar(20) not null, --真实姓名 + OpenTime smalldatetime not null, --开户时间 +) +--银行卡表:存储银行卡信息 +create table BankCard +( + CardNo varchar(30) primary key, --银行卡卡号 + AccountId int not null, --账户编号(与账户信息表形成主外键关系) + CardPwd varchar(30) not null, --银行卡密码 + CardMoney money not null, --银行卡余额 + CardState int not null,--1:正常,2:挂失,3:冻结,4:注销 + CardTime smalldatetime default(getdate()) --开卡时间 +) +--交易信息表(存储存钱和取钱的记录) +create table CardExchange +( + ExchangeId int primary key identity(1,1), --交易自动编号 + CardNo varchar(30) not null, --银行卡号(与银行卡表形成主外键关系) + MoneyInBank money not null, --存钱金额 + MoneyOutBank money not null, --取钱金额 + ExchangeTime smalldatetime not null, --交易时间 +) +--转账信息表(存储转账信息记录) +create table CardTransfer +( + TransferId int primary key identity(1,1),--转账自动编号 + CardNoOut varchar(30) not null, --转出银行卡号(与银行卡表形成主外键关系) + CardNoIn varchar(30) not null, --转入银行卡号(与银行卡表形成主外键关系) + TransferMoney money not null,--交易金额 + TransferTime smalldatetime not null, --交易时间 +) +--状态信息变化表(存储银行卡状态变化的记录,状态有1:正常,2:挂失,3:冻结,4:注销) +create table CardStateChange +( + StateId int primary key identity(1,1),--状态信息自动编号 + CardNo varchar(30) not null, --银行卡号(与银行卡表形成主外键关系) + OldState int not null, --银行卡原始状态 + NewState int not null, --银行卡新状态 + StateWhy varchar(200) not null, --状态变化原因 + StateTime smalldatetime not null, --记录产生时间 +) + + + +--为刘备,关羽,张飞三个人进行开户开卡的操作 +--刘备身份证:420107198905064135 +--关羽身份证:420107199507104133 +--张飞身份证:420107199602034138 +insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime) +values('420107198905064135','13554785425','刘备',GETDATE()) +insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState) +values('6225125478544587',1,'123456',0,1) + +insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime) +values('420107199507104133','13454788854','关羽',GETDATE()) +insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState) +values('6225547858741263',2,'123456',0,1) + +insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime) +values('420107199602034138','13456896321','张飞',GETDATE()) +insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState) +values('6225547854125656',3,'123456',0,1) + +select * from AccountInfo +select * from BankCard + + + +--进行存钱操作,刘备存钱2000元,关羽存钱:8000元,张飞存钱:500000元 +select * from AccountInfo +update BankCard set CardMoney = CardMoney + 2000 where CardNo = '6225125478544587' +insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) +values('6225125478544587',2000,0,GETDATE()) + +update BankCard set CardMoney = CardMoney + 8000 where CardNo = '6225547858741263' + +insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) +values('6225547858741263',8000,0,GETDATE()) + +update BankCard set CardMoney = CardMoney + 500000 where CardNo = '6225547854125656' +insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) +values('6225547854125656',500000,0,GETDATE()) + +--转账:刘备给张飞转账1000元 +update BankCard set CardMoney = CardMoney -1000 where CardNo = '6225125478544587' +update BankCard set CardMoney = CardMoney + 1000 where CardNo = '6225547854125656' + +insert into CardTransfer(CardNoOut,CardNoIn,TransferMoney,TransferTime) +values('6225125478544587','6225547854125656',1000,GETDATE()) + + + +select * from AccountInfo --个人信息 +select * from BankCard --银行卡信息 +select * from CardStateChange --银行卡状态更改表 +select * from CardTransfer --转账表 +select * from CardExchange --交易记录 + +--1. 为赵云此人进行开户开卡操作,赵云身份证:420107199904054233 +insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime) +values('420107199904054233','13559509629','赵云',GETDATE()) +insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState) +values('6225125478544599',4,'123456',0,1) + +--2. 需要求出张飞的银行卡卡号和余额,张飞身份证:420107199602034138 (1.使用连接查询,2.使用变量) +declare @a varchar (20) = 420107199602034138 +select RealName ,CardNo , CardMoney from BankCard +inner join AccountInfo on AccountInfo.AccountId = BankCard.AccountId +where AccountCode = @a + +--3.某用户银行卡号为“6225547854125656”,该用户执行取钱操作,取钱5000元,余额充足则进行取钱操作,并提示"取钱成功",否则提示“余额不足”。 +declare @money money +select @money = CardMoney from BankCard where CardNo = 6225547854125656 +print @money +if @money >5000 +begin + print '取钱成功' + end +else +if @money <5000 +begin + print '余额不足' + end +--4.查询银行卡信息,将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”,并且根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户", +--显示列分别为卡号,身份证,姓名,余额,用户等级,银行卡状态。 \ No newline at end of file diff --git "a/20\345\220\264\346\263\263\346\263\260/\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" "b/20\345\220\264\346\263\263\346\263\260/\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..a0ef1ef828c8603dae4c9a12b520bc7c12e1ef02 --- /dev/null +++ "b/20\345\220\264\346\263\263\346\263\260/\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" @@ -0,0 +1,50 @@ +设计数据库的步骤为 + +1. 建模:信息收集、绘制E-R图 +2. 模型转换:用数据模型建表 +3. 规范化:运用三范式 + 1. 第一范式(1NF):确保列的原子性 + 2. 第二范式(2NF):使每列都和主键关联 + 3. 第三范式(3NF):使每列都和主键直接关联 + +## 变量与逻辑控制 + +- 掌握变量的定义和使用 +- 掌握输出语句 +- 掌握逻辑控制语句 +- 理解批处理的概念 + +### 变量 + +#### 局部变量 + +局部变量必须以标记@作为前缀 ,如@age +局部变量的使用是先声明,再赋值 +局部变量只在定义它的局部范围内有效 + + + +声明一个局部变量:**declare @变量名 数据类型** + +```sql +--例: + declare @id int --声明一个名为id的整型变量 + declare @name varchar(50) --声明一个可变长度为50的存放姓名的字符串变量 + +``` + +赋值: + +- set @变量名 = 值 + +- select @变量名 = 值 + +```sql +--例: + select @id = 1001 + set @name = '周飘' +``` + +set与select赋值的区别: + +set赋值给变量指定的值,select一般用于表中查询出的数据赋值给变量,如果查询结果有多条,取最后一条赋值给变量 diff --git "a/\345\220\264\346\263\263\346\263\260/2022.9.5--\347\254\224\350\256\260.txt" "b/20\345\220\264\346\263\263\346\263\260/\347\254\224\350\256\260/2022.9.1--\346\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" similarity index 100% rename from "\345\220\264\346\263\263\346\263\260/2022.9.5--\347\254\224\350\256\260.txt" rename to "20\345\220\264\346\263\263\346\263\260/\347\254\224\350\256\260/2022.9.1--\346\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" diff --git "a/20\345\220\264\346\263\263\346\263\260/\347\254\224\350\256\260/2022.9.5--\350\256\276\347\275\256\345\217\230\351\207\217.md" "b/20\345\220\264\346\263\263\346\263\260/\347\254\224\350\256\260/2022.9.5--\350\256\276\347\275\256\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..1efe3116cb44cf30710bbdd1c1a63c836d5440e5 --- /dev/null +++ "b/20\345\220\264\346\263\263\346\263\260/\347\254\224\350\256\260/2022.9.5--\350\256\276\347\275\256\345\217\230\351\207\217.md" @@ -0,0 +1,43 @@ +设置系统变量 + +**方式一:set global 变量名 = 值 + +**方式二:set @@global.变量名 = 值set @@【session.】变量名 = 值; + +设置用户变量 + +**方式一:一set @用户变量名 = 值 + +**方式二:set @用户变量名:=值 + +**方式三:select @用户变量名:=值; + +设置局部变量 + +**方式一:set 局部变量名 = 值 + +**方式二:set 局部变量名 =值 + +**方式三:select @局部变量名 =值; + + +全局变量 + +全局变量必须以标记@@作为前缀,如@@version +全局变量由**系统定义和维护**,我们**只能读取,不能修改全局变量的值** +全局变量在整个SQL环境下都可以被访问或调用 + +```sql +--@@ERROR:返回执行的上一个语句的错误号 +--@@IDENTITY:返回最后插入的标识值 +--@@MAX_CONNECTIONS:返回允许同时进行的最大用户连接数 +--@@ROWCOUNT:返回受上一语句影响的行数 +--@@SERVERNAME:返回运行 SQL Server 的本地服务器的名称 +--@@SERVICENAME:返回 SQL Server 正在其下运行的注册表项的名称 +--@@TRANCOUNT:返回当前连接的活动事务数 +--@@LOCK_TIMEOUT:返回当前会话的当前锁定超时设置(毫秒) + +## 输出语句 + +1. print变量或表达式 +2. select变量或表达式 diff --git "a/20\345\220\264\346\263\263\346\263\260/\347\254\224\350\256\260/2022.9.6--\346\235\241\344\273\266\345\276\252\347\216\257.md" "b/20\345\220\264\346\263\263\346\263\260/\347\254\224\350\256\260/2022.9.6--\346\235\241\344\273\266\345\276\252\347\216\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..ee47d59b67ee0ba34a89805b262756e7e6140584 --- /dev/null +++ "b/20\345\220\264\346\263\263\346\263\260/\347\254\224\350\256\260/2022.9.6--\346\235\241\344\273\266\345\276\252\347\216\257.md" @@ -0,0 +1,39 @@ +--变量:局部变量,全局变量 +--局部变量:@ +--全局变量:@@ + +--选择结构:单分支:if 双分支:if-else, 嵌套if +--if 条件 begin 语句 end + +--循环: while break(跳出循环)、continue(跳出当前循环) +--Oracle: LOOP while...LOOP, FOR..LOOP +--mysql: repeat +--逻辑控制 + +--逻辑控制 case when +--java: switch: case default + +{while:可以通过break和continue控制循环语句中的执行。} + + +冽题: --九九乘法表 : 双层循环 + + declare @i int = 1 + + while @i<=9 + begin + declare @j int = 1 + declare @result varchar(500) = '' + while @j<=@i + begin + --显示 + --不会自动转换类型,需要强转 + --set @result = @result + convert(varchar(2), @i) + ' * ' + convert(varchar(2), @j) + ' = '+ convert(varchar(2),@i*@j) + char(9) + --cast + set @result = @result + cast(@i as varchar(1)) + ' * ' + cast(@j as varchar(1)) + ' = '+ cast(@i*@j as varchar(1)) + char(9) + --控制J变量 + set @j =@j + 1 + end + print @result + set @i = @i + 1 + end \ No newline at end of file