当前位置: 首页 > news >正文

【数据库原理复习】索引 视图 sql语句

这里写目录标题

  • 视图
    • 视图特点
    • 视图定义
    • 优点
  • 索引
    • 相关sql
    • 三种索引区别解释

视图

视图特点

  • 只是虚表,并不实际存放数据,所有数据都来自于基本表
  • 建立在一个或几个基本表或视图之上
  • 基本表数据变化视图也随之变化
  • 只保存视图定义等之类东西

视图定义

# 定义视图,视图展现的就是子查询的结果
# 子查询不允许有order by 或者 distinct
CREATE VIEW view_name[(<列名> [,<列名>....])]
AS <子查询>
[WITH CHECK OPTION];			# 自动执行检查操作# e.g.
CREATE VIEW IS_Student
as
select Sno, Sname, Sage
from Student
where Sdept = 'IS'
with check option;# 插入操作:自动添加Sdept = 'IS'
# 修改操作同上
# 删除操作同上
# 如果Sdept不为IS拒绝操作
# 如果没有提供Sdept自动添加# 删除视图
DROP VIEW view_name [cascade]

其余操作增删查改操作与基本表相同

优点

  • 简化用户操作
  • 以多种角度看待数据
  • 提供一定的逻辑独立性
  • 有一定的安全性
  • 适当视图有利用更清晰的表达

索引

索引目的:加快查询速度
一般 primary key unique会自动为其建立索引
索引类别:

  • unique 唯一索引
  • cluster 聚集索引
  • noncluster 非唯一索引

相关sql

# 建立索引
CREATE [UNIQUE][CLUSTER] INDEX <索引名称>
ON <表名> (<列名>[,<列名>......])# 删除索引
DROP INDEX <索引名>

三种索引区别解释

一张表只能有一个聚集索引,可以有许多个非聚集索引
数据库表里面的数据比作比作一本字典。聚集索引相当于决定了字典中第一章第二章的排列顺序。添加非聚集索引相当于为其添加了一个目录。相当于字典以偏旁为规则排列了字典的内容,但是可以有拼音目录,笔画目录来查找这个字。

聚集索引能够大大加快group by等块查找语句的速度。因为数据库底层使用B+与HASH进行存储,在操作系统中,文件以分页进行存储。当以某个字段顺序进行存储时候,查找这个字段,也就是将这个字段所在页调入内存查找,而这个页也包含了这个字段值的附近值,所以进行块查找时候就不需要大量进行IO操作,只需要找内存里的页即可。

而为什么添加索引能够加快查找速度?

  • 因为原来在物理存放时候,可能按照其他某个字段进行聚集存放,但是如果按照这个字段进行查找就只能进行顺序查找。如果为这个字段建立了索引,相当于根据这个字段添加了一个目录,查找速度就上去了。在物理结构当中,应该是添加了一个B+树的除了叶子节点上部分。而且如果这个字段不是unique字段,那么有可能会有重复,SqlServer会为这个字段添加一个hash值,做到一一对应,然后再进行一个B+树。

SqlServer默认为主键添加聚集索引

http://www.lryc.cn/news/35389.html

相关文章:

  • 【HDFS】IPC重试
  • Revit导出CAD图纸操作及批量导出
  • 【批处理脚本】-3.4-goto命令详解
  • 超详细CentOS7 NAT模式(无图形化界面即最小安装)网络配置
  • 【可信平台】开证问题汇总--1.无采购入库记录,2.箱码无产出记录
  • RolePred: Open-Vocabulary Argument Role Prediction for Event Extraction 论文解读
  • 【数据结构】链表相关题目(简单版)
  • 通信原理 | FFT/STFT 你真的学会了吗?
  • Qt使用API实现鼠标点击操作
  • JavaWeb学习-Tomcat
  • 【蓝牙系列】蓝牙5.4到底更新了什么(2)
  • js中window自带的四舍五入toFixed方法中的坑以及解决办法
  • JeecgBoot 3.5.0 版本发布,开源的企业级低代码平台
  • 行测-判断推理-图形推理-样式规律-空间重构-四面体和八面体
  • HTML5新特性
  • TDengine Schemaless(无模式写入)常见问题的原因及故障排除
  • 【前端八股文】浏览器系列:浏览器渲染、前端路由、前端缓存(HTTP缓存)、缓存存储(HTTP缓存存储、本地存储)
  • SpiderFlow爬虫获取网页节点
  • “微服务架构:优点、缺点及实现方式“
  • c/c++实现crc码计算和校验
  • 漏洞分析丨cve20110104
  • 关于vue-router路径配置的问题(此文主要是记录三级路由的访问路径,以及安装、路由组件、路由重定向)
  • SpringBoot 整合 clickhouse和mysql 手把手教程全网最详细
  • Leetcode-java 数据结构回顾 Day01
  • Java spring cloud 企业工程管理系统源码+项目模块功能清单
  • 用Biome-BGC模型如何模拟水循环过程
  • 【目标检测论文解读复现NO.33】改进YOLOv5的新能源电池集流盘缺陷检测方法
  • 二进制转换之命理学习
  • es6 常见规范
  • 大学计算机基础填空题