C#学习笔记20240711

类型转换函数

convert函数:convert(类型(长度),表达式)
cast函数:cast(表达式as类型)

select 1+2 --求和
select'a'+'b' --拼接
select'cbd'+convert(varchar,2) --把数字转换成字符串,拼接
select convert(varchar(10),getdate(),100) -- 日期格式
select cast('2019-11-13 00:00:00:000' as varchar(20))
select'cbd'+cast(2 as varchar) --要转换成的目标数据类型

字符串操作函数

--返回字符串中指定的子串出现的开始位置
select CHARINDEX('bc','abcdbc') --2 索引从1开始

--返回字符串中指定的子串出现的开始位置 子串前后必须带%
select PATINDEX('%bc%','abcdbc') --2

--大小写转换
select upper('ABCdefg') --ABCDEFG
select lower('ABCDEF') --abcdef

--取长度
select len('ABC')

--去空格
select LTRIM('        dbcd      ') --'dbcd       '去掉左边的空格
select RTRIM('        dbcd      ')--'         dbcd' 去掉右边的空格 

--取子串
select LEFT('dbcddfeef',4)--dbcd 返回字符串从左边起4个字符
select RIGHT('dbcddfeef',6)--ddfeef 返回字符串从打开边起6个字符
select SUBSTRING('dbcddfeef',3,4)--cddf 返回字符串从左边起第3个开始,取4个字符

-- 将指定字符串重复4次后生成的字符串
select REPLICATE('abc',4)--abcabcabcabc

--字符串翻转
select REVERSE('abcdefg')--gfedcba

--字符串替换
select REPLACE('abcdefg','cd','ss')--abssefg
 
 --用指定子串替换指定位置指定长度的子串后生成的字符串
select STUFF('abcdefg',2,3,'tt')--attefg

索引

索引的介绍
  • 索引的作用:数据的查询 处理速度 —应用系统成败的标准。 最普遍—优化方式
  • 索引是什么?一本书 目录 查找
  • 索引—目录,快速的定位我们要查找的数据,而不必去扫描整个表—从而可以加快我们查询的速度—提高系统的性能。
  • 索引有缺点:占用存储空间,索引并不是越多越好,索引并不总是能提高系统性能的。
  • 索引的目的:可以更加快速高效地查询数据,减少系统的响应时间。
  • 索引分为 聚集索引(如主键索引) 非聚集索引(如唯一索引)

聚集索引:Clustered 逻辑顺序与物理顺序是一致的 最多只能有一个,可以没有

非聚集索引:NonClustered 逻辑顺序与物理顺序是并不一致的 一个表可以用多个,也可以没有

非聚集索引比聚集索引 效率低

如果需要多个列上建立索引,这些列建立组合索引。
列:小数据类型的, 访问速度特别快。

索引是看不见的,但是如果你创建了索引,在查询大数据的时候,它的优势就是显而易见的。

脚本创建索引

drop_existing = on
先检查是否存在名称为PK_ProductInfo的索引,则先删除再创建,
如果已存在,则创建成功。
如果不存在,执行时直接报错。
drop_existing = off
不检查是否存在名称为PK_ProductInfo的索引,直接创建,
如果已存在,执行时直接报错。
如果不存在,则创建成功。

--默认非聚集
--聚集 主键索引
create clustered index PK_UserInfos
on UserInfos(UserId)
with
(
drop_existing=on  
)

--唯一非聚集索引
create unique nonclustered index uq_UserInfos
on UserInfos(UserName)
with
(
pad_index=on, --当设置fillfactor才有用
fillfactor=50, --指定创建索引时,每个索引页的数据占索引页大小的百分比
ignore_dup_key=on--fillfactor:
//读写比:100:1  100
//读写比:50:50   80~90
//读<写    50~70

--复合索引:多个列上建立的索引 
create nonclustered index Index_UserInfos
on UserInfos(UserName,DeptId)
with
(
drop_existing=off

视图

视图的介绍
  • 视图:虚拟表 由一个或多个表通过查询而定义的 将查询定义保存起来,实际不包括数据
  • 与表的区别:表存储数据的地方,视图存储的是查询语句(索引视图除外,具体化了)
  • 作用:简化查询 增加数据的保密性 安全性上得到保证
  • 缺点:只是简化查询,并不提高查询速度 增加了维护成本
  • 分类:标准视图:存储查询定义 没有存储数据
    索引视图(被具体化了的,创建了索引,显著提高查询性能,聚合了很多行的查询,不太适合经常更新基本数据集)
    分区视图:一台或多台服务器间水平连接一组成员表的分区数据
脚本创建视图
创建标准视图

语法:

            create view 视图名称
            as
                T-SQL查询语句
--标准视图
create view vUserInfosNew
as
--T-SQL查询语句
select UserId,UserName,u.DeptId,DeptName
from UserInfos u
inner join DeptInfos d
on d.DeptId=u.DeptId

--使用视图  就和使用表一样
select * from vUserInfosNew
where DeptId>1
order by UserId desc

--索引视图   适合于聚合多行数据的情况下
--数据是实际存在,删除视图里的数据,基础表里的数据也被删除
--索引视图不要去删除修改数据

--*不可以出现   必须写字段名,表名前面要加所有者 dbo
create view vUserInfos_Index with schemabinding
as
select UserId,UserName,Age from dbo.UserInfos

--使用
select * from vUserInfos_Index

--索引视图创建唯一聚集索引
create unique clustered index uq_vUserInfos_Index
on vUserInfos_Index(UserId)

--分区视图
create view vTestInfos
as
select * from Test
union all //允许重复
select * from Test3

--使用视图
select * from vTestInfos


标准视图与分区视图 都不允许删除修改里面的数据,会影响基础表
索引视图 删除了,对应的基础表数据也被删除了,慎用。

SQL Server数据库基础:视图介绍、用脚本创建和调用视图

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值