美文网首页
十一、约束、视图和事物

十一、约束、视图和事物

作者: 天天阳光好 | 来源:发表于2017-04-21 17:11 被阅读0次

一、CHECK,列的约束

1. 创建表时检查约束

CREATE TABLE table_name

(

id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

column_name CHAR(2) CHECK (column_name IN ('男','女'))

)

2.用 ALTER 给已创建的表增加约束

ALTER TABLE table_name

ADD CONSTRAINT CHECK gender IN ('M','F');

3.CHECK的用法和注意事项

column_name INT(4) CHECK (column_name > 200);

column_name VARCHAR(10) CHECK ('A'=SUBSTRING(column_name,1,1 ));    '首字母必须为A

column_name VARCHAR(10) CHECK ('A'=SUBSTRING(column_name,1,1 )  AND '8'=SUBSTRING(column_name,2,1 ));    '字符串首个字符必须为A,第二个字符必须为2

① CHECK可以限定插入列的内容;

② CHECK可以和所有条件运算符一起使用,但无法用于子查询;

③ MYSQL数据库里不能使用CHECK,它会忽略CHECK语句。

二、视图,存储在数据库内的查询

1.创建视图与查询

CREATE VIEW table_name1 AS

SELECT mc.name,mc.phone,mc.email FROM my_contacts mc

NATURAL JOIN job_desired jd

WHERE jd.title='column_name';

① 查询

创建视图后,若需查询内容,就不需要写这么长的代码了,只需要把视图当做一张表,直接SELECT,代码是:

SELECT * FROM table_name1;

② 视图的原理

当查询中实际使用视图时,原理与子查询一样,CREATE VIEW AS 后的语句作为子查询,并设定别名为 table_name1,具体代码如下:

SELECT * FROM

(SELECT mc.name,mc.phone,mc.email FROM my_contacts mc

NATURAL JOIN job_desired jd

WHERE jd.title='column_name') AS table_name1

2.视图的优势

视图是在查询时使用VIEW时才存在的表,它被视为虚拟表,其行为和表一样,但是不会一直保持在数据库里。

① 创建了视图,就不需要创建复杂的连接和子查询;

② 即使改变了数据库的结果,也不会破坏依赖表的应用程序;

③ 可以隐藏敏感信息,让查询者只看到他能看到的信息。

3.利用视图进行INSERT、UPDATE和DELETE

以下2种情况不能这么做,事实上用传统的方式做更好

① 视图使用了统计函数,则无法用视图改变数据;

② 如果包含GROUP BYDISTINCTHAVING,也不能改变。

关键词 CHECK OPTION

CREATE VIEW table_name AS 

SELECT * FROM poggy_bank WHERE coin='D' WITH CHECK OPTION;

① 如果在视图后添加CHECK OPTION,那么RDBMS会检查每个INSERT、UPDATE和DELETE语句,符合WHERW的条件的才能添加、更新和删除;

② 在MYSQL中,可以利用CHECK OPTION模拟CHECK CONSTRAIN

4、观察和清除视图

SHOW TABLES  查看所有视图和表

DESC table_name 观察视图的结构

DEOP VIEW table_name 删除视图

三、事务,一群必须同时完成或同时不完成的SQL语句

1.事务(transaction)的定义

在事物过程中,如果所有步骤无法不受干扰地完成,则完成任何单一步骤

2.判断是否构成事务的四个原则,ACID检测

① 原子性,ATOMICITY

事务里的每一个步骤都必须完成,否则只能都不完成,不能只执行部分步骤;

② 一致性,CONSISTENCY

事务完成后应该维持数据库的一致性,即财务里所说的收支一致的概念;

③ 隔离性,ISOLATION

表示每次事务都会看到具有一致性的数据库,无论其他事务有什么行动(如一个银行账户有2个人在同时使用时,一人在操作,另一人不能查询账户余额);

④ 持久性,DURABILITY

事务完成后,数据库需要正确地存储数据并保护数据免受断电或其他威胁的伤害。

3.事务的SQL语句

START TRANSACTION;  持续追踪后续所有SQL语句,直到输入COMMIT或ROLLBACK为止;

COMMIT; 如果所有语句的改变都已经妥当,输入次让语句改为变为真;

ROLLBACK;  回滚,如果改变的过程有问题,可用次回到之前开始的状态;

在COMMIT之前,数据库都不会发生任何改变。

4.可更新视图

① 可更新视图就是可以改变底层表的视图,重点是其内容必须包含它引用表中所有设定为NOT NULL

② 如此一来,即可确定每个必须有值确实都填入/更新/删除了内容

5.如何让事务在MYSQL中运行

①存储引擎必须是BDBInnDB,两种支持事务的引擎之一;

② SHOW CREATE TABLE table_name

③ 引擎的语句

ALTER TABLE table_name TYPE=InnDB

相关文章

  • 十一、约束、视图和事物

    一、CHECK,列的约束 1. 创建表时检查约束 CREATE TABLE table_name ( id INT...

  • 视图和事物

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互...

  • 10.3 Masonry多视图约束

    Masonry多视图约束 Masonry多视图约束.png

  • ScrollView使用Masonry自动布局

    我们将UIScrollView和他的子视图之间的约束分为下面三类: 1、间距类约束:子视图和父视图之间,上,左,下...

  • 视图 约束

    视图 简单视图:单个表 复杂视图:表中包含着各种函数 连接视图:视图中牵扯到多个表 创建视图:create vie...

  • 六:约束、索引和视图

    一:表的约束 表的约束:保证数据的完整性和安全性(例如:性别只能填男女,不能写其他的) 主键约束(primary ...

  • ConstraintLayout完全解析2

    调整约束偏差 向视图的两侧添加约束(并且同一维度的视图大小为“固定”或“换行内容”)时,视图将在两个约束之间居中,...

  • UIScrollView使用xib布局

    UIScrollView布局 将UIScrollView加入父视图中,增加相应的约束,相对父视图约束如下。采用的是...

  • AutoLayout之约束(2)

    视图项####### 约束用firstItem和secondItem属性引用它所影响的视图。这些属性是只读的,而且...

  • 约束小技巧

    约束抗压缩和抗拉伸 宽度或高度的两个视图互相约束时,限制可压缩和可拉伸优先级可有效防止视图显示错位或无法显示

网友评论

      本文标题:十一、约束、视图和事物

      本文链接:https://www.haomeiwen.com/subject/jvzrzttx.html