数据库视图、触发器

2023-10-27

1.delete和truncate区别

在有自动增长的前提上,用delete清空表后再插入数据,id会从被删除的最大的id+1开始,用

truncate清空表后再插入数据,id会从起始值开始

2.索引

①唯一索引(已存在表)

alter table 表名 add unique index 索引名(作用的字段)

注意:

添加的唯一索引的字段值不可重复

查询的字段值如果不存在于表内,则不会使用唯一索引

②主键索引

注意:

查询的字段值如果不存在于表内,则不会使用主键索引

查看当前表的索引

show index from 表名

③联合索引

alter table 表名 add index 索引名(作用的字段1,作用的字段2)

注意:

联合索引遵循最左原则

④全文索引

alter table 表名 add fulltext index 索引名(作用的字段)

⑤索引的使用原则

数据量少的表不建议使用索引

频繁修改的字段,不建议使用索引

满足唯一索引要求的字段就不建议使用普通索引

3.视图

(1)视图是一种虚拟存在的表,是一个逻辑表,本身并不包含数据,作为一个select语句保存在

数据字典中的。通过视图,可以展现基表(用来创建视图的表)的部分数据,视图数据来自定义视

图的查询中使用的表,使用视图动态生成

(2)使用视图的原因

①简单:使用视图的用户完全不需要关心后面对应的表的结构,关联条件和筛选条件,对用户来说

已经是过滤好的符合条件的结果集

②安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行

某个列,但是通过视图就可以简单的实现

③数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,原表增加列对视图没有

影响,原表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响

总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率

(3)创建视图,视图可以嵌套视图

create view 视图名 as select 语句

(4)修改视图

alter view 视图名 as select 语句

(5)创建时覆盖原视图

create or replace view 视图名 as select 语句

(6)查看创建的视图信息

show create view 视图名

(7)查看视图中字段信息

DESC 视图名

(8)删除视图

drop view 视图名1,视图名2

4.触发器

(1)Mysql的触发器是嵌入到mysql中的一段程序,是MySQL中管理数据的有力工具,通过对数据

表的相关操作来触发,激活从而实现执行。比如当对student表进行操作

(INSERT,DELETE,UPDATE)时就会激活它执行

(2)优缺点

①优点

触发器的执行是自动的,当对触发器相关表的数据做出相应的修改后立即执行

触发器可以实施比FOREIGN KEY约束,CHECK约束更为复杂的检查和操作

触发器可以实现表数据的级联更改,在一定程度上保证了数据的完整性

②缺点

使用触发器实现的业务逻辑在出现问题时很难进行定位,特别是涉及到多个触发器的情况下,会使

后期维护变得困难

大量使用触发器容易导致代码结构被打乱,增加了程序复杂性

如果需要变动的数据量较大时,触发器的执行效率会非常低

(3)创建触发器

create trigger 触发器名 before|after insert|update|delete on 表名 for each row <触发器主体>

(4)查看指定触发器的信息

select * from information_schema.triggers where trigger_name = '触发器名'

(5)删除触发器

drop trigger 触发器名

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库视图、触发器 的相关文章

  • 使用 Microsoft SQL Server 管理复制表

    需要使用复制表Microsoft SQL Management Studio 2008 TABLE 还需要复制所有表行 主键 ID 在 SSMS 中打开一个新的查询窗口 然后执行如下操作 SELECT INTO NewTable FROM
  • 从视图中的动态表名称中选择

    我的客户每年都会创建一个新表 其名称中包含年份 我必须在 SQL Server 数据库的新视图中使用该表 我已经通过一个查询解决了这个问题 DECLARE SQLString nvarchar 500 SET SQLString SELEC
  • ORACLe PROCEDURE - AUTHID 仅允许在模式级别

    在尝试通过过程创建表时 我遇到了类似的错误 错误 73 9 PLS 00157 仅在架构级程序上允许 AUTHID PROCEDURE BCKUP AUTHID CURRENT USER AS statusmsg VARCHAR2 400
  • SQL:使用 Case 语句对多个字段进行分组

    我正在尝试使用 CASE 语句编写 GROUP BY 子句 以便我可以根据查询中的参数值有条件地进行 GROUP BY 这是我正在使用的查询 显着缩短 我不断收到 RVPname 在选择列表中无效 因为它不包含在聚合函数或 GROUP BY
  • 表与视图的性能

    最近开始使用一个数据库 其中的惯例是为每个表创建一个视图 如果您假设表和视图之间存在一对一的映射 我想知道是否有人可以告诉我这样做对性能的影响 顺便说一句 这是在 Oracle 上的 假设问题是关于非物化视图 实际上取决于视图所基于的查询以
  • 在 Linux 中,Distinct SQL 无法与 UNNEST 一起使用

    当我在窗口系统中运行此查询时 行为正确 UNNEST 但是当我运行这个查询时 Linux 的行为不同 unnest 重复记录列表在不同的行上 SELECT DISTINCT billing billmanagement creation d
  • Postgres 创建一个带有外键数组的表

    我正在制作一个名为 routes 的表 我希望它能够包含航班列表 航班详情请参阅航班表 我希望 航班 是航班表中的外键 ID 数组 所以 我有这个代码 CREATE TABLE routes id SERIAL PRIMARY KEY fl
  • 如何从 Oracle 中获取格式化的 XML

    我对 Oracle 缺乏经验 并且在将数据导出为 XML 时遇到问题 我已经设法让这个查询正常工作 但 XML 的格式似乎是固定的 对我来说不起作用 这是查询 SELECT value em getClobVal AS output FRO
  • 如何在一个查询中最大(日期)并使用sql server中的in功能?

    我有一张这样的桌子 id color shade date 1 red dark 01 01 1990 2 red light 09 16 2013 3 green light 08 15 2010 4 green dark 09 18 2
  • Oracle SQL - 如何使用 RANK() 或 DENSE_RANK() 和 ROW_NUMBER() 分析函数获取不同的行?

    我希望获得每个部门前 3 名不同的薪资 我能够使用RANK or DENSE RANK or ROW NUMBER 但我的表有一些工资相同的记录 下面提到的是我的查询及其结果 20部薪资前三名应该是6000 3000 2975 但是有 2
  • Spark:用列的平均值替换数据框中的空值

    如何创建 UDF 以编程方式将每列中 Spark 数据框中的空值替换为列平均值 例如 在示例中 数据 col1 空值的值为 2 4 6 8 5 5 5 示例数据 col1 col2 col3 2 null 3 4 3 3 6 5 null
  • 解析器解析 SQL 查询并返回 Java 中的列名和相应的表名 [重复]

    这个问题在这里已经有答案了 可能的重复 Java 的 SQL 解析器库 https stackoverflow com questions 660609 sql parser library for java 我需要一个解析器 它应该以以下
  • 相当于 pandas 'transform' 的 SQL 是什么?

    假设您有以下 SQL 表 A B C 2 1 4 3 4 5 3 1 1 1 4 0 5 0 1 并且您想要添加 显示一个列 其中包含 A 列对于 B 列的每个不同值的平均值 或任何其他聚合函数 您想要保留所有列 所以结果会是这样的 A B
  • MySQL 中的排名函数

    我需要找出客户的等级 这里我根据我的要求添加相应的 ANSI 标准 SQL 查询 请帮我将其转换为 MySQL SELECT RANK OVER PARTITION BY Gender ORDER BY Age AS Partition b
  • 从 all_tab_columns 中选择,其中表有 > 0 行

    我需要在大型数据库中搜索与列名匹配的表 但该表必须有超过 0 行 顺便说一句 这是查询 SELECT FROM all tab columns WHERE column name LIKE ID SUPPORT 您可以使用单个查询来过滤名称
  • 如何在 MySQL 中进行数据透视表

    我有一个关于如何在 MySQL 中旋转表的问题 我有一个数据集 像这样的列 ID Name job title 1 Sam Fireman 2 Tomas Driver 3 Peter Fireman 4 Lisa Analyst 5 Ma
  • 函数 SQL 中的函数

    我可以在表值函数中调用标量函数吗 Thanks 是的 只要表值函数完成后返回一个表即可 用户自定义函数可以嵌套 也就是说 一个用户定义的函数可以 呼叫另一个 嵌套级别为 被调用函数时递增 开始执行 并在以下时间递减 被调用函数完成 执行 用
  • 在创建 IDENTITY 的同一个 T-SQL 语句中获取 IDENTITY 值?

    有人问我是否可以有一个插入语句 其中有一个作为 身份 列的 ID 字段 以及分配的值是否也可以插入到同一插入语句中同一记录中的另一个字段中 这可能吗 SQL Server 2008r2 Thanks 你不能真正做到这一点 因为将用于的实际值
  • 变更数据捕获性能损失是否仅限于启用 CDC 的表?

    我读到启用更改数据捕获显然会对数据库性能产生影响 这种性能损失是否仅影响启用了 CDC 的表 还是会影响数据库中的所有操作 在我的情况下 我使用 SSIS 并且有大量数据移入和移出临时数据库 我的系统中还有一些用于转换的查找表 我希望使用
  • SQL Server 2005存储过程性能问题

    我遇到以下问题 当从我的应用程序调用存储过程时 时不时地 例如 1000 次调用中的 1 次 需要 10 30 秒才能完成 通常 存储过程的运行时间不到一秒 这是一个相当简单的过程 只需一个选择即可将几个表连接在一起 所有表名都设置有 NO

随机推荐

  • java循环while之等差数列均值_java基础_while 循环语句的定义及用法

    一 while 循环语句的定义 在 C 语言中 while 循环是除了 for 循环外最常用的循环语句 相对于 for 循环而言 while 循环更多地应用于循环次数未定的循环控制中 while 循环的一般表达形式为 while 表达式 循
  • 色温

    色温是表示光线中包含颜色成分的一个计量单位 从理论上说 黑体温度指绝对黑体从绝对零度 273 开始加温后所呈现的颜色 黑体在受热后 逐渐由黑变红 转黄 发白 最后发出蓝色光 当加热到一定的温度 黑体发出的光所含的光谱成分 就称为这一温度下的
  • 线程池OOM错误

    1 LinkedBlockingQueue报错 package com spring pro threadpool completableFuture youhua test import java util concurrent Exec
  • 【场景】大数据常考场景题 - Bitmap

    大数据开发面试通常会问场景题 主要考察大数据中常用的数据结构 比如 Bitmap Bloom Filter 等等 今天就说一个工作中碰到的 比如昨天说到的问题 用户要在自定义时间区间内查询 就需要快速响应 可能用到 ClickHouse 可
  • Ubuntu 下安装 apt-get install npm

    步骤一 sudo apt get remove nodejs npm 删除原来的 sudo apt get install curl curl sL https deb nodesource com setup sudo bash sudo
  • 第十一届蓝桥杯国赛 奇偶覆盖

    我的主要思路是找到每个矩形内的单位方格 再使用set集合将所有方格统计 最后在set集合里遍历每一个方格 统计其再矩形里出现的次数 即为面积 再蓝桥刷题系统上只能过30 有优化方案的欢迎私信讨论 矩形类 class The it def i
  • Angular4 使用GET向后端请求数据

    Angular4 使用GET向后端请求数据 在工程的src app app module ts的头部引入http jsonp import HttpModule JsonpModule from angular http 在工程的src a
  • 线程池实例

    public Executor asyncServiceExecutor ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor 配置核心线程数 executor setCore
  • 日常Linux操作命令使用手册

    OS 查看操作系统 cat etc issue GPU 查看GPU 利用率 nvidia smi 文件和空间 查看linux文件目录的大小和文件夹包含的文件数 查看磁盘使用情况 df h 统计总数大小 du sh xmldb du sm s
  • Java: 断言(assert)

    断言 assert 语句一般用于程序不准备通过捕获异常来处理的错误 例如 账号交易时 对于支出的金额为正数 收入 支出 纯收入 或者收入的金额为负数 程序必须立即停止执行 同时发现错误 当正式收益时 就可以避开错误 但仍保留断言语句在程序中
  • 6.28同花顺笔试

    笔试共22题 题型比较多 选择 简答 编程 开放逻辑题都有 笔试时长2h 对深度学习方面考察的比较多 包含性能评价指标 常见定义等 选择题与简答题 1 提高深层神经网络特征表达能力的方法 题目问的下列哪个方法无法用来提高 a 增加层深度 b
  • 微信小程序遇到does not have a method “xxxx“ to handle event “tap“

    刚开始学小程序的小白 学到事件绑定的时候 跟着老师的步骤一步一步把代码输入好 结果发现和老师的结果不大一样 我在网上找了很多方法 有说多打空格的 有说要写进method 里的 都试过 没用 结果意外之下 我随手取消勾选 将JS编译成ES5
  • 2022.08 VMware官网下载安装+配置Linux虚拟机,最新最全

    前言 文章概要叙述 步骤一 安装VMware VMware 安装包下载 VMware官方下载页面 1 1小节 步骤二 配置虚拟机 步骤三 安装操作系统 CentOS7 9 镜像文件下载 CentOS阿里云镜像下载页 2 2 1小节 一 VM
  • UE4 获取目录下所有的图片转换成Texture2D并通过UMG显示出来

    主要内容 本文主要讲解简单插件的编写 将类继承至Subsystem 子系统 框架的好处 鼠标射线检测以及鼠标拖拽功能的实现 实现步骤 一 编写插件 1 首先新建一个空的C 项目 然后新建插件 Author是作者名 Description是描
  • 《Linux入门与基础》课程教案

    Linux入门与基础 linux的目录结构 打开终端 输入ls查看linux根目录下的情况 ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sy
  • 常用电路设计之分频器的设计

    引言 分频器在实际数字电路设计中是最基础的 也是最重要的 常见的分频器主要有偶数倍分频器 奇数倍分频器 半整数倍分频器 任意小数倍分频器等 本文主要对最常用的偶数倍分频器和奇数倍分频器展开介绍 1 偶数倍分频器 偶数倍分频器通过计数器可以很
  • uniapp自定义tabbar,中间凸起(支持H5、微信小程序)

    最近公司需要做一款app 需要中间按钮凸起 在网上找了一些 参考文献 做了一个demo H5效果图如下 小程序效果图如下 目录结构如下 page json的配置如下 pages path pages index index style na
  • 面试:字符串: 提取IP地址

    题目 给定一个只含数字的字符串 返回所有合法的ip地址 算法 ip地址是4段 每段三个情况 1 只取一个数字 2 取两个数字 第一个数字不是0 3 取三个数字 第一个数字不是0 而且三个数组成的数小于256 递归 import java u
  • React前端渲染优化--父组件导致子组件重复渲染的问题

    1 适用场景 当父组件本身状态更新时 这个状态并没有作为props传给子组件 也会触发子组件更新机制 这样就造成了组件重复渲染的问题 2 解决 类组件 pureComponent 它是一个类 组件继承自它后 其作为子组件时 每次父组件更新后
  • 数据库视图、触发器

    1 delete和truncate区别 在有自动增长的前提上 用delete清空表后再插入数据 id会从被删除的最大的id 1开始 用 truncate清空表后再插入数据 id会从起始值开始 2 索引 唯一索引 已存在表 alter tab