适合小白的SQL Server学习笔记

  1. 升序ASC  降序DESC
  2. 统计某个字段count(字段),一般都需要根据该字段分组group by(字段)
  3. having的作用相当于where,但是where关键字不能与合计函数一起使用(例:sum、count  ),并且having一般用于group by后面,where用于group by前面。
  4. exists 、not exists 和in、not in的区别:in和not in会放弃索引,导致in中条件每一次查询都会走一遍全局搜索,exists子句返回boolean值,要求两张表有关联才可以,外表查出的每条数据与内表条件进行比较,如果满足,则输出该条查询结果。
  5. Stuff函数:用于修改某个字段特定位置的值(例:stuff(eeid,2,1,’521’))修改字段eeid,从第二位开始,删除一位,改为521。Left函数:left(source,num)返回左起num个字符。charindex()函数:返回字符串中某个指定的子串出现的开始位置,初始位置记为1,charindex(指定字符串,原始字符串)。
  6. Convert函数:把日期转换成新数据类型的通用函数,可以用不同的格式进行展示(例:convert(varchar(20),date,110))110就是要转换成的数据格式,需要什么格式自行查询格式代码。
  7. substring函数:截取某字段固定长度(例:substring(eename,2,5))截取eename字段第二位到第五位的数据。
  8. 改变表中的列: alter table table _name ADD(新增)/DROP(删除)/ALTER(修改) column column_name datatype
  9. 获取当前日期GETDATE()
  10. 获取年YEAR(日期数据或字段)
  11. 连接相同的表时,需要给该表起一个别名
  12. Sql server同义词:可以让跨数据查询的sql语句更简洁。创建同义词语法:create synonym xxx FOR 数据库.表名,使用:select * from xxx;(使用同义词代替其他数据库中的表名)
  13. 使用Nvarchar()数据类型不用担心输入的字符是汉字还是英文,统一使用unicode字符集编码,解决了中英文同时存在时造成混乱的问题,每个字符占两个字节,最多存储4000个字符,varchar最多存储4000个英文或者8000个中文。
  14. 建表时写Identity(1,1),表示该列为自增列,从1开始累加,每次加1。
  15. 使用大值类型varchar(max)、nvarchar(max)来代替text、ntext,因为大值类型在行为上拥有varchar所有的行为,在存储上和text一样大~~~~~何乐而不为呢,hiahiahia
  16. case函数:

       简单case表达式:

case xxx

when ...then ... 

else ...

end

case搜索表达式:

case

when xxx=xxx then ...

else ...

end

区别:简单case函数简洁,只适用于单字段单值比较,case搜索函数适用于所有比较(包括多值比较)

    17. 内联表值函数和标量值函数:

         (1)内联表值函数返回的是表,标量值函数返回的是基类型。

         (2)内联表值函数没有函数主体,表是单个select语句的结果集,标量值函数需要用begin...end将函数主体包起来。

         (3)内联表值函数不需要指定所有者,可以将其理解为一张单独的表,标量值函数需要指定所有者,例:dob.biaoliang_name。

18. WITH AS关键字:

         (1) with as短语,也叫做子查询部分,定义一个sql片段,该sql片段会被整个SQL语句用到。

         (2)如果with as短语定义的表名被调用两次以上,则优化器会自动将短语所获取的数据放入一个全局临时表中,若只被调用一次则不会。

         (3)语法:

               ;with

               my_name

               as(子查询生成的表)

19.if else条件表达式:

           即:简单的条件表达式,语法如下

            if xxx...

            BEGIN

            .....(代码块)

            END

            ELSE(注意这里没有ELSE IF,要实现只能在下面继续用IF做判断)

            BEGIN

            ......(代码块)

            END

 20. 将一张表中的数据插入另一张表可以直接使用如下语句

           insert into 目标表 

        (可以直接使用select语句,从数据表查询对应字段的数据)

21.存储过程

         存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它,即:使用execute来执行存储过程。存储过程可以加速SQL语句的执行,并且存储过程的返回值只是指明执行是否成功。存储过程是数据库层次的东西,一般我们在程序中使用sql语句都会在DBMS中经过编译运行,而存储过程是经过预编译的,因此执行速度更快。而且相比较把数据库相关的操作放到数据库中要比直接放到页面中“安全”。

22.ISNULL函数:

        ISNULL(value1,value2)   如果value1为NULL结果返回value2的值,如果value1不为NULL返回value1的值。

23.LTRIM函数:

        移除字符串左侧的空白字符或其他预定义字符,同理RTRIM移除右侧的。

24.raiserror函数:

        用于抛出一个异常或错误,这个错误可以被程序捕捉到。

        常用参数配置:

        raiserror(param1,param2,param3,param4)

       param1:错误信息号(大于50000)或一条直接的错误描述。

       param2:错误信息级别,用数字表示

       param3:state,标识符,用数字1~127表示,用来标识错误的发生位置。

       param4:如果param1中包含一些替代符(例如%s),param4就是替代符的具体值。

       示范:set @error_mes='这里是用户%s引发的错误描述'

                 raiserror(@error_mes,16,1,'张三')

25.charindex函数:

       使用方法:charindex(value1,value2),判断value2在value1中第一次出现的位置,如果不存在返回0。

26.使用like存在多个条件时:

普通写法:like ' %xxx '   (匹配以xxx开头的值)

多个条件:like ' %[param1 | param2 | param3] '  (匹配以param1或param2或param3开头的值)

27.SUBSTRING函数用来截取字段

其有三个参数(1.要截取的字段或值,2.开始位置,3.结束位置)

28.向查询结果中添加自定义字段

使用 select  '实际值' as '字段名' 的形式,其中可以使用case when表达式给实际值赋值。

29.DATEADD函数(简单的日期加减操作函数):

三个参数:

(1)操作的位置(日期,年份,月份)

(2)操作的数值(增加或者减少)

(3)初始日期

30.REPLACE函数(简单的字符串替换函数):

三个参数:

(1)操作的数据源

(2)要替换的字符串

(3)要替换成的字符串

31.SqlServer中将查询结果拼接成字符串:

for xml path(param)--将查询结果以xml格式输出,path后面没有参数时,每行数据被默认<row>标签包裹,每行列数据被被其列名标签包裹,可以设置path的值为('  '),并且在每个字段后面+‘  ’就可以去掉标签。

32.触发器

关键字如下

for:操作前触发

after:操作后触发

instead of:将操作替换成触发器中的sql脚本

创建语句:

create trigger chufa_name on table_name 

xxx(关键字) of (insert/update/delete)   ------当使用for或after关键字时of省略不写

as

begin 

xxx(触发时需要执行的操作)

end

触发器中怎么判断是insert、update还是delete操作?

sql server中自带两种表:Inserted、Deleted表

Inserted表:当执行插入或更新操作时,新建行被同时添加到Inserted表中。

Deleted表:当执行删除操作时,删除行被添加到Deleted表中。

33.视图:

(1)使用视图,可以定制用户数据,聚焦特定的数据。

(2)可以简化数据操作

(3)视图是动态的数据的集合,数据随着基表的更新而更新,且视图是虚拟的,物理上不存在,用户不可以随意更改或删除。

(4)创建视图的语句:

create  view  view_name

as 

xxx(此处的xxx可以是select语句,将查询出的数据生成视图)

go

34.set和select给变量赋值的区别:

(1)同时给多个变量赋值时,set使用,间隔会报错,select则不会。

(2)表达式返回多个值时,set会报错,select会返回表达式返回的最后一个值,

(3)表达式未返回值时,set会给变量赋值为null,而select会保留变量的初始值。(注意:当表达式是标量子查询时,如果查询结果为null,select也会给变量赋值为null)

(4)标量子查询:查询的表来自标量函数。

35.若要返回表结构数据,使用select,若要返回字符串,直接使用Print

 

 

 

 

 

       

       

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值