SQL基礎:創建、更改和刪除表


創建、更改和刪除表

本文目錄

  創建表

  約束

  使用DEFAULT確定默認值

  使用PRIMARY KEY指定主鍵

  使用FOREIGN KEY指定外鍵

  使用UNIQUE確保值唯一

  使用CHECK創建檢查約束

  使用CREATE TEMPORARY TABLE創建臨時表

  使用CREATE TABLE AS利用已存在表創建新表

  使用ALTER TABLE修改表

  使用DROP TABLE刪除表

 

創建表

  要創建表,需要定義如下內容:

  1.表名

  2.列名

  3.列的數據類型

  4.列的默認值

  5.約束

  表名在數據庫中必須唯一,列名在表中必須唯一。

  可以用CREATE TABLE語句創建新表,一般的語法如下:

 

CREATE TABLE table
 (
  column1 data_type1 [col_constraints1],

  column2 data_type2 [col_constraints2],

…

columnN data_typeN [col_constraintsN],

[, table_constraint1]

[, table_constraint2][, table_constraintN]

);

 

  每個列包含列名、數據類型,以及可選的一個或多個列約束的列表。

  可選的表約束列表放在最后的列定義之后。

 

約束

  約束定義了列允許的值的規則。DBMS使用這些規則自動強制性地保證數據庫信息的完整性。

  NOT NULL 阻止向列中插入空值

  PRIMARY KEY 設置表的主鍵列

  FOREIGN KEY 設置表的外鍵列

  UNIQUE 阻止向列中插入重復的值

  CHECK 使用邏輯(布爾)表達式限制插入列中的值

 

   依據使用環境,約束分為列約束表約束

  如果不顯示命名約束,DBMS將自動產生並分配約束的名稱。

  系統分配的名稱經常包含隨機的字符串並且使用起來很麻煩,所以應該用CONSTRAINT子句分配自定義的約束名。

 

使用DEFAULT確定默認值

  在CREATE TABLE列定義中使用關鍵字DEFAULT定義默認值。

  如果插入行時沒有給出列的值,應用列的默認值。

  如果沒有指定默認值,就認為是NULL。

 

使用PRIMARY KEY指定主鍵

  主鍵唯一標識出表的每一行。

  沒有兩行擁有相同主鍵。

  主鍵不允許為空值。

  每個表只能有一個主鍵。

  單列鍵是簡單鍵,多列鍵是組合鍵。

  在CREATE TABLE的定義中使用關鍵字PRIMARY KEY定義主鍵約束。

  主鍵值通常在插入后不再改變。

 

使用FOREIGN KEY指定外鍵

  外鍵是表的一列(或一組列),它的值聯系或引用其他表的值。

  外鍵確保表中的行,在另外被稱作引用表或父表的表中有相對應的行。

  外鍵不像主鍵,允許空值。

  外鍵值通常不是唯一的。

  不同表的外鍵列可以引用父表的同一列。

  在CREAT TABLE中使用關鍵字FOREIGN KEYREFERENCES來定義外鍵約束。

  外鍵和它的父鍵可以有不同的列名,但是必須有相同的數據類型。

  FOREIGN KEY列不一定非要引用另一個表的PRIMARY KEY列,它也可以引用另一個表的UNIQUE列。

 

使用UNIQUE確保值唯一

  唯一約束確保列(列集)沒有重復的值。

  除了唯一列可以包含空值和表可以包含多個唯一列,唯一約束和主鍵約束沒有別的區別。

  單鍵列是簡單約束,多鍵列是唯一約束。

 

使用CHECK創建檢查約束

  前面對插入值的約束僅是它所在列的數據類型、長度、范圍。

  可以加入檢查約束來進一步限制列(列集)可以接受的值。

  在CREAT TABLE中使用關鍵字CHECK創建檢查約束。

 

使用CREATE TEMPORARY TABLE創建臨時表

  非臨時表稱作基礎表,它們持久保存數據直到顯式刪除(DROP)表為止。

  SQL允許創建臨時表來存儲中間結果。

  臨時表將復雜耗時的查詢結果存儲起來,在隨后的查詢中重復使用這個結果。在會話或事物結束時,DBMS能夠自動清空臨時表。

  使用標准的CREATE TABLE,在關鍵字TABLE之前加上關鍵字GLOBAL TEMPORARYLOCAL TEMPORARY就可以創建臨時表。

  臨時表也可以自己刪除而不是等DBMS來釋放內存。

 

使用CREATE TABLE AS利用已存在表創建新表

  CREATE TABLE AS語句創建新表且向其中填充SELECT的結果。

  它類似於使用CREATE TABLE創建空表,然后使用INSERT SELECT填充表。

  CREATE TABLE AS通常被用於如下操作:存檔、備份、創建快照、快速復制表結構但不包含數據、創建測試數據。

  語法是:

CREATE TABLE new_table

AS subquery;

 

  new_table是要創建的表的名稱,subquery是一個返回插入到new_table表行的SELECT語句。

 

使用ALTER TABLE修改表

  使用ALTER TABLE語句來增加、修改、刪除列和約束,可以修改表。 

ALTER TABLE table alter_table_action

 

  table是要修改的表名,alter_table_action是以ADD、ALTER或DROP開始表明要采取行動的子句。

 

使用DROP TABLE刪除表

  使用DROP TABLE語句從數據庫刪除表。

  DELETE FROM table是清空表,刪除表和刪除表中的所有行的內容不同。

 

PS:

  不同的數據庫可能會有細節差異,到時候針對具體情況再看相關文檔吧。

  推薦sql軟件http://www.sqliteexpert.com/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM