约束、视图与事务

约束

CHECK(检查)约束限定允许插入某个列的值。它与WHERE子句都使用相同的条件表达式。

1 CREATE TABLE piggy_bank(
2     id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
3     coin CHAR(1) CHECK (coin IN (‘P‘,‘N‘,‘D‘,‘Q‘))
4 )

如果插入的值无法通过CHECK条件,则出现错误信息。

视图

视图是一个只有在查询中使用view时才存在的表。它被称为虚拟表,因为其行为和表一样,也能执行表可用的操作。虚拟表不会一直保存在数据库里。

视图的好处:

1.视图把复杂查询简化为一个命令,带来更轻松的生活。

2.即使一直改变数据库结构,也不会破坏依赖表的应用程序。

3.创建视图可以隐藏读者无须看到的信息。

例:

1 CREATE TABLE piggy_bank(
2     id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
3     coin CHAR(1) NOT NULL,
4     coin_year CHAR(4)
5 )
CREATE VIEW pb_quarters AS SELECT * FROM piggy_bank WHERE coin = ‘Q‘;
CREATE VIEW pb_dimes AS SELECT * FROM piggy_bank WHERE coin=‘D‘ WITH CHECK OPTION;

INSERT INTO pb_quarters VALUES (‘‘,‘Q‘,1000);

  数据插入表,视图里也有
INSERT INTO pb_quarters VALUES (‘‘,‘D‘,3000);

  数据插入表,视图里没有

INSERT INTO pb_dimes VALUES(‘‘,‘Q‘,2005);

  因为check option产生错误信息。因为它没有通过where子句的验证

DELETE FROM pb_quarters WHERE coin = ‘N‘ OR coin = ‘P‘ OR coin = ‘D‘;

  上述查询对表没有任何影响,因为他只能找到面额是‘Q‘的硬币的记录。

UPDATE pb_quarters SET coin = ‘Q‘ WHERE coin = ‘P‘;

  上述查询对表没有任何影响,因为在视图pb_quarters里没有coin = ‘P‘的值。

CHECK OPTION 检查每个进行INSERT或DELETE的查询,它根据视图中的WHERE子句来判断这些查询可否执行。

可更新视图就是可以改变底层表的视图,可更新视图的内容需要包括它引用的表中所有设定为NOT NULL的列。

删除视图: DROP VIEW pb_dimes;

当数据的使用者不止一人时,CHECK CONSTRAINT 与视图均有助于维护控制权。

时间: 2024-10-14 11:08:04

约束、视图与事务的相关文章

索引、视图、事务

索引 是一个数据结构,用来查询数据库表的数据 主键索引: primary  key 作用:确认表中一条特定数据记录的位置,不能为空,一个表只有一个主键 外键索引:表中的一个字段(非主键)指向另一张表中的主键,称该字段为主键. foreign  key(外键名)  references  主表(主键) : 作用:多表查询时方便联系两表数据.限制:表类型必须是innodb(有约束效果) 唯一索引:确定某一列不能出现重复的值 unique 普通索引: create  index   索引名   on 

联合分组、子查询、视图、事务、python操作mysql、索引

目录 联合分组.子查询.视图.事务.python操作mysql.索引 一.联合分组 二.子查询 三.all 与any:区间修饰条件 四.视图:view 视图的增删改 五.事务 5.1.事务的概念 5.2.事务的四大特性 六.pymysql 模块:python操作mysql 6.1 安装pymysql 模块 6.2 python用pymysql 操作mysql步骤 6.3 游标操作 6.4 pymysql事务 6.5 sql注入 七.索引 联合分组.子查询.视图.事务.python操作mysql.

数据库理论之视图、事务、索引、优化查询

数据库理论之视图.事务.索引.优化查询 一.视图 灵魂三问 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果要频繁的使用一张虚拟表,可以不用重复查询 3.如何使用视图 create view 视图名 as sql语句 注意:创建出来的视图只有表结构,数据来源还是原来的表 视图通常都是用于查询,所以尽量不要修改视图中的数据 思考:开发过程中应不应该使用视图? 不应该 二.触发器 命名规则及理论 在满足对某张表数据的增删改的情况下,自动触发的功

视图,事务以及存储过程介绍

一:视图 1:定义:视图本质上是一张虚拟的表,它的数据来自select语句. 2:创建视图的语句: create view 视图名字 as select *from 表名; 3:作用: 原表安全,隐藏部分数据,开放指定的数据:因为视图可以将查询结果保存,所以可以用视图来减少书写sql的次数. 4:特点: ①:每次对视图进行的查询,其实都是再次执行了as后面的查询语句 ②:可以对视图进行修改,修改会同步到原表 ③:视图是永久存储的,存储的不是数据,而是一条 as sql 语句 二:事务 1:定义:

视图, 事务,存储过程,if,触发器,索引

视图 create [or replace]#如果存在就替换 view    视图名字(#可防止标题栏字段) as (select name,salary from em); alter view  视图名字 as (select name,salary from em);   等价于上面的 or replace 增删改查等同于 对于原表进行增删改查     视图只有结构无数据 类似变量 insert 视图名 () values() delete from 视图名字 where.. update

mysql之子查询、视图、事务及pymysql等(待修改)

联合分组 # 数据来源:在单表emp下 # 联合分组:按多个字段综合结果进行分组 # 按 area与port组合后的结果进行分组,只有组合后的结果还一致,才认为是一组 select group_concat(name),area,port from emp group by area,port; 子查询 # 增:insert into 表 select子查询 # 删:delete from 表 条件是select子查询(表不能与delete表相同) # 查:select 字段 from 表 条件

133 MySQL视图、事务、索引(都很重要)

目录 一.视图:view 视图的增删改查 二.事务 事务的四大特性 三.索引 一.视图:view 视图是存在内存中的临时表 视图的创建依赖select语句,所以就是select语句操作的结果形参的表 视图支持对数据的增删查改 视图不允许对视图表的字段做修改 视图不仅支持创建,也支持更新与删除 # 数据依赖:单表emp # 语法 # 创建视图 mysql>: create view 视图名[(别名们)] as select 语句; eg>: create view v1 as select de

MySQL拓展 视图,触发器,事务,存储过程,内置函数,流程控制,索引,慢查询优化

视图: 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 强调: (1)在硬盘中,视图只有表结构文件,没有表结构数据 (2)视图通常是用于查询,尽量不要修改视图中的数据 dro

触发器 索引视图 游标 事务

  触发器 create trigger tr_banj_insert on t_banj after insert as begin declare @log varchar(50) select @log='插入的记录:banj_mc=' +banj_mc+'banzr='+banzr from inserted --新数据 insert into t_log (biaomc,caoznr) values('t_banj',@log) end create trigger tr_banj_d