1.在my.ini的 [mysqld] 下添加 skip-grant-tables

介绍

  对于任何人而言,用T-SQL语句来写聚会查询都是工作中重要的一环。我们大家也都很熟悉GROUP
BY子句来实现聚合表达式,但是如果打算在一个结果集中包含多种不同的汇总结果,可能会比较麻烦。我将举例展示给大家使用GROUPING
SETS操作符来完成这个“混合的结果集”。

  或许当我们在打算分析较大规模的数据集时,不知道从何下手,此时处理这种情况最好的方式就是汇总数据,快速的得到一个数据预览。

在T-SQL中,使用GROUP
BY子句在一个聚合查询中来汇总需要的数据。这个子句由一组表达式定义的分组构成。结果集中每一行返回GROUP
BY
子句中表达式的唯一值或者组合,并且聚合函数,像COUNT或者SUM等可以对查询中的任何行进行聚合。但是,如果你想要多种不同组合的聚合时,一般有两种方式:

  1.将不懂组合聚合的结果集UNIONALL在一起。

  2.使用 GROUPING
SETS
操作符,结合GROUP BY一起在一个语句中实现。

 

本文中,我会展示如何使用GROUPING SETS来实现这一目的。

  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
    

     

2.重启mysql服务即可

准备数据集

本文中所有的查询都使用AdventureWorks2012
数据库中的数据,这里提供一个下载地址方便使用(AdventureWorks2012)

发表评论

电子邮件地址不会被公开。 必填项已用*标注