創(chuàng )建表
約束
使用DEFAULT確定默認值
使用PRIMARY KEY指定主鍵
使用FOREIGN KEY指定外鍵
使用UNIQUE確保值唯一
使用CHECK創(chuàng )建檢查約束
使用CREATE TEMPORARY TABLE創(chuàng )建臨時(shí)表
使用CREATE TABLE AS利用已存在表創(chuàng )建新表
使用ALTER TABLE修改表
使用DROP TABLE刪除表
要創(chuàng )建表,需要定義如下內容:
1.表名
2.列名
3.列的數據類(lèi)型
4.列的默認值
5.約束
表名在數據庫中必須唯一,列名在表中必須唯一。
可以用CREATE TABLE語(yǔ)句創(chuàng )建新表,一般的語(yǔ)法如下:
CREATE TABLE table ( column1 data_type1 [col_constraints1], column2 data_type2 [col_constraints2],…columnN data_typeN [col_constraintsN],[, table_constraint1][, table_constraint2]…[, table_constraintN]);
每個(gè)列包含列名、數據類(lèi)型,以及可選的一個(gè)或多個(gè)列約束的列表。
可選的表約束列表放在最后的列定義之后。
約束定義了列允許的值的規則。DBMS使用這些規則自動(dòng)強制性地保證數據庫信息的完整性。
NOT NULL 阻止向列中插入空值
PRIMARY KEY 設置表的主鍵列
FOREIGN KEY 設置表的外鍵列
UNIQUE 阻止向列中插入重復的值
CHECK 使用邏輯(布爾)表達式限制插入列中的值
依據使用環(huán)境,約束分為列約束和表約束。
如果不顯示命名約束,DBMS將自動(dòng)產(chǎn)生并分配約束的名稱(chēng)。
系統分配的名稱(chēng)經(jīng)常包含隨機的字符串并且使用起來(lái)很麻煩,所以應該用CONSTRAINT子句分配自定義的約束名。
在CREATE TABLE列定義中使用關(guān)鍵字DEFAULT定義默認值。
如果插入行時(shí)沒(méi)有給出列的值,應用列的默認值。
如果沒(méi)有指定默認值,就認為是NULL。
主鍵唯一標識出表的每一行。
沒(méi)有兩行擁有相同主鍵。
主鍵不允許為空值。
每個(gè)表只能有一個(gè)主鍵。
單列鍵是簡(jiǎn)單鍵,多列鍵是組合鍵。
在CREATE TABLE的定義中使用關(guān)鍵字PRIMARY KEY定義主鍵約束。
主鍵值通常在插入后不再改變。
外鍵是表的一列(或一組列),它的值聯(lián)系或引用其他表的值。
外鍵確保表中的行,在另外被稱(chēng)作引用表或父表的表中有相對應的行。
外鍵不像主鍵,允許空值。
外鍵值通常不是唯一的。
不同表的外鍵列可以引用父表的同一列。
在CREAT TABLE中使用關(guān)鍵字FOREIGN KEY或REFERENCES來(lái)定義外鍵約束。
外鍵和它的父鍵可以有不同的列名,但是必須有相同的數據類(lèi)型。
FOREIGN KEY列不一定非要引用另一個(gè)表的PRIMARY KEY列,它也可以引用另一個(gè)表的UNIQUE列。
唯一約束確保列(列集)沒(méi)有重復的值。
除了唯一列可以包含空值和表可以包含多個(gè)唯一列,唯一約束和主鍵約束沒(méi)有別的區別。
單鍵列是簡(jiǎn)單約束,多鍵列是唯一約束。
前面對插入值的約束僅是它所在列的數據類(lèi)型、長(cháng)度、范圍。
可以加入檢查約束來(lái)進(jìn)一步限制列(列集)可以接受的值。
在CREAT TABLE中使用關(guān)鍵字CHECK創(chuàng )建檢查約束。
非臨時(shí)表稱(chēng)作基礎表,它們持久保存數據直到顯式刪除(DROP)表為止。
SQL允許創(chuàng )建臨時(shí)表來(lái)存儲中間結果。
臨時(shí)表將復雜耗時(shí)的查詢(xún)結果存儲起來(lái),在隨后的查詢(xún)中重復使用這個(gè)結果。在會(huì )話(huà)或事物結束時(shí),DBMS能夠自動(dòng)清空臨時(shí)表。
使用標準的CREATE TABLE,在關(guān)鍵字TABLE之前加上關(guān)鍵字GLOBAL TEMPORARY或LOCAL TEMPORARY就可以創(chuàng )建臨時(shí)表。
臨時(shí)表也可以自己刪除而不是等DBMS來(lái)釋放內存。
CREATE TABLE AS語(yǔ)句創(chuàng )建新表且向其中填充SELECT的結果。
它類(lèi)似于使用CREATE TABLE創(chuàng )建空表,然后使用INSERT SELECT填充表。
CREATE TABLE AS通常被用于如下操作:存檔、備份、創(chuàng )建快照、快速復制表結構但不包含數據、創(chuàng )建測試數據。
語(yǔ)法是:
CREATE TABLE new_tableAS subquery;
new_table是要創(chuàng )建的表的名稱(chēng),subquery是一個(gè)返回插入到new_table表行的SELECT語(yǔ)句。
使用ALTER TABLE語(yǔ)句來(lái)增加、修改、刪除列和約束,可以修改表。
ALTER TABLE table alter_table_action
table是要修改的表名,alter_table_action是以ADD、ALTER或DROP開(kāi)始表明要采取行動(dòng)的子句。
使用DROP TABLE語(yǔ)句從數據庫刪除表。
DELETE FROM table是清空表,刪除表和刪除表中的所有行的內容不同。
PS:
不同的數據庫可能會(huì )有細節差異,到時(shí)候針對具體情況再看相關(guān)文檔吧。
推薦sql軟件:http://www.sqliteexpert.com/
聯(lián)系客服