文章目录
SQL总结
字符串函数
charindex 寻找一个指定字符串在另一个字符串的指定位置
返回唯一不同的值
关键字 Distinct
三大范式
第一范式(1FN)
字段不可分;
原子性。 字段不可再分,否则就不是关系数据库;;
第二范式(2FN)
有主键,非主键字段要依赖主键;
唯一性 。一个表只说明一个事物;
2NF对记录的惟一性,要求记录有惟一标识,即实体的惟一性,即不存在部分依赖;
第三范式(3FN)
非主键字段不能相互依赖。
每列都与主键有直接关系,不存在传递依赖。
3NF是对字段的冗余性,要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖;
数据冗余:有重复值;
更新异常:有重复的冗余信息,修改时需要同时修改多条记录,否则会出现数据不一致的情况 。
四、反范式化
一般说来,数据库只需满足第三范式(3NF)就行了。
没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余,达到以空间换时间的目的。
视图:
降低查询复杂度
视图的具体用法:
保存一句查询语句
语法:
Create view v_视图名
As
保存的语句
Select * from v_视图1
索引:
索引的好处:
降低了检索数据所需要的时间,加快了检索数据的性能
索引的坏处:
加大了存储的成本(开销)
降低了增删改处理数据的性能(变慢)
要不要用?
提升了用户体验(检索数据的体验)
提升了90%以上的操作空间。
索引种类:
唯一索引
a.创建唯一约束的时候生成的索引
主键索引
a.创建主键时生成的索引(聚集)
聚集索引
a.聚集索引的数据本身是有序的,
b.一张表只能有一个聚集索引
非聚集索引
a.非聚集索引可以有多个(表的列数上限)
复合索引
全文检索
什么时候需要自己建立索引
a.频繁查询条件时某个非主键且非唯一的列
b.查询时性能较低(数据过大)(1000W级别的数据)
i.分库分表
事务:
用途:
当某个功能需要同时执行增,删,改,至少2条语句时
启动事务Begin tran
提交事务Commit tran
回滚事务Rollback tran
存储过程方法
语法:
Create proc up_moveMoney
–参数列表
As Begin
–方法体
End
存储过程的返回数据需要select语句支持
(一个存储过程可以select多个结果)
存储过程的return value 指的是错误号,只能返回整数
Output 输出参数 --》C# out关键字