zoukankan      html  css  js  c++  java
  • 第十一章-约束、视图与事务

    约束

    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 与视图均有助于维护控制权。

  • 相关阅读:
    [转]对Lucene PhraseQuery的slop的理解
    Best jQuery Plugins of 2010
    15 jQuery Plugins To Create A User Friendly Tooltip
    Lucene:基于Java的全文检索引擎简介
    9 Powerful jQuery File Upload Plugins
    Coding Best Practices Using DateTime in the .NET Framework
    Best Image Croppers ready to use for web developers
    28 jQuery Zoom Plugins Creating Stunning Image Effect
    VS2005 + VSS2005 实现团队开发、源代码管理、版本控制(转)
    禁止状态栏显示超链
  • 原文地址:https://www.cnblogs.com/hell0x/p/5076360.html
Copyright © 2011-2022 走看看