創建帶主鍵和約束的表
創建帶組合主鍵和外鍵的表
-
Student (學生表)
-
CREATE TABLE Student ( sclass varchar(10) NOT NULL, --- 限制非空 snumb varchar(10) PRIMARY KEY, --- 設置為主鍵 sname varchar(40) NOT NULL, --- (下)設置默認值男,約束選項為男女 sgender varchar(4) DEFAULT '男' CONSTRAINT consgender CHECK (sgender IN('男', '女')), sbirthday date, sage int CONSTRAINT consage CHECK (sage >= 0 and sage <= 150) ) CONSTRAINT 約束名 CHECK (條件)
-
SELECT INTO Student VALUES('電氣51', '10002', '王濤', '男', '1993-2-1', 18)
INSERT INTO Student(sclass, snumb, sname) VALUES('電氣51', '10004', '王濤') ---> 產生默認性別男 SELECT * FROM Student
INSERT INTO Student(sclass, snumb) VALUES('電氣51', '10005') ---- 出現錯誤: 不能將值 NULL 插入列 'sname'
以上為,加了約束之后的效果
- Course (課程)
CREATE TABLE Course ( cnumb varchar(10) PRIMARY KEY, --- 設為主鍵 cname varchar(40) NOT NULL, --- 非空 chours int CONSTRAINT conshour CHECK(chours >= 0 and chours <= 300), credit decimal(5,2) CONSTRAINT conscredit CHECK(credit >= 0 and credit < 20), intro text --- text字段存放一段文字 )
INSERT INTO Course VALUES('ENP09001', '理論力學', 56, 3, '研究物體機械運動的基本規律') SELECT * FROM Course
-
study (選課表)
CREATE TABLE Study ( snumb varchar(10), cnumb varchar(10), score decimal(5,2), PRIMARY KEY (snumb, cnumb), ---- 設為組合主鍵 FOREIGN KEY (snumb) REFERENCES Student(snumb), ---- (參照完整性)聲明是什么表中的外鍵(即:插入數據時,必須要在Student和Course存在才可以) FOREIGN KEY (cnumb) REFERENCES Course (cnumb) )
INSERT INTO Study VALUES('10001', 'ENP09001', 90) --- snumb和cnumb必須要在Student和Course存在才可以 SELECT * FROM Student SELECT * FROM Course SELECT * FROM Study
3.總結:
//添加內容
四類數據完整性: 實體完整性,確保不出現完全相同的數據記錄 區域完整性, 通過限制數據類型,檢查約束,輸入格式,外鍵約束,默認值,非空等體現 參考完整性,避免因一個數據表的記錄改變而造成相關數據表內的數據變成無效值。 用戶自定義完整性,用戶自定義由用戶根據實際應用中的需要自行定義。