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 子句是要处理的最后一个子句。
限制返回行数
- 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 可能会导致返回的行数多于在表达式中指定的行数。 - 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 是同义词,因此可以互换 使用它们。
过滤数据
- Select Distinct子句: SELECT DISTINCT 子句检索指定列列表中的唯一不同值,换句话说,它从结果集中删除列中的重复值。 DISTINCT 子句将所有 NULL 值视为相同的值
- 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 的行。搜索条件是逻辑表达式 或多个逻辑表达式的组合
- AND 查找满足两个条件的行: AND 是一个逻辑运算符,用于组合两个布尔表达式。它使用逻辑运算符 AND 来组合这两个条件
- (>,=,<)使用比较运算符查找行;
- OR 查找满足两个条件中的任何一个的行 :OR 是一个逻辑运算符,用于组合两个布尔表达式 在语句中使用多个逻辑运算符时,SQL Server将在 AND 运算符之后计算 OR 运算符。 但是,可以使用括号更改评估顺序。
- Between查找具有两个值之间的值的行: BETWEEN 运算符是一个逻辑运算符,用于指定要测试值的范围;①可以使用大于或等于( >= )且小于或等于( <= )来替换 BETWEEN 运算符②使用 BETWEEN 运算符的条件比使用比较运算符 >= , <= 和逻辑运算符AND的条件更具可读性③要取消 BETWEEN 运算符的结果,请使用 NOT BETWEEN 运算符
- IN 查找值列表中具有值的行: IN 运算符是一个逻辑运算符 IN 运算符等效于多个 OR 运算符,要取消 IN 运算符,请使用 NOT IN 运算符
- Like 查找其值包含字符串的行:pattern 模式是要在列或表达式中搜索的字符序列。它可以包含以下有效通配符: 通配符百分比( % ):任何零个或多个字符的字符串。 下划线( _ )通配符:任何单个字符。 [list of characters] 通配符:指定集合中的任何单个字符。 [character-character] :指定范围内的任何单个字符。 [^] :不在列表或范围内的任何单个字符。 通配符使 LIKE 运算符比等于( = )和不等于( != )字符串比较运算符更灵活。 转义符 转义字符指示 LIKE 运算符将通配符视为常规字符。转义字符没有默认值,必须仅计算为一个字符。
- 列和表别名: SQL 别名用于为 表 或 表中的列 提供临时名称。 SQL 别名通常用于使 表名 或 列名 更具可读性。 SQL 一个别名只存在于查询期间。 别名使用 AS 关键字赋予。 建议在下列情况下使用别名 查询涉及多个表 用于查询函数 需要把两个或更多的列放在一起 列名长或可读性差
连接表:
在关系数据库中,数据分布在多个逻辑表中。 要获得完整有意义的数据集,需要使用连接来查询这些表 中的数据。 SQL Server支持多种 连接,包括 [内连接],[左连接],[右连接],[全外连接]和[交叉连接]。 每种连接类型指定SQL Server如 何使用一个表中的数据来选择另一个表中的行
- SQL Server内连接: 内连接是SQL Server中最常用的连接之一。 内部联接子句用于查询来自两个或多个相关表的数据。
- SQL Server左连接: LEFT JOIN 子句用于查询来自多个表的数据。它返回左表中的所有行和右表中的匹配行。 如果在右表中找不到匹配的行,则使用 NULL 代替显示
- ON与WHERE子句:对于 INNER JOIN 子句,如果将 ON 子句中的条件放在 WHERE 子句中,则它在功能上是等效的
- SQL Server右连接 RIGHT JOIN 子句组合来自两个或多个表的数据。 RIGHT JOIN 开始从右表中选择数据并与左表中的行 匹配。 RIGHT JOIN 返回一个结果集,该结果集包含右表中的所有行,无论是否具有左表中的匹配行。 如果右表中的行没有来自右表的任何匹配行,则结果集中右表的列将使用 NULL 值。
- SQL Server 交叉连接 CROSS JOIN 连接两个或多个不相关的表。交叉连接返回 两个表中行的笛卡尔积。 与INNER JOIN或LEFT JOIN不同,交叉连接不会在连接的表之间建立关系。
- SQL Server自连接 自联接用于将表连接到自身(同一个表)。 它对于查询分层数据或比较同一个表中的行很有用。 自联接使用内连接或左连接子句。 由于使用自联接的查询引用同一个表,因此表别名用于为查询中的表 分配不同的名称。 请注意,如果在不使用表别名的情况下在查询中多次引用同一个表,则会出现错误
- SQL Server全外链接? FULL OUTER JOIN当左表或右表中存在匹配项时,该命令将返回所有行。
分组数据
- SQL Server Group By语句:Group By 从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集” 划分成若干个“小区域”,然后针 对若干个“小区域”进行数据处理
- GROUP BY子句和聚合函数 GROUP BY 子句通常与聚合函数一起用于统计数据。 聚合函数对组执行计算并返回每个组的唯一值。 例如, COUNT() 函数返回每个组中的行数。 其他常用的聚合函数是: SUM() , AVG() , MIN() , MAX() 。 GROUP BY 子句将行排列成组,聚合函数返回每个组的统计量(总数量,最小值,最大值,平均值,总和 等)。
- SQL Server Having子句 HAVING 子句通常与[GROUP BY]子句一起使用,以根据指定的条件列表过滤分组。
SQL Server子查询
- SQL Server子查询 子查询是嵌套在另一个语句(如:[SELECT],[INSERT],[UPDATE]或[DELETE])中的查询。
- 嵌套子查询 子查询可以嵌套在另一个子查询中。 SQL Server最多支持 32 个嵌套级别。
- SQL Server相关子查询 相关子查询是使用外部查询的值的[子查询]。 换句话说,它取决于外部查询的值。 由于这种依赖性,相 关子查询不能作为简单子查询独立执行。 此外,对外部查询评估的每一行重复执行一次相关子查询。 相关子查询也称为重复子查询。
- SQL Server Exists运算符 EXISTS 运算符是一个逻辑运算符,用于检查子查询是否返回任何行。 如果子查询返回一行或多行,则 EXISTS 运算符返回 TRUE 。要注意,子查询仅是 SELECT 语句。子查询返回行后, EXISTS 运算符返回 TRUE 并立即停止处理。 请注意,即使子查询返回 NULL 值, EXISTS 运算符也会计算为 TRUE
- SQL Server Any运算符 ANY 运算符是一个逻辑运算符,它将标量值与子查询返回的单列值集进行比较。
- SQL Server All运算符 SQL Server ALL 运算符是一个逻辑运算符,它将标量值与子查询返回的单列值列表进行比较。
SQL Server集合运算符
- SQL Server Union(并集) SQL Server UNION 是一组集合操作,用于将两个SELECT语句的结果组合到一个结果集中,该结果集包 括属于 union 中 SELECT 语句的所有行
- SQL Server Intersect(交集) SQL Server INTERSECT 组合了两个或多个查询的结果集,并返回两个查询输出的不同行。
- SQL Server Except(差积) SQL Server EXCEPT 比较两个查询的结果集,并返回第一个查询中不是由第二个查询输出的不同行。 换 句话说, EXCEPT 从一个查询结果中减去另一个查询的结果集。