sql 不僅可以用來操縱表中的資料,還可以對錶本身進行操縱,包括表的建立、更改和刪除。
一般有兩種建立表的方法:
我們以 customers 表的建立為例,建立語句如下:
create
table customers
( cust_id char(10
)not
null
, cust_name char(50
)not
null
, cust_address char(50
)null
, cust_city char(50
)null
, cust_state char(5
)null
, cust_zip char(10
)null
, cust_country char(50
)null
, cust_contact char(50
)null
, cust_email char
(255
)null
);
在建立新的表時,指定的表名必須不存在,否則會出錯。為防止意外覆蓋已有的表,sql 要求首先手工刪除該錶,然後再重建它,而不是簡單的用建立表語句覆蓋它。
每個表列要麼是null
列,要麼是not null
列。當我們不明確指定null
或not null
時,預設為null
。
sql 允許指定預設值,在插入行時如果不給出值,dbms 將自動採用預設值。預設值在create table
語句的列定義中用關鍵字default
指定。
例如:
create
table orderitems
( order_num int
notnull
, order_item int
notnull
, prod_id char(10
)not
null
, quantity int
notnull
default1,
item_price decimal(8
,2)not
null
);
在這個例子中,這一列的描述增加了default 1
,指示 dbms,如果不給出數值則使用數值 1。
預設值經常用於日期或時間戳列。例如,通過指定引用系統日期的函式 或變數, 將系統日期 用作預設日期。
在前面的課程我們提到,null
值就是沒有值或缺值。允許 null 值的列允許在插入行時不給出該列的值。當指定列為not null
時,如果有設定預設值,在插入行時,允許不給出該列的值。當指定列為not null
時,如果沒有設定預設值,在插入或更新行時,該列必須有值。如果不給出值,在插入的時候會報錯。
在選擇使用default
值還是null
時,我們更傾向使用default
值。
在需要更新表定義時,我們可以使用alter table
語句。
使用alter table
更改表結構,必須給出下面的資訊:
alter
table vendors
add vend_phone char(20
);
刪除剛才增加的列:
alter
table vendors
drop
column vend_phone;
複雜的表結構更改一般需要手動刪除過程,它涉及以下步驟:
使用alter table
要極為小心,應該在進行改動前做完整的備份(表結構和資料的備份)。資料庫表的更改不能撤銷,如果增加了不需要的列,也許無法刪除它們。類似地,如果刪除了不應該刪除的列,可能會丟失該列中的所有資料。
刪除表:
刪除表(刪除整個表而不是其內容)非常簡單,使用drop table
語句 即可:
例如:
drop
table custcopy;
刪除表沒有確認,也不能撤銷,執行這條語句將永遠刪除該錶。
這一課介紹了幾條新的 sql 語句。create table
用來建立新錶,alter table
用來更改表列(或其他諸如約束或索引等物件),而drop table
用來完整地刪除乙個表。這些語句必須小心使用,並且應該在備份後使用。
本系列目錄:
零基礎入門 sql 系列之(一)查詢資料
零基礎入門 sql 系列之(二)排序
零基礎入門 sql 系列之(三)過濾資料
零基礎入門 sql 系列之(四)內建函式
零基礎入門 sql 系列之(五)資料彙總
零基礎入門 sql 系列之(六)表連線
零基礎入門 sql 系列之(七)組合
零基礎入門 sql 系列之(八)插入、更新、刪除
零基礎入門 sql 系列之(九)建立和操作表
零基礎入門 sql 系列之(十)檢視
零基礎入門 SQL 系列之(七)組合
前面講到的 sql 查詢只包含從乙個或多個表中返回資料的單條select語句。sql 也允許執行多個查詢 多條select語句 並將結果作為乙個查詢結果集返回,這些組合查詢通常稱為復合查詢。主要有兩種情況需要使用組合查詢 1.對乙個表執行多個查詢,按乙個查詢返回資料。2.從不同的表返回資料。組合查詢...
零基礎入門 SQL 系列之(八)插入 更新 刪除
insert用來將行插入到資料庫表中。插入有幾種方式 insert into customers values 1000000006 toy land 123 any street new york ny 11111 usa jordan jordan gmail.com 插入到新行中的值由valu...
iptables零基礎快速入門系列
最近發現一博主 朱雙印,他的關於iptables的系列部落格,講解的非常棒,遂記錄下來,以便查閱。iptables詳解 1 iptables概念 iptables詳解 2 iptables實際操作之規則查詢 iptables詳解 3 iptables規則管理 iptables詳解 4 iptable...