2、高级操作
2.1、数据库设计三范式
2.1.1、范式原则:
2.1.2、范式二原则:
2.1.3、连接查询
2.2、表关系
2.2.1、一对多
2.3、示例数据库介绍
2.3.1、账户信息表
2.3.2、银行卡
2.3.3、交易信息表
存钱和取钱的记录
2.3.4、转账信息表
2.3.5、状态信息变化表
2.4、变量
2.4.1信息打印
--信息打印
print 'hello sql' --在消息里显示
select 'hello sql' --在结果里显示
2.4.2、变量
局部变量 declare
set
全局变量
查询张飞卡信息
用变量查询
2.4.3、go语句
万一创建数据库还没完成就执行后边语句,中间加go
--信息打印
print 'hello sql' --在消息里显示
select 'hello sql' --在结果里显示
--变量:(1)局部变量(2)全局变量
--(1)局部变量:以@开头,先声明,再赋值
declare @str varchar(20) --声明变量
set @str='i like a'
print @str
--set和select进行赋值的时候的区别
--set:赋值变量指定的值
--select:一般用于表中查询出的数据赋值给变量,如果查询结果有多条,取最后一条赋值
--exp:select @a=字段名 from 表名
--当前表最后一行的某个字段给@a
--(2)全局变量 : 以@@开头,由系统进行定义和维护
--go语句
--(1) 等待go语句之前代码执行完成之后才能执行后变得代码
--(2)批处理结束的标志
declare @num int --@num作用范围全局
set @num =100
print @num
go
declare @num1 int --num1作用范围在两个go之间,或者go之前
set @num1=300
go
set @num1=200
2.5、运算符
2.5.1、基础
declare @c int =10
declare @k int =2
declare @zc int =5
Convert 数据转换
2.5.2、in 语句
2.5.3、if 语法结构
语法结构:
if
begin
end
else
begin
end
语句
2.5.4、all 语句,所有都
2.5.5any语句 所有里存在
优先级别
2.6、流程控制
2.6.1、选择分支结构
查询语句: case end 判断语句
when then else语句
2.6.2、循环结构
while循环
2.7、子查询
问题一:子查询
top1
等号=改为 in
年月日 SQL语言查询
通过卡号分组,然后计数,查询卡号以及交易次数
temp 子表名称,与1.7、分组查询结合理解
temp是临时起的表名
case 语句
2.8、分页
2.8.1、top方式分页
2.8.2、使用row_number分页
另加一行
2.9、事务
2.10、索引
2.10.1、聚类索引
数据库-视图-系统试图-sys.indexs 查询新建的索引
with语句
2.10.2、非聚类索引
2.11、视图
2.12、游标
提取游标信息存到变量
删除游标指向行
2.13、函数
创建函数调用
有参数返回i
返回表格数据 方案一:除了SQL查询语句还有其它逻辑语句,方案二不行
查询数据 插入到@result
我的理解是:GO相当于一个.sql文件的结束标记
方案二:简化
另一种问题
2.14触发器
trigger 触发器
产生的临时表 inserted
产生的临时表 deleted,,在哪个表创建触发事件
chaungjianyige触发器,删除一个部门的时候判断部门是否有员工,有则不删除,没有则删除
新的编号等于插入的编号,旧的编号等于删除的编号
2.15、存储过程
封装成存储过程: 可以被外部调用
procedure 存储过程
存钱:有输入参数
有输入参数,返回值:
拼接字符串 '00:00:00' '23:59:59'
调用
变量 跟output 判断其是输入还是输出,看其生命时候是否赋值,赋值了为输入输出
下面BandCard 应为 BankCard
调用
仔细看看存储过程