SQL Server 索引和视图

SQL Server
22
0
0
2024-12-11

目录

1.索引

什么是索引?

索引的作用?

索引的分类

1. 唯一索引

2. 主键索引

3. 聚集索引

4.非聚集索引

5.复合索引

6.全文搜索

索引的创建(命令+图形)

2. 视图

创建视图

查询视图

更新视图

删除视图

实例

1.索引

什么是索引?

索引(Index)是数据库中一种用于加速对表中数据的检索速度的数据结构。索引类似于书籍的目录,它提供了一种快速查找数据行的方法,避免了全表扫描的开销。通过使用索引,数据库系统可以直接定位到符合特定搜索条件的数据,而不必逐行遍历整个表。

索引的作用?
  • 减少数据库搜索引擎需要扫描的数据量。
  • 帮助数据库搜索引擎更快地找到与查询条件匹配的数据行。
  • 允许数据库搜索引擎使用更有效的算法来查找数据行。

索引的分类

1. 唯一索引

确保索引列的所有值都是唯一的,用于实现唯一性约束

CREATE UNIQUE INDEX index_name on 表名 (列1,列2.....);
2. 主键索引

主键索引是表中唯一的索引,它用于指定表的主键。主键索引可以提高查询的效率,但会增加数据库的空间占用

创建主键索引的注意事项

  • 主键索引的列必须是唯一的。
  • 主键索引的列不能为 NULL。
  • 主键索引的列不能包含重复值。
ALTER TABLE table_name ADD CONSTRAINT pk_constraint_name PRIMARY KEY (column1, column2, ...);
  • table_name 是表的名称。
  • pk_constraint_name 是你为主键约束指定的名称。
  • (column1, column2, ...) 是主键包含的列的列表。
3. 聚集索引

数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同

一个表中只能包含一个聚集索引

CREATE CLUSTERED INDEX index_name ON table_name (column1, column2, ...);
  • index_name 是你为索引指定的名称。
  • table_name 是要在其上创建索引的表的名称。
  • (column1, column2, ...) 是用于聚集索引的列的列表。
4.非聚集索引

与聚集索引不同,非聚集索引的叶子节点并不包含实际的数据行,而是包含指向实际数据行的指针。一个表可以有多个非聚集索引。

CREATE NONCLUSTERED INDEX index_name ON table_name (column1, column2, ...);
  • index_name 是你为索引指定的名称。
  • table_name 是要在其上创建索引的表的名称。
  • (column1, column2, ...) 是用于非聚集索引的列的列表。
5.复合索引

包含多个列的索引,以提高特定查询的性能,复合索引的顺序通常取决于查询中使用的列的顺序。

CREATE INDEX index_name ON table_name (column1, column2, ...);
  • index_name 是你为索引指定的名称。
  • table_name 是要在其上创建索引的表的名称。
  • (column1, column2, ...) 是用于复合索引的列的列表。
6.全文搜索

一种用于在文本数据中进行高效搜索的技术,允许用户以自然语言的方式查询文本数据。在 SQL Server 中,可以使用全文搜索功能进行这样的操作。

这个自行了解

索引的创建(命令+图形)

命令

这边创建一个唯一索引 当做实例

图形

右击表 点击设计

右击列 点击 索引即可

此刻我们发现命令创建的索引成功

2. 视图

  • 可以简化查询。 视图可以将复杂的查询转换为简单的查询,使查询更加容易理解和使用
  • 简化查询
创建视图
CREATE VIEW view_name AS SELECT column1, column2, ... FROM table1 WHERE condition;
  • view_name 是视图的名称。
  • column1, column2, ... 是视图中包含的列。
  • table1 是表。
  • WHERE condition 是可选的筛选条件。
查询视图
SELECT * FROM youView;
更新视图
UPDATE youView SET FirstName = 'NewName' WHERE 条件;
删除视图
DROP VIEW view_name;
实例

创建视图

这里红色(错误语法) 但是可以执行

更新视图

查询视图

更新后的信息

删除视图

再次查询一遍发现无效