SQL SERVER的温习

SQL SERVER介绍:
SQL Server 是作为一个服务器的数据库系统使用的,并非桌面系统,比如 MS Access。SQL Server 被设计为在中央服务器上运行(或服务器),使多个使用者可以同时访问相同的数据;用户通常通过应用程序访问数据库。
例如,一个网页可以存储在数据库中的所有内容。当访问者浏览的文章,他们从数据库中检索数据。一个网站服务的对象达到了数百,甚至数千的访客。同时,还得满足其他用户可以更新他们的个人资料,会员区,还能订阅新闻简报或其他任何网站的用户操作。所以有很多用户都是同时读取和更新数据库的,那么一个良好的,强大的数据库系统满足这种类型的用法。毕竟,你
. 不希望你的数据库锁定,因为太多用户试图访问它,或者更糟的是,你不会希望在你的数据库,由于电线损坏而致数据获取不到。
数据库管理工具
SQL Server 通过一些工具来管理数据库和编程任务。
以下是一些典型的数据库管理和编程任务,包括:
• 创建和维护数据库
• 创建和维护表
• 创建和维护其他数据库对象,如存储过程,视图等
• 创建和维护和调度数据备份
• 复制(例如,创建数据库的副本)
• 创建和维护用户,角色等
• 优化任务
SQL Server 为数据库管理员(DBA)提供上述的几种方法来执行日常任务。

数据查询:
数据库表是存储数据库中所有数据的对象。 在表中,数据按行和列格式逻辑组织,类似于电子表格 (Excel) 在表中,每行代表一个唯一记录,每列代表记录中的一个字段。但是,要注意在处理SELECT语句时,SQL Server首先处理 FROM 子句,然后处理 SELECT 子句,即使SELECT子句首先出 现在查询中也是一样。

对数据进行排序
使用 SELECT 语句从表中查询数据时,不保证结果集中的行顺序。 这意味着SQL Server可以返回具有未 指定行顺序的结果集。 保证结果集中的行已排序的方法是使用 ORER BY 子句。
ASC | DESC - 使用 ASC 或 DESC 指定是否应按升序或降序对指定列中的值进行排序。 ASC 将结果 从最低值排序到最高值,而 DESC 将结果集从最高值排序到最低值。如果未明确指定 ASC 或 DESC ,则SQL Server将默认使用 ASC 来排序顺序。 此外,SQL Server将 NULL 视为最低值。 处理具有 ORDER BY 子句的 SELECT 语句时, ORDER BY 子句是要处理的最后一个子句。

限制返回行数

  1. SQL Server Select Top语句 SELECT TOP 子句用于限制查询结果集中返回的行数或行百分比。 由于存储在表中的行的顺序是不可预测的,因此 SELECT TOP 语句始终与 ORDER BY 子句一起使用。 结 果,结果集限于前 N 个有序行数。
    在语法中, SELECT 语句可以包含其他子句,如: WHERE , JOIN , HAVING 和 GROUP BY 。 expression - TOP 关键字后面是一个表达式,它指定要返回的行数。 如果使用 PERCENT ,则将 表达式计算为浮点值,否则将其转换为 BIGINT 值。 PERCENT - PERCENT 关键字指示查询返回前 N 个行百分比,其中 N 是表达式的结果。 WITH TIES - WITH TIES 用于返回更多行,其值与有限结果集中的最后一行匹配。 请注意, WITH TIES 可能会导致返回的行数多于在表达式中指定的行数。
  2. SQL Server Offset Fetch子句 OFFSET 和 FETCH 子句是 ORDER BY 子句的选项。 它们用于限制查询返回的行数。必须将 OFFSET 和 FETCH 子句与 ORDER BY 子句一起使用 OFFSET 和 FETCH 子句比实现 TOP 子句更适合实现查询分页解决方案
    在OFFSET 子句指定在开始从查询返回行之前要跳过的行数。 offset_row_count 可以是大于或等于 零的常量,变量或参数。 FETCH 子句指定在处理 OFFSET 子句后要返回的行数。 offset_row_count 可以是大于或等于 1 的 常量,变量或标量。 OFFSET 子句是必需的,而 FETCH 子句是可选的。 此外, FIRST 和 NEXT 是同义词,因此可以互换 使用它们。

过滤数据

  1. Select Distinct子句: SELECT DISTINCT 子句检索指定列列表中的唯一不同值,换句话说,它从结果集中删除列中的重复值。 DISTINCT 子句将所有 NULL 值视为相同的值
  2. SQL Server WHERE子句 :要从表中获取满足一行或多个条件的行,请使用 WHERE 子句,如下所示: SELECT DISTINCT column_name1, column_name2 , … FROM table_name; 1 2 3 4 5 6 SELECT city FROM sales.customers ORDER BY city; 1 2 3 4 5 6 SELECT DISTINCT city, state FROM sales.customers 1 2 3 4 5 SELECT DISTINCT phone FROM sales.customers ORDER BY phone; 1 2 3 4 5 6 在 WHERE 子句中,指定搜索条件以过滤 FROM 子句返回的行。 WHERE 子句仅返回导致搜索条件计算为 TRUE 的行。搜索条件是逻辑表达式 或多个逻辑表达式的组合
  3. AND 查找满足两个条件的行: AND 是一个逻辑运算符,用于组合两个布尔表达式。它使用逻辑运算符 AND 来组合这两个条件
  4. (>,=,<)使用比较运算符查找行;
  5. OR 查找满足两个条件中的任何一个的行 :OR 是一个逻辑运算符,用于组合两个布尔表达式 在语句中使用多个逻辑运算符时,SQL Server将在 AND 运算符之后计算 OR 运算符。 但是,可以使用括号更改评估顺序。
  6. Between查找具有两个值之间的值的行: BETWEEN 运算符是一个逻辑运算符,用于指定要测试值的范围;①可以使用大于或等于( >= )且小于或等于( <= )来替换 BETWEEN 运算符②使用 BETWEEN 运算符的条件比使用比较运算符 >= , <= 和逻辑运算符AND的条件更具可读性③要取消 BETWEEN 运算符的结果,请使用 NOT BETWEEN 运算符
  7. IN 查找值列表中具有值的行: IN 运算符是一个逻辑运算符 IN 运算符等效于多个 OR 运算符,要取消 IN 运算符,请使用 NOT IN 运算符
  8. Like 查找其值包含字符串的行:pattern 模式是要在列或表达式中搜索的字符序列。它可以包含以下有效通配符: 通配符百分比( % ):任何零个或多个字符的字符串。 下划线( _ )通配符:任何单个字符。 [list of characters] 通配符:指定集合中的任何单个字符。 [character-character] :指定范围内的任何单个字符。 [^] :不在列表或范围内的任何单个字符。 通配符使 LIKE 运算符比等于( = )和不等于( != )字符串比较运算符更灵活。 转义符 转义字符指示 LIKE 运算符将通配符视为常规字符。转义字符没有默认值,必须仅计算为一个字符。
  9. 列和表别名: SQL 别名用于为 表 或 表中的列 提供临时名称。 SQL 别名通常用于使 表名 或 列名 更具可读性。 SQL 一个别名只存在于查询期间。 别名使用 AS 关键字赋予。 建议在下列情况下使用别名 查询涉及多个表 用于查询函数 需要把两个或更多的列放在一起 列名长或可读性差

连接表:
在关系数据库中,数据分布在多个逻辑表中。 要获得完整有意义的数据集,需要使用连接来查询这些表 中的数据。 SQL Server支持多种 连接,包括 [内连接],[左连接],[右连接],[全外连接]和[交叉连接]。 每种连接类型指定SQL Server如 何使用一个表中的数据来选择另一个表中的行

  1. SQL Server内连接: 内连接是SQL Server中最常用的连接之一。 内部联接子句用于查询来自两个或多个相关表的数据。
  2. SQL Server左连接: LEFT JOIN 子句用于查询来自多个表的数据。它返回左表中的所有行和右表中的匹配行。 如果在右表中找不到匹配的行,则使用 NULL 代替显示
  3. ON与WHERE子句:对于 INNER JOIN 子句,如果将 ON 子句中的条件放在 WHERE 子句中,则它在功能上是等效的
  4. SQL Server右连接 RIGHT JOIN 子句组合来自两个或多个表的数据。 RIGHT JOIN 开始从右表中选择数据并与左表中的行 匹配。 RIGHT JOIN 返回一个结果集,该结果集包含右表中的所有行,无论是否具有左表中的匹配行。 如果右表中的行没有来自右表的任何匹配行,则结果集中右表的列将使用 NULL 值。
  5. SQL Server 交叉连接 CROSS JOIN 连接两个或多个不相关的表。交叉连接返回 两个表中行的笛卡尔积。 与INNER JOIN或LEFT JOIN不同,交叉连接不会在连接的表之间建立关系。
  6. SQL Server自连接 自联接用于将表连接到自身(同一个表)。 它对于查询分层数据或比较同一个表中的行很有用。 自联接使用内连接或左连接子句。 由于使用自联接的查询引用同一个表,因此表别名用于为查询中的表 分配不同的名称。 请注意,如果在不使用表别名的情况下在查询中多次引用同一个表,则会出现错误
  7. SQL Server全外链接? FULL OUTER JOIN当左表或右表中存在匹配项时,该命令将返回所有行。

分组数据

  1. SQL Server Group By语句:Group By 从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集” 划分成若干个“小区域”,然后针 对若干个“小区域”进行数据处理
  2. GROUP BY子句和聚合函数 GROUP BY 子句通常与聚合函数一起用于统计数据。 聚合函数对组执行计算并返回每个组的唯一值。 例如, COUNT() 函数返回每个组中的行数。 其他常用的聚合函数是: SUM() , AVG() , MIN() , MAX() 。 GROUP BY 子句将行排列成组,聚合函数返回每个组的统计量(总数量,最小值,最大值,平均值,总和 等)。
  3. SQL Server Having子句 HAVING 子句通常与[GROUP BY]子句一起使用,以根据指定的条件列表过滤分组。

SQL Server子查询

  1. SQL Server子查询 子查询是嵌套在另一个语句(如:[SELECT],[INSERT],[UPDATE]或[DELETE])中的查询。
  2. 嵌套子查询 子查询可以嵌套在另一个子查询中。 SQL Server最多支持 32 个嵌套级别。
  3. SQL Server相关子查询 相关子查询是使用外部查询的值的[子查询]。 换句话说,它取决于外部查询的值。 由于这种依赖性,相 关子查询不能作为简单子查询独立执行。 此外,对外部查询评估的每一行重复执行一次相关子查询。 相关子查询也称为重复子查询。
  4. SQL Server Exists运算符 EXISTS 运算符是一个逻辑运算符,用于检查子查询是否返回任何行。 如果子查询返回一行或多行,则 EXISTS 运算符返回 TRUE 。要注意,子查询仅是 SELECT 语句。子查询返回行后, EXISTS 运算符返回 TRUE 并立即停止处理。 请注意,即使子查询返回 NULL 值, EXISTS 运算符也会计算为 TRUE
  5. SQL Server Any运算符 ANY 运算符是一个逻辑运算符,它将标量值与子查询返回的单列值集进行比较。
  6. SQL Server All运算符 SQL Server ALL 运算符是一个逻辑运算符,它将标量值与子查询返回的单列值列表进行比较。

SQL Server集合运算符

  1. SQL Server Union(并集) SQL Server UNION 是一组集合操作,用于将两个SELECT语句的结果组合到一个结果集中,该结果集包 括属于 union 中 SELECT 语句的所有行
  2. SQL Server Intersect(交集) SQL Server INTERSECT 组合了两个或多个查询的结果集,并返回两个查询输出的不同行。
  3. SQL Server Except(差积) SQL Server EXCEPT 比较两个查询的结果集,并返回第一个查询中不是由第二个查询输出的不同行。 换 句话说, EXCEPT 从一个查询结果中减去另一个查询的结果集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值