zoukankan      html  css  js  c++  java
  • T-SQL高级查询

    一:在查询中使用函数

    函数分类:系统函数、字符串函数、日期函数、聚合函数与分组查询、数学函数、函数综合应用

    1、 系统函数:

    a) 系统函数用来获取有关SQL server中对象和设置的系统信息

    系统函数

    Convert( )

    数据类型转换

    Cast( )

    数据类型转换,比convert语法简单,功能少

    Current_user( )

    返回当前登录的数据库用户名

    Datalength( )

    返回用于指定表达式的字节数

    Host_name( )

    返回当前用户所登录的计算机的名称

    System_user( )

    返回当前登录的系统用户名

    User_name( )

    从给定的用户ID中返回数据库用户名

    2、 字符串函数

    a) 字符串函数用户控制返回给用户的字符串,仅用于字符型数据

    b) 几乎所有信息都需要转换为字符串才能正确显示

    c) 字符串拼接:两个字符串之间使用“+”即可

    字符串函数

    Charindex( )

    用来寻找一个指定的字符串在另一个字符串中的起始位置

    Len( )

    返回传递给他的字符串的长度

    Upper( )

    把传递给它的字符串转换为大写

    Ltrim( )

    清除字符左边的空格

    Rtrim( )

    清除字符右边的空格

    Right( )

    从字符串右边返回指定数目的字符

    Replace( )

    替换一个字符串中的字符

    Stuff( )

    在一个字符串中,删除指定位置指定长度的字符串,并在该位置插入一个新的字符串

    3、 日期函数

    a) 不能直接对日期运用数学函数,需要使用日期函数操作日期值

    b) 日期函数帮助提取日期之中的日、月、年,以便分别操作它们

    c) 手动输入日期时,必须要使用英文单引号,且必须书写成标准日期格式

    d) 标准日期格式:”YYYY-MM-DD  HH:MM:SS” ”YYYY-MM-DD”

    e) SQL server 系统默认会将字符串转换成日期类型

    Getdate( )

    取得当前的系统日期

    Dateadd( )

    添加指定的年(YY)、月(MM)、日(DD)

    Datediff( )

    比较两个日期之间的指定日期部分的差

    Datename( )

    显示指定日期中特定部分的字符串

    Datepart( )

    显示日期中指定日期部分的整数形式

    4、 聚合函数与分组查询

    a) 聚合函数能够基于列进行计算,并返回单个值

    b) 分组查询:将查询结果按条件分组,然后使用聚合函数返回每个组的汇总信息

    c) 聚合函数:

    1. 常用的聚合函数有SUM( )AVG( )MAX( )MIN( )COUNT( )
      1. SUM( ):返回表达式中所有数值的总和
      2. AVG( ):返回表达式中所有数值的平均值
      3. MAX( ):返回表达式中的最大值,可用于数字型、字符型、日期/时间类型
      4. MIX( ):返回表达式中的最小值,可用于数字型、字符型、日期/时间类型
      5. COUNT( ):返回表达式中非空值的计数,用于数字和字符类型的列

    d) 分组查询:

    1. 将表中的数据通过GROUP BY 子句分类组合,再根据需要得到统计信息。
    2. 如果需要对分组结果进行筛选,只显示满足限定条件的组,需要使用HAVING子句
    3. GROUP BY子句中使用HAVING子句时,查询结果只返回满足HAVING条件的组
    4. HAVING子句和WHERE子句的区别
      1. Where子句的作用是在对查询结果进行分组前,条件中不能包含聚合函数
      2. Having子句的作用是在分组之后筛选满足条件的组,
      3. where和having同在一个select语句中时,执行顺序为:where——group by——having

    5、 数学函数

    a) 数学函数用于对数值进行代数运算

    数学函数

    Abs( )

    取绝对值

    Ceiling( )

    取大于或等于指定数值、表达式的最小整数

    Floor( )

    取小于或等于指定表达式的最大值

    Fower( )

    取数值表达式的幂值

    Round( )

    将数值表达式四舍五入为指定精度

    Sign( )

    对于正数返回+1,负数返回-1,0返回0

    Sqrt( )

    取浮点表达式的平方根。

    二:使用T-SQL实现多表查询

    如果一个查询需要对多个表进行操作,就称为联接查询

    联接查询的结果集或结果称为表之间的联接

    1、 表联接类型

    分为内联接、外联接、交叉联接

    a) 内联接

    1. 只返回两个数据集合之间匹配关系的行,将位于两个互相交叉的数据集合中重叠部分以内的数据行联接起来
    2. 使用比较运算符进行表间某列数据的比较操作,并列出这些表中与联接相匹配的数据行

    b) 外联接

    1. 对内联接的扩充,除了将两个数据集合中重复部分以内的数据行联接起来之外,还可以根据要求返回左侧或右侧表中非匹配的数据或全部数据
    2. 外联接分为:左外联接、右外联接、全联接/完整外联接
      1. 左外联接

    a) 左外连接的结果集包括左表的所有行。

    b) 如果左表的某一行在右表中没有匹配行,则右表返回空值,否则返回相应值。

    1. 右外联接

    a) 右外联接是左外联接的反向联接,将返回右表的所有行

    b) 如果右表的某一行在左表中没有匹配行,则左表返回空值,否则返回相应值

    1. 全联接/完整外联接

    a) 将返回左表和右表的所有行。

    b) 当有一行在另一个表中没有匹配行时,另一个表返回空值,否则返回相应值

    c) 交叉联接

    1. 交叉联接就是表之间没有任何关联条件,查询将返回左表和右表挨个联接的所有行
    2. 就是左表中的每行与右表中的所有行再一一组合,相当于两个表“相乘”
  • 相关阅读:
    自定义input标签输入框
    sys.argv 启动时可以传入变量
    falcon 监控
    wrk 压测工具
    mysql UPDATE和REPLACE
    tesseract识别图片中文字
    centos 查看日志 & 查找文件、目录、内容 & centos查看磁盘使用情况
    压力测试
    tensorflow + scikit-learn
    Pycharm快捷键配置
  • 原文地址:https://www.cnblogs.com/ccshi/p/13140399.html
Copyright © 2011-2022 走看看