sql触发器

MySQL总结(5)

ぃ、小莉子 提交于 2019-12-04 03:38:23
视图 SELECT cust_name,cust_contact FROM customers,orders,orderitems WHERE customers.cust_id=orders.cust_id AND orderitems.order_num=orders.order_num AND prod_id='TNT2'; 假如可以把整个查询包装成一个名为 productcustomers 的虚拟表 SELECT cust_name,cust_contact FROM productcustomers #this is a 视图 WHERE prod_id='TNT2' productcustomers 是一个视图,作为视图,它不包含表中应该有的任何列或数据,它包含的是一个SQL查询(与上面用以正确联结表的相同的查询)。 😁 重用SQL语句。 😁 简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必 知道它的基本查询细节。 😁 使用表的组成部分而不是整个表。 😁 保护数据。可以给用户授予表的特定部分的访问权限而不是整个 表的访问权限。 😁 更改数据格式和表示。视图可返回与底层表的表示和格式不同的 数据。 😘 与表一样,视图必须唯一命名(不能给视图取与别的视图或表相 同的名字)。 😘 对于可以创建的视图数目没有限制。 😘 为了创建视图,必须具有足够的访问权限

SQL数据库相关

佐手、 提交于 2019-12-03 10:34:09
数据库相关知识点 SQL, 对表的理解, 对表的 主键, 外键 的理解, 视图, 为什么要有视图, 视图有什么功能, 视图与表有什么区别 主键是唯一标识的一条记录,不能重复,不能为空. 表的外键是另一个表的主键,可以重复,可以为空 索引,字段没有重复值,可以有空值,可以有一个或者多个唯一索引. 视图  是一个或者多个表按照条件组合成的结果集 对表用增删改查等SQL进行操作,对视图权用select操作 表是物理存在的,视频是虚拟的内存表 存储过程, 什么是存储过程 是一组完成特定功能的程序集,编译存放数据库中,用户指定名称和参数就可以执行,接受参数,返回单个或多个结果集 储存过程创建编译时存在Precedure Cache中,所以比SQL执行要快 储存过程存在服务器端,容易修改,而SQL存在客户端,修改后部署比较麻烦 如何通过Dataset更新数据 使用DataAdpater的批量更新,好处是不用写具体的sql脚本,尤其是做web服务这个优势非常吸引人。 sql server中Join有几种 JOIN: 如果表中有至少一个匹配,则返回行 (也就是 inner join) LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只要其中一个表中存在匹配,就返回行

数据库整理(五)数据库编程 触发器 事务 过程

白昼怎懂夜的黑 提交于 2019-12-03 08:07:05
数据库整理(五)数据库编程 嵌入式SQL 交互式SQL和嵌入式SQL是SQL的两种使用方法。将SQL语言嵌入到宿主语言程序中, 将SQL语言访问数据库的功能和宿主语言的数据处理功能相结合 ,这种使用SQL的方法称为嵌入式SQL。 SQL查询数据库的能力强,高级语言对复杂应用和复杂逻辑处理能力强 类似断言、触发器等操作需要对数据进行处理,原生SQL能力不强 数据库服务器只识别SQL语句,用SQL可以提高效率 如何实现嵌入式SQL? 宿主语言(简称 主语言 )的编译器不能识别SQL,如何将嵌有SQL语句的宿主语言编译成可执行代码? 宿主语言与DBMS之间如何传递数据和信息? 如何解决元组集合数据对宿主语言变量的赋值? 识别与处理SQL 数据库管理系统一般采用预编译方法处理,即由数据库管理系统的预处理程序对源程序进行扫描,识别出嵌入式SQL语句,把它们转换成主语言调用语句,以使主语言编译程序能识别它们,然后由主语言的编译程序将纯的主语言程序编译成目标码 为了调用,将SQL语言转变为函数调用 用EXEC SQL前缀来标识SQL语句 ,以区分宿主语言与SQL语言。 EXEC SQL <SQL语句>; 嵌入式SQL语句与主语言的通信 SQL负责操纵数据库,高级语言语句负责控制逻辑流程 数据库工作单元与源程序工作单元之间的通信主要包括: (1) 向主语言传递SOL语句的执行状态信息

触发器

一个人想着一个人 提交于 2019-12-03 05:30:25
MySQL触发器用法详解 一、MySQL触发器创建: 1、MySQL触发器的创建语法: 1 2 3 4 5 6 7 CREATE  [DEFINER = { 'user' | CURRENT_USER }]  TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW [trigger_order] trigger_body   2、MySQL创建语法中的关键词解释: 字段 含义 可能的值 DEFINER= 可选参数,指定创建者,默认为当前登录用户(CURRENT_USER); 该触发器将以此参数指定的用户执行,所以需要考虑权限问题; DEFINER='root@%' DEFINER=CURRENT_USER trigger_name 触发器名称,最好由表名+触发事件关键词+触发时间关键词组成; trigger_time 触发时间,在某个事件之前还是之后; BEFORE、AFTER trigger_event 触发事件,如插入时触发、删除时触发;   INSERT:插入操作触发器,INSERT、LOAD DATA、REPLACE时触发;   UPDATE:更新操作触发器,UPDATE操作时触发;   DELETE:删除操作触发器,DELETE、REPLACE操作时触发; INSERT

1101 笔记

*爱你&永不变心* 提交于 2019-12-03 05:12:45
目录 1. 事务 为什么要使用 使用 特性 原子性 一致性 隔离性 持久性 2.存储引擎 InnoDB MYIsam 区别 3.视图 定义 增加视图 查看视图 删除视图 4.触发器 语法 增加触发器 查看触发器 删除触发器 5.存储过程 定义 优点 缺点 总结 语法 创建 使用 删除 6.函数 7.数据库备份 语法 1. 事务 mysql主要用于处理操作量大,复杂度高的数据,比如在人员管理系统 你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 在mysql中只有使用了InnoDB数据库引擎的数据库或表才支持事务 事务处理可以维护数据库的完整性,保证成批的sql语句要么全部执行,要么全部不执行 事务用来管理insert,update,delete语句 为什么要使用 很多时候一个数据操作,不是一个sql语句就完成的,可能有很多个sql语句,如果部分sql执行成功而部分sql执行失败将导致数据错乱 eg: 转账 == 转入转出均成功,才能认为操作成功 使用 开启事务: start transaction sql语句: 提交: commit 回滚: rollback // 影响所有,回滚到初始 start transaction; --开启事物,在这条语句之后的sql将处在同一事务,并不会立即修改数据库

SQL触发器及视图

匿名 (未验证) 提交于 2019-12-02 23:42:01
版权声明:【北京Java青年】:456588754 https://blog.csdn.net/Amen_Wu/article/details/53457564 触发器:当emp表一条记录被删时,把被删记录写到日指表 Create table del_emp as select * from emp where 1=2; Select * from emp; Create or replace trigger tr_del_emp Before delete On emp For each Row When (old.deptno<>10) Begin Insert into ; 触发器类型: 模式触发器(DDL):模式中DDL语句; 数据库级触发器:开、关、登、退数据库系统事件时执行; DML触发器:行级、语句级、instead of(视图)触发器。 触发器的三个部分: 1. 触发器语句(事件):定义激活触发器的DML事件、DDL事件 Before delete On emp For each row 2. 触发器限制:执行触发器条件,条件为真时才激活触发器 When (old.dept<>10) 触发器操作(主体):包含一些SQL语句、代码,在触发语句发出且触发条件为真时运行。 Begin Insert into del_emp(deptno,empno,… …) //

MySQL 触发器

匿名 (未验证) 提交于 2019-12-02 22:06:11
MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。 创建触发器 在MySQL中,创建触发器语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 其中: trigger_name:标识触发器名称,用户自行指定; trigger_time:标识触发时机,取值为 BEFORE 或 AFTER; trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE; tbl_name:标识建立触发器的表名,即在哪张表上建立触发器; trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。 由此可见,可以建立6种触发器,即: BEFORE 3种: INSERT、UPDATE、DELETE、 AFTER 3种: INSERT、UPDATE、DELETE。 另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。 trigger_event 详解 MySQL 除了对 INSERT、UPDATE、DELETE 基本操作进行定义外,还定义了

mysql开发 -- 触发器

匿名 (未验证) 提交于 2019-12-02 22:06:11
MYSQL 从5.0.2版本开始支持触发器的功能,触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 触发器创建语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW BEGIN trigger_statement END 其中: trigger_name 是触发器的名称。 trigger_time 是触发器的触发时间 ,可以是BEFORE 或是AFTER,BEFORE的含义值在检查约束前触发,AFTER 是在检查约束后触发。 trigger_envent 是触发器的触发事件。 可以是 INSERT,UPDATE ,DELETE. 对于同一个表的相同触时间的相同触发事件,只能定义一个触发器 。 使用别名 NEW 和OLD 来应用触发器中发送变化的记录内容。现在的触发器还只支持行级触发,不支持语句级触发。 为 film 表创建 after insert 触发器: DELIMITER && CREATE TRIGGER ins_flim after insert ON film FOR EACH ROW BEGIN INSERT INTO file_text(film_id ,

MySQL的学习--触发器

匿名 (未验证) 提交于 2019-12-02 22:06:11
MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。 创建触发器 在MySQL中,创建触发器语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 其中: trigger_name:标识触发器名称,用户自行指定; trigger_time:标识触发时机,取值为 BEFORE 或 AFTER; trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE; tbl_name:标识建立触发器的表名,即在哪张表上建立触发器; trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。 另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。 trigger_event 详解 M ySQL 除了对 INSERT、UPDATE、DELETE 基本操作进行定义外,还定义了 LOAD DATA 和 REPLACE 语句,这两种语句也能引起上述6中类型的触发器的触发。 LOAD DATA 语句用于将一个文件装入到一个数据表中

MySQL触发器更新和插入操作

匿名 (未验证) 提交于 2019-12-02 22:06:11
触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。 触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素: 1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 触发器基本语法如下所示: 其中:trigger_time是触发器的触发事件,可以为before(在检查约束前触发)或after(在检查约束后触发);trigger_event是触发器的触发事件,包括insert、update和delete,需注意对同一个表相同触发时间的相同触发事件,只能定义一个触发器;可以使用old和new来引用触发器中发生变化的记录内容。 触发器SQL语法: create trigger triggerName after/before insert/update/delete on 表名 for each row #这句话在mysql是固定的 begin sql语句; end; 来源:博客园 作者: _小豪豪 链接