官术网_书友最值得收藏!

4.8 實驗指導——冰箱信息維護

本章詳細介紹了通過約束來實現數據完整性的維護,結合本章內容,創建冰箱信息表和冰箱主人信息表并對其字段進行完整性分析,約束的創建和修改,要求如下。

創建冰箱信息表refrigerator,有字段rid、brand、model和owner。對其各個字段分析如下。

(1)rid字段數據類型為INT,有主鍵約束、非空約束和自增約束。

(2)brand字段數據類型為VARCHAR,有非空約束和默認值“海爾”。

(3)model字段數據類型為VARCHAR。

(4)owner字段數據類型為INT,有非空約束。

創建冰箱主人信息表owners,有字段oid、name、sex、age和phone,數據類型分別為INT、VARCHAR、VARCHAR、INT和VARCHAR。對其各個字段分析如下。

(1)oid字段有主鍵約束和非空約束。

(2)name字段有非空約束。

(3)sex字段有默認值“男”。

(4)age字段值為整數。

(5)phone字段有非空約束。

由于refrigerator表中的每一條冰箱記錄都對應owners表中的一個冰箱擁有者,因此表refrigerator表中的owner字段需要與owners表中的oid對應。因此需要為refrigerator表設置外鍵約束。

實現上述操作,步驟如下。

(1)創建冰箱信息表refrigerator,有字段rid、brand、model和owner,并設置它們的約束,代碼如下。

CREATE TABLE 'fruitshop'.'refrigerator' (
      'rid' INT NOT NULL AUTO_INCREMENT,
      'brand' VARCHAR(45) NOT NULL DEFAULT '海爾',
      'model' VARCHAR(45) NULL,
      'owner' INT NULL,
      PRIMARY KEY ('rid'));

(2)創建冰箱主人信息表owners,有字段oid、name、sex、age和phone,并設置它們的約束,代碼如下。

CREATE TABLE 'fruitshop'.'owners' (
      'oid' INT NOT NULL,
      'name' VARCHAR(45) NOT NULL,
      'sex' VARCHAR(45) NULL DEFAULT '男',
      'age' INT UNSIGNED NULL,
      'phone' VARCHAR(45) NOT NULL,
      PRIMARY KEY ('oid'));

(3)為refrigerator表設置外鍵約束,使owner字段對應owners表中的oid字段,代碼如下。

ALTER TABLE 'fruitshop'.'refrigerator'
    ADD INDEX 'owner_idx' ('owner' ASC);
    ALTER TABLE 'fruitshop'.'refrigerator'
    ADD CONSTRAINT 'owner'
      FOREIGN KEY ('owner')
      REFERENCES 'fruitshop'.'owners' ('oid')
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
主站蜘蛛池模板: 高淳县| 堆龙德庆县| 易门县| 尼勒克县| 三台县| 土默特左旗| 伊宁市| 东明县| 博乐市| 克拉玛依市| 兰溪市| 武冈市| 潞西市| 孟连| 巴林右旗| 武陟县| 江口县| 阿拉尔市| 建湖县| 吴川市| 宜君县| 墨江| 河北省| 怀仁县| 新闻| 中西区| 阿克苏市| 峨山| 宁陕县| 江达县| 瑞安市| 扬州市| 定西市| 北流市| 芜湖市| 马关县| 龙游县| 曲靖市| 惠东县| 平凉市| 五莲县|