數據庫系統原理筆記(4)

在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)
);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章