在SQL中定義關係模式
SQL中的關係
SQL區分三類關係:
1.存儲的關係,稱爲表(table),類似於excel中的sheet,其在數據庫中存儲,用戶可以依此對其元組進行查詢和更新。
2.視圖(view),通過計算來定義的關係。這種關係並不在數據庫中促成農戶,而是在需要上的自定義構造。
3.臨時表,是在執行數據查詢和更新時由SQL處理程序臨時構造。這些臨時表會在處理結束後被刪除而不會存儲在數據庫裏。
數據類型
關係中所有屬性都必須具有數據類型,而這些數據類型也是SQL系統所支持的。
1.可變長度或固定長度字符串,具體體現爲CHAR(n)(最大爲n個字符的固定長度字符串)和VARCHAR(n)(最多隻有n個字符的字符串)
具體實現的時候,前者在佔用不足的情況下會填充空格,而後者則是直接添加一個結束符號或者字符長度值。
2.固定或可變長度的位串
位串和字符串類似,但是它們的值是由比特而不是由字符組成,類型BIT(n)表示長度爲n個比特的位串。BIT VARYING(n)表示最大長度爲n的位串。
3.BOOLEAN
該類屬性表示邏輯值,具體可能值是TURE、FALSE和UNKNOW
4.類型INT和INTEGER(二者同義)
這表示典型的整數值,類型SHORTINT也表示整數,但是表示的位數可能小寫,具體取決於實現。
5.浮點值
類型FLOAT和REAL(二者同義),表示典型的浮點數值。高精度浮點值使用DOUBLE PRECISION。
SQL還指定了小數點後位數的浮點類型,例如DECIMAL(n,d)表示n位有效數字的十進制數,而小數點位於右數第d位
6.日期和時間
這分別通過DATA和TIME數據類型表示
簡單的表定義
保留字(關鍵字)CREATE TABLE
CREATE TABLE Movies(
title CHAR(100);
year INT,
length INT,
genre CHAR(100),
studioName CHAR(30),
producerC# INT,
);
修改關係模式
刪除某個關係R
DROP TABLE R;
修改關係
修改操作語句關鍵字ALTER TABLE
,其後加上關係的名字,後還可以接選項,最重要的兩種就是:
①ADD後面加上屬性名字和數據類型
②DROP後面加上屬性名字
例如 修改關係MovierStar,爲其添加屬性phone
語句爲ALTER TABLE MovieStar ADD phone CHAR(16);
另一個例子則是ALTER TABLE MovieStar DROP birthdate;
默認值
創建或者修改時,通常建議使用NULL值來代替該位置上的“真實值” 有的時候也可能是使用默認值
聲明的時候,可以加上保留字DEFAULT和一個合適的值。要麼是NULL,要麼是常量。
例如使用默認值進行生命
gender CHAR(1) DEFAULT '?',
birthdate DATE DEFAULT DATE '0000-00-00'
至於其他例子,例如在新增屬性phone時,可以聲明默認值爲'unlisted'
語句爲ALTER TABLE MovieStar Add phone CHAR(16) DEFAULT 'unlisted';
鍵的聲明
聲明鍵的方法:
①屬性被列入關係模式的時候,聲明其是鍵(鍵僅由單個屬性組成)
②在模式聲明的項目表中增加表象,聲明一個或一組屬性是鍵(鍵由單個或者多個屬性組成)
有兩種鍵的聲明方式:
①PRIMARY KEY (不允許NULL值存在)
②UNIQUE (允許NULL值存在)
以下是幾個常見的例子;
//使用方式①聲明
CREATE TABLE MovieStar(
name CHAR(30) PRIMARY KEY,
address VARCHAR(255),
gender CHAR(1),
birthdate DATE
);
//使用方式②聲明
CREATE TABLE MovieStar(
name CHAR(30),
address VARCHAR(255),
gender CHAR(1),
birthdate DATE,
PRIMARY KEY(name)
);
//只使用方式②聲明,因爲涉及到了多個屬性作爲鍵
CREATE TABLE MovieStar(
name CHAR(30),
address VARCHAR(255),
gender CHAR(1),
birthdate DATE,
PRIMARY KEY(name,birthdate)
);