01 01SQL進階及查詢練習之約束

1 約束之主鍵約束

約束是添加在列上的,用來約束列的。

1、主鍵約束(唯一標識)
下面是主鍵的特點:
(1)非空
(2)唯一
(3)被引用(與外鍵相關)
2、當表的某一列被指定爲主鍵後,該列就不能爲空,不能有重複值出現。
3、創建表時指定主鍵的兩種方式:
(1)

CREATE TABLE stu(
	sid CHAR(6) PRIMARY KEY,
	name CHAR(10),
	...
);

(2)

CREATE TABLE stu(
	sid CHAR(6),
	name CHAR(10),
	...,
	PRIMARY KEY(sid)
);

指定sid列爲主鍵列,即爲sid列添加主鍵約束。
4、修改表時指定主鍵:ALTER TABLE stu ADD PRIMARY KEY(sid)
5、刪除主鍵:ALTER TABLE stu DROP PRIMARY KEY

2 主鍵自增長

因爲主鍵列的特性是:必須唯一、不能爲空,所以我們通常會指定主鍵類爲整型,然後設置其爲自動增長,這樣可以保證在插入數據時主鍵列的唯一和非空特性。
1、創建表時指定主鍵自增長

CREATE TABLE stu(
	sid INT PRIMARY KEY AUTO_INCREMENT,
	name CHAR(10),
	...,
);

2、修改表時設置主鍵自增長:AlTER TABLE stu CHANGE sid sid INT AUTO_INCREAMENT
3、修改表時刪除主鍵自增長:ALTER TABLE stu CHANGE sid sid INT
4、測試主鍵自增長:

INSERT INTO stu VALUES(NULL, 'lks');
INSERT INTO stu(name) VALUES('lks');

3 非空和唯一約束

1、非空約束
因爲某些列不能設置爲NULL值,所以可以對列添加非空約束。
(1)例如:

CREATE TABLE stu(
	sid INT PRIMARY KEY AUTO_INCREMENT,
	name CHAR(10) NOT NULL,
	...
);

對name列設置了非空約束。
2、唯一約束
(1)數據庫某些列不能設置重複值,所以可以對列添加唯一約束。
(2)例如:

CREATE TABLE stu(
	sid INT PRIMARY KEY AUTO_INCREMENT,
	name CHAR(10) NOT NULL UNIQUE,
	...
);

對name設置了唯一約束。

4 概述模型

當我們要完成一個軟件系統時,需要把系統中的實體抽取出來,形成概念模型。例如部門、員工都是系統中的實體。概念模型中的實體最終會成爲Java中的類(對象模型),數據庫中的表(關係模型)。

實體之間還存在着關係,關係有三種:
(1)一對一:例如丈夫和妻子就是一對一的關係,一個男人只能有一個妻子,而一個女人只能有一個老公。
(2)一對多:例如每個員工都從屬一個部門,而一個部門可以有多個員工,其中員工是多方,而部門是一方。
(3)多對多:老師和學生的關係就是多對多,一個老師可以有多個學生,一個學生可以有多個老師。

概念模型在Java中成爲實體類(JavaBean),類就使用成員變量來完成關係,一般都是雙向關聯。多對一雙向關聯中,即員工關聯部門,部門也關聯員工。

對象模型:可以雙向關聯,而且引用的是對象,而不是一個主鍵。

關係模型:只能多方引用一方,而且引用的只是主鍵,而不是一整行記錄。

5 外鍵約束

(1)外鍵必須是另一個表的主鍵的值(外鍵要引用另一個表的主鍵)
(2)外鍵可以重複
(3)外鍵可以爲NULL。
(4)一張表中可以有多個外鍵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章