zoukankan      html  css  js  c++  java
  • 0009《SQL必知必会》笔记05-表的创建与约束

    1、创建表:用CREATE TABLE 语句,要指明:表名(不能与现有表名重复)、列名、每列的数据类型

    CREATE TABLE product
    (
        prod_id            char(10),
        vend_id            char(10),
        prod_name          char(254),
        prod_price         number(8,2),
        prod_desc          varchar(1000)  
    );

    2、约束。数据库中的表不同于Excel,其表中的数据必须严格规范合法,约束就是用来管理如何插入或处理数据库数据的规则。

      1.主键约束:主键列的每一个数据可以唯一标识其所在的行,任意两行的主键值都不相同;主键值不能为空,因此每行都有一个主键值;主键列不更新不变化,并且不能重用;主键可以创建在一个列或多个列上。关键字:PRIMARY KEY

      2.外键约束:外键约束列的数据必须只能是另一个表的主键列(也可以是唯一约束列?)中的数据。比如orders表的cust_id必须是customers表的cust_id列里面的值,不能在orders.cust_id列添加一个在customers.cust_id列里面没有的数据。关键字:FOREIGN KEY

      3.唯一约束:唯一约束列的每个数据都是唯一的,任意两行都不相同。与主键的区别:一个表只有一个主键约束,但可以有多个唯一约束;唯一约束可以是NULL值;唯一约束列可以修改更新重复使用;不能用来定义外键。比如身份证号就可以做唯一约束(当然现实中有两个完全相同的身份证号码的意外情况)。关键字:UNIQUE

      4.检查约束:使得检查约束列的值符合某个条件,比如购买数量>0;性别为“男”或“女”。关键字:CHECK(条件)

      5.非空约束:就是NOT NULL,是否允许某一列的值为空,不设置的话,默认是NULL。注意NULL和‘’的区别。

    3、在创建表时创建约束:

    CREATE TABLE product
    (    prod_id        char(10)       NOT NULL PRIMARY KEY,
         vend_id        char(10)       NOT NULL,
         prod_name      char(254)      NOT NULL,
         prod_price     number(8,2)    NOT NULL CHECK(prod_price>0),
         prod_desc      varchar(1000)  NOT NULL,
    CONSTRAINT for_vend_id FOREIGN KEY(vend_id) REFERENCES vendors(vend_id)
    );

    或者:

    CREATE TABLE product
    (    prod_id        char(10)       NOT NULL,
         vend_id        char(10)       NOT NULL,
         prod_name      char(254)      NOT NULL,
         prod_price     number(8,2)    NOT NULL,
         prod_desc      varchar(1000)  NOT NULL,
    PRIMARY KEY(prod_id),
    CHECK(prod_price>0),
    CONSTRAINT for_vend_id FOREIGN KEY(vend_id) REFERENCES vendors(vend_id)
    );

  • 相关阅读:
    Mysql 创建联合主键
    Shell中的while循环
    shell 日期加减运算
    PHP日期格式转时间戳
    Uber 叫车时,弹出以下代码导致无法打车(An email confirmation has been sent to...),解决办法
    如何让Table显示滚动条
    mySQL中replace的用法
    打豪车应用:uber详细攻略(附100元优惠码)
    svn 命令行创建和删除 分支和tags
    php ob_start()、ob_end_flush和ob_end_clean()多级缓冲
  • 原文地址:https://www.cnblogs.com/sonng/p/5420742.html
Copyright © 2011-2022 走看看