某某茶叶有限公司欢迎您!
金沙棋牌在线 > 必赢棋牌官网 > SQL Server 索引相关概念

SQL Server 索引相关概念

时间:2019-12-29 06:38

学习SQL Server 2012编程入门经典(第4版)的笔记

1.列别名
  除了支持oracle的列表名语法形式之外,还支持把列别名置于列名之前,并附加等号:

索引:索引是与表或视图的页的集合,用于加速从表中检索行或用于强制实施唯一性。

1.事务日志

  任意数据库的更改起初不进入数据库本身,而是不断地被写入到事务日志。

  日志是数据进入磁盘上的最先位置。

  这些模式和趋势可以被收集在一起并定义为“数据挖掘模型”。挖掘模型可以应用于特定的业务方案,例如:

select emp_name=ename,salary=sal from emp;

聚集索引:通过物理上的顺序进行排列而建立的索引。

2.表

  数据库中实际的数据都存在表中。表有行有列。

  ◆ 预测销售额

2.字符串条件
  SQL Server除了支持like关键字、“%”及“_”作为通配符以及使用escape关键字指定转义字符进行模糊匹配查询,还支持正则表达式中的方括号用法,以匹配指定范围内或者方括号所指定集合中的任意单个字符。
  SQL Server支持的方括号用法有两种形式,[]与[^],前者用于包含某些字符,后者用于不包含某些字符,举例如下。

非聚集索引:通过索引表(相当于书的目录)的方法建立的索引。

 2.1索引

   索引是在特定表或视图框架内存在的对象。索引的功能类似于目录,可以加速信息的查找。

  索引分两类:

    群集索引---每个表只能有一个。群集索引按照其索引进行物理排序。列子:如果为百科全书做索引,群集索引就是页码。

    非群集索引---每个表可以有多个。非群集索引是指用于找到数据的其他一些值。列子:为百科全书做索引,非群集索引就是百科全书后面的关键字索引。

  ◆ 向特定客户发送邮件

  • [amd]:表示包含a、m、d三个字符中的任意一个
  • [^amd]:表示不包含a、m、d三个字符中的任意一个
  • [b-f]:表示英文字母表中b到f之中的任意一个
  • [0-9]:表示0到9这10个数字中的任意一个
      如查询dept表的dname列中的第一及第二字符为数字,第三个字符为小写英文字母的记录,可以使用如下语句:

SQL数据访问方式:一是:表扫描;二是:使用索引。

  2.2触发器

  触发器是在操作表的时候(CRUD)自动执行一段逻辑代码。

  ◆ 确定可能需要搭售的产品

聚集索引可以看作是英文字典,字典从a-z排序,当我们需要查找某个单词时,如:student,这时就可

  2.3约束

       约束只能在表中,就是限制表中的数据满足某种条件。

  ◆ 查找客户将产品放入购物车的顺序序列

select * from dept where dname like '[0-9][0-9][a-z]%';

以定位到是字典的后半部分。

3.文件组 

  默认情况下,表及其他对象要存储在一个文件中,默认情况下,该文件就是文件组的主要成员。

       用户可以自己创建自定义文件组。

  生成挖掘模型是大型过程的一部分,此过程包括从提出相关数据问题并创建模型以解答这些问题到将模型部署到工作环境的所有事情。此过程可以使用下列六个基本步骤进行定义:

3.多表连接
  对于自然连接,Oracle支持natural join以及using关键字的用法,而SQL Server不支持。
  在from子句中使用子查询时,Oracle使用或不使用表别名都是可以的。若使用表别名,则不能附带as关键字。如下面子查询:

非聚集索引可以看作是书的目录,通过目录标明某文章在哪一页就定位到哪一页。

4.数据库关系图

  数据库关系图是数据库设计的可视表示。

  ◆ 定义问题

#未使用别名
select ename from (select * from emp where deptno=20);
#使用别名
select ename from (select * from emp where deptno=20) e;

由于聚集索引确定了实现存储表行的顺序,所以每个表只能有一个聚集索引,表中的行不能以多种顺序

5.视图

  视图是一种虚拟表(不包含数据,其它与表类似)。

  ◆ 准备数据

但是SQL Server要修必须使用表别名,且附带或不附带as都支持:

存储。

6.存储过程

  存储过程是SQL Service编程功能的基础。存储过程通常是组成一个逻辑单元的Transact-SQL(SQL Service 数据库查询语言)语句的有序集合。

     存储过程允许使用变量和参数,也可使用选择和循环结构。

 

  ◆ 浏览数据

select ename from (select * from emp where deptno=20) e;
select ename from (select * from emp where deptno=20) as e;

数据类型:ntext text varchar(max) nvarchar(max) varbinary(max) xml image不可用作聚集索引,

  ◆ 生成模型

4.查询排序后的前n行或第n行记录

非聚集索引的键。

  ◆ 浏览和验证模型

SQL Server中实现取出表中的前n行,可以使用两种方法:

使用聚集索引场合:
1、使用between, >, >=, <, <=之类的运算符返回一系列值。
2、返回使用order by 或 group by 子句排序的数据。
3、返回使用join子句合并的数据,一般是外键列
4、返回大型结果集

  ◆ 部署和更新模型

  • top n
  • row_number()

如果索引表有聚集索引,则聚集索引中定义的一列或多列将自动追加到表上每一个非聚集索引的最后,

  以下关系图说明过程中每个步骤之间的关系,以及 Microsoft SQL Server 2008 中可用于完成每个步骤的技术。

SQL Server不支持Oracle中的rownum关键字,而row_number()函数的用法与Oracle相同。
  相对于Oracle的实现方式,使用top n的用法,在SQL Server中可以很容易地实现取出表中前n行的目的。如查询emp表中的sal值最高的前3条记录:

这样无需在非聚集索引的定义中指定聚集索引列即可生成覆盖查询。如:表有C列的聚集索引,则B列和A

  图片 1

select top 3 ename,sal from emp order by sal desc;

列的非聚集索引将以BAC列作为其键值。

  尽管关系图中所示的过程是一个循环过程,但是每个步骤并不需要直接执行到下一个步骤。创建数据挖掘模型是一个动态、交互的过程。浏览完数据之后,您可能会发现数据不足,无法创建适当的挖掘模型,因此必须查找更多的数据。或者,您可以生成数个模型,但随后发现这些模型无法充分地回答定义的问题,因此必须重新定义问题。您可能必须在部署模型之后对其进行更新,因为又出现了更多的可用数据。可能需要多次重复过程中的每个步骤才能创建良好的模型。

如果要查询排序后的第n航记录,可以由前n行结果除去前n-1行结果,如要查询emp表中sql值排名第三的记录:

使用非聚集索引的场合:
1、当用户需要以多种方式搜索数据时,如:用户可能频繁搜索学号,姓名。可创建非聚集索引为姓名s

  SQL Server 2008 提供用于创建和使用数据挖掘模型的集成环境,称为 Business Intelligence Development Studio。该环境包括数据挖掘算法和工具,使用这些算法和工具更易于生成用于各种项目的综合解决方案。

select a.ename,a.sal from
(select top 3 ename,sal from emp order by sal desc) as a
except
select a.ename,a.sal from
(select top 2 ename,sal from emp order by sal desc) as a;

,聚集索引为学号
2、如果你表已经有了聚集索引,并且你需要索引另一个列,这时只能选择使用非聚集索引。
3、当索引包含查询中的所有列时,你将能最大限度地提高性能,覆盖范围是指查询中所涉及的索引能

  创建数据挖掘解决方案后,您可以使用 SQL Server Management Studio 维护和浏览该解决方案。

但是SQL不支持以下做法:

支持的列数。
4、你希望使用join, group by子句提高查询性能,应用对连接,分组操作的列创建多个非聚集索引,

  定义问题

select top 3 ename,sal from emp order by sal desc
except
select top 2 ename,sal from emp order by sal desc;

并对所有的外键创建聚集索引。
5、表更新频率较低,但是包含大量数据。
6、不会返回大量结果。
7、需要对包含多个不同值(如姓和名)的列进行索引。非聚集索引最适合于数据选择性从高度可选到