MS SQl学习笔记

主键选择

SQl SERVER 中两种常用的主键数据类型:①、int(或者bigint)+标识列(又称自动增长字段);②、uniqueidentifer(又称Guid,UUID)

用标识列实现字段自增可以避免并发等问题,不要开发人员控制自增,用标识列的字段在Insert的时候不用指定主键的值。

Guid算法是一种可以产生唯一标识的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID码等计算出来的,这样保证每次生成的GUID永远不会重复,无论是同一个计算机上还是不同的计算机

int自增字段的优点:占用空间小,无需开发人员干预,易读;缺点:效率地。数据导入导出的时候很痛苦

Guid的优点:效率高,数据导入导出方便;缺点:占用空间大,不易读

业界主流倾向于使用Guid


附:GUID产生方法:

SQLServer产生GUID:用newid(),示例:select newid()

C#产生GUID:Guid  id = Guid.NewGuid();


创建Create Table

增加 Insert

删delete 

删除表Drop

改Update set

修改表Alter

查select(万能的Select)


聚合函数:Sum(),count(),Max(),Min(),Avg()


排序Order By (放在where语句之后) DESC(降序) ASC(升序)


通配符(模糊匹配):Like 单字符匹配的通配符为半角下划线"_",多字符匹配符为半角百分号"%",匹配任意次数(零个或多个)出现的任意字符


空值处理:一个列如果没有指定值,那么值就为null,这个值,在数据库中表示“不知道”,而不是表示没有。

SQL中使用is null ,is not null来判断是否为空


多值匹配:select * from Table where Some in ();   and 


数据分组Group by(必须放在Where语句之后)

没有出现在Group by子句中的列是不能放到Select语句后的列名列表中的(聚合函数除外)


Having子句

  在Where子句中不能使用聚合函数,必须使用Having,Having要位于Group by之后

注意:Having中不能使用未参数分组的列,Having不能替代Where。作用不一样,Having是对分组后信息进行过滤,能用的列和Select中能用的列是一样的。


限制结果集的行数

top: 前几个


去掉数据重复

distinct消除完全重复的数据


联合结果集:

基本原则:每个结果集必须有相同的列数(可以补足没有的列);每个结果集的列必须类型相容。

Union合并两个查询结果集,并且将其中完全重复的数据合并为一条,Union ALL不合并重复数据


数据库函数:

数字函数ABS()求绝对值,CEILING()舍入到最大整数,FLOOR()舍入到最小整数,ROUND()四舍五入


字符串函数:

len、lower、upper、rtrim、ltrim、substring


日期函数

getdate、dateadd、dateaiff、datepart


类型转换函数:

cast、convert、select 、fidnumber、 right 


isnull函数,case函数


索引:

可以为经常在Where语句使用的字段建立索引,在字段查询时速度很快

全表扫描:对数据进行检索(select)效率最差的是全表扫描,就是一条条的找。

如果没有目录,查汉语字典就要一页页的翻,而有了目录只要查询目录即可。为了提高检索的速度,可以为经常进行检索的列添加索引,相当于创建目录。

创建索引的方式,在表设计器中点击右键,选择“索引/键”→添加→在列中选择索引包含的列。

使用索引能提高查询效率,但是索引也是占据空间的,而且添加、更新、删除数据的时候也需要同步更新索引,因此会降低Insert、Update、Delete的速度。只在经常检索的字段(Where语句)上创建索引。即使创建了索引,仍然有可能全表扫描,比如:like、函数、类型转换等。


表的连接Join

Inner Join,Left Join,Right Join


子查询:

将一个查询语句作为一个结果集提供其他SQL语句使用,就像使用普通的表一样,被当做结果集的查询语句被称为子查询。所有可以使用表的地方几乎都可以使用子查询来代替。

只有返回且仅返回一行。一列数据的子查询才能当成单值子查询。

如果子查询是多行单列的子查询,这样的子查询的结果其实是一个集合。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值