【数据库原理复习】ch3 索引 视图 触发器 过程 sql语句
创始人
2024-05-31 18:04:17
0

这里写目录标题

  • 视图
    • 视图特点
    • 视图定义
    • 优点
  • 索引
    • 相关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默认为主键添加聚集索引

触发器

当满足某种条件时候,自动由服务器进行完成。
可以进行更为复杂的检查操作

触发事件:

  • insert
  • delete
  • update
    可以选择在这些语句之前还是之后进行执行

触发器类型:

  • 行级触发器,(FOR EACH ROW),对于每一个语句都会触发一次触发器
  • 语句级触发器(FOR EACH STATEMENT)对于这个触发器只会触发一次
# 定义触发器
CREATE TRIGGER trigger_name				
before insert or update on table_name	# 表名触发事件是insert与update,且在执行这条语句之前就执行
for each row							# 触发器每条语句都执行
as
begin									# 具体动作体
# 在插入数据时候,自动往日志表中添加一条记录insert into Sal_log values(new.Eno, new.sal, CURRENT_USER, CURRENT_TIMESTAMP)
end# 删除触发器
DROP TRIGGER <触发器名称> ON <表名>

虚表

过程

相关内容

热门资讯

122.(leaflet篇)l... 听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
Vue使用pdf-lib为文件... 之前也写过两篇预览pdf的,但是没有加水印,这是链接:Vu...
PyQt5数据库开发1 4.1... 文章目录 前言 步骤/方法 1 使用windows身份登录 2 启用混合登录模式 3 允许远程连接服...
Android studio ... 解决 Android studio 出现“The emulator process for AVD ...
Linux基础命令大全(上) ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维...
再谈解决“因为文件包含病毒或潜... 前面出了一篇博文专门来解决“因为文件包含病毒或潜在的垃圾软件”的问题,其中第二种方法有...
南京邮电大学通达学院2023c... 题目展示 一.问题描述 实验题目1 定义一个学生类,其中包括如下内容: (1)私有数据成员 ①年龄 ...
PageObject 六大原则 PageObject六大原则: 1.封装服务的方法 2.不要暴露页面的细节 3.通过r...
【Linux网络编程】01:S... Socket多进程 OVERVIEWSocket多进程1.Server2.Client3.bug&...
数据结构刷题(二十五):122... 1.122. 买卖股票的最佳时机 II思路:贪心。把利润分解为每天为单位的维度,然后收...
浏览器事件循环 事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间࿰...
8个免费图片/照片压缩工具帮您... 继续查看一些最好的图像压缩工具,以提升用户体验和存储空间以及网站使用支持。 无数图像压...
计算机二级Python备考(2... 目录  一、选择题 1.在Python语言中: 2.知识点 二、基本操作题 1. j...
端电压 相电压 线电压 记得刚接触矢量控制的时候,拿到板子,就赶紧去测各种波形,结...
如何使用Python检测和识别... 车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计...
带环链表详解 目录 一、什么是环形链表 二、判断是否为环形链表 2.1 具体题目 2.2 具体思路 2.3 思路的...
【C语言进阶:刨根究底字符串函... 本节重点内容: 深入理解strcpy函数的使用学会strcpy函数的模拟实现⚡strc...
Django web开发(一)... 文章目录前端开发1.快速开发网站2.标签2.1 编码2.2 title2.3 标题2.4 div和s...