T-SQL学习记录

  1. T-sql是对SQL(structure query language )的升级。可以加函数。
  2. 系统数据库:master管理数据库。model模版数据库,msdb备份等操作需要用到的数据库,tempdb临时数据库。
  3. 用户数据库:用户自己创建。实际上用户创建数据库就是想master这个数据库下面去注册一条信息。
  4. ctrl+alt+delete可以在windows身份认证登录时切换用户。
  5. 建立登录名 use master create login ** password='**'—>创建用户名 use 数据库名 create user ** for login **—>赋予权限 grant select,insert,..。revoke回收。一般都是按角色来赋予权限(数据库权限和服务器权限)
  6. EXEC sp_detach_db @dbname=**分离数据库 。EXEC sp_attach_db @dbname=**,@filename1=**附加数据库
  7. 差异备份的恢复要先在完整备份恢复的前提下才能恢复,而且恢复完整备份时要注意设置选项。
  8. GO代表把上面的代码一起提交服务器执行。
  9. 删除表:先删除子表—>再删除主表
  10. DECLARE @x int 申明x这个整型变量。优先级比较:<> > 算术运算符 > 比较运算符 > 逻辑运算符(not>and >or)> 连接运算符 > 赋值运算符
  11. 先向主表添加数据,再向子表添加数据,删除数据是先向子表删除,再删除主表。
  12. 插入整张表:(1)先建表,insert into 表名(列名) select  列名 from 旧表,(2)直接在插入时创建表,select 列名 into 表名 from 旧表
  13. delete删除可以加where ,删除后标识列不会重置。truncate删除是直接删除整个表,相当于没有where的delete,标识列会重置且占用资源会更少更快,但是不能恢复和还原。
  14. 导入和插入一样,如果表之间有关联,先导主表,后导子表。
  15. 批处理是只指将语句当作一个整体发送执行,以GO为结束标记。GO且要单独成行。在脚本中的事情有一件必选在另一件之前发生或分开发生的时候,就使用批处理。
  16. 字符串函数:charindex('zz','12xzzb',1)返回2:寻找一个指定的字符串在另一个字符串中的起始位置。 len():返回字符串的长度。upper():将字符串改成大写。ltrim()清除字符串左边的空格,rtrim():清除字符串右边的空格,right('ahsnb',3):snb从字符串右边返回3长度的字符,left()刚好相反。replace('天安门','天','地'):地安门:替换一个字符串中的字符。stuff('ASCX',2,1,'v'):AvCX,函数将字符串插入另一字符串。它在第一个字符串中从开始位置删除指定长度的字符;然后将第二个字符串插入第一个字符串的开始位置。
  17. 日期函数:getdate()获得当前时间, dateadd(mm,1,getdate())=当前月份加1.将表示日期或时间间隔的数值与日期中指定的日期部分相加后,得到新值。datediff(yy,'2015-12-1',getdate()):2015-12-1到现在过去了多少年,求两个日期之间的间隔,datename(datepart,date),返回表示指定 date 的指定 datepart 的字符串。datepart(datepert,date):返回一个表示日期的日期部分的整数。
  18. 数学函数和系统函数:rand(),返回0~1之间的随机float数。ceiling(par)返回大于或等于指定数值表达式的最小整数。floor()返回小于或等于指定数值表达式的最大整数。round(expection,length)返回舍入到指定长度或精度的数值表达式。length 参数的取值必须为整数。abs()取绝对值。convert(data_type[(length)],expression[,style]),将一种数据类型的表达式转换为另一种数据类型的表达式。相当于cast(expression as data_type[(length)] )
  19. exists子查询:子判断子查询是否有返回值,如果有就是真,则执行下面的语句,如果否则不执行
    if exists(子查询)          
    begin
    多条语句
    end

     

  20. ALL、ANY、SOME子查询:
    ALL:父查询的列的值必须大于子查询返回结果列表中的每一个值
    ANY:父查询的列的值必须至少大于子查返回结果列表中的一个值
    SOME和ANY是等效的。
    =ANY和IN是等效的   
    <>ANY父查询的列的值只要与子查询结果的一个值不相同。相当于or的意思,父查询中的值<>子查询的A或者<>子查询的B
    not in 相当于and的意思。父查询的<>子查询的A且<>子查询的B

     

posted @ 2016-12-14 17:32  jackche  阅读(235)  评论(0编辑  收藏  举报