SQL必知必會 建立表和操縱表

2021-10-09 09:21:14 字數 2646 閱讀 8431

sql不僅用於表資料操縱,還用來執行資料庫和表的所有操作,包括表本身的建立和處理

一般有兩種建立表的方式:

1.dbms自帶的互動式建立和管理資料庫表的工具;

2.表也可以直接sql操縱

sql建立表,可以使用create table語句。互動式工具本質上也是sql語句。

使用creat table建立表時,必須給出以下資訊:

1.新錶的名字,在關鍵字create table後面給出;

2.表列的名字和定義,用逗號隔開;

3.有的dbms需要指定表的位置;

create table products

( prod_id char(10) not null,

vend_id char(10) not null,

prod_name char(254) not null,

prod_price decimal(8,2) not null,

prod_desc varchar(1000) null

);

null值就是沒有值或缺值。允許null值的列也允許在插入行時不給出該列的值。不允許null值的列不接受沒有列值的行,換句話說,在插入或更新行時,該列必須有值。

每個表列要麼是null列,要麼是not null列,這種狀態在建立時由表的定義規定。請看下面的例子:

create table orders

( order_num integer not null,

order_date datetime not null,

cust_id char(10) not null

);

這條語句建立本書中所用的orders表。orders包含三列:訂單號、訂單日期和顧客 id 。這三列都需要,因此每一列的定義都含有關鍵字not null。這就會阻止插入沒有值的列。如果插入沒有值的列,將返回錯誤,且插入失敗。

警告:指定 null

在不指定not null時,多數 dbms 認為指定的是null,但不是所有的 dbms 都這樣。 db2 要求指定關鍵字null,如果不指定將出錯。關於完整的語法資訊,請參閱具體的 dbms 文件。

sql 允許指定預設值,在插入行時如果不給出值, dbms 將自動採用預設值。預設值在create table語句的列定義中用關鍵字default指定。

create table orderitems

( order_num integer not null,

order_item integer not null,

prod_id char(10) not null,

quantity integer not null default 1,

item_price decimal not null

);

更新表的定義,可以用alter table語句。

理想情況下,不要在表中包含資料時對其進行更新。應該在表的設計過程中充分考慮未來可能的需求,避免今後對錶的結構做大改動。

所有的 dbms 都允許給現有的表增加列,不過對所增加列的資料型別(以及null和default的使用)有所限制。

許多 dbms 不允許刪除或更改表中的列。

多數 dbms 允許重新命名表中的列。

許多 dbms 限制對已經填有資料的列進行更改,對未填有資料的列幾乎沒有限制。

alter table更改表結構,必須給出下面的資訊:

1.在alter table之後給出要更改的表名(該錶必須存在,否則出錯)

2.列出要修改哪些更改

增加列

alter table vendors

add vend_phone char(10);

刪除列

alter table vendors

drop column vend_phone;

複雜的表結構更改一般需要手動刪除過程,它涉及以下步驟:

用新的列布局建立乙個新錶;

使用insert select語句(關於這條語句的詳細介紹,請參閱第 15 課)從舊表複製資料到新錶。有必要的話,可以使用轉換函式和計算字段;

檢驗包含所需資料的新錶;

重新命名舊表(如果確定,可以刪除它);

用舊表原來的名字重新命名新錶;

根據需要,重新建立觸發器、儲存過程、索引和外來鍵。

警告:小心使用 alter table

使用alter table要極為小心,應該在進行改動前做完整的備份(模式和資料的備份)。資料庫表的更改不能撤銷,如果增加了不需要的列,也許無法刪除它們。類似地,如果刪除了不應該刪除的列,可能會丟失該列中的所有資料。

刪除表(刪除整個表而不是其內容)非常簡單,使用drop table語句即可:

drop table custcopy;
每個 dbms 對錶重新命名的支援有所不同。對於這個操作,不存在嚴格的標準。 db2 、 mariadb 、 mysql 、 oracle 和 postgresql 使用者使用rename語句, sql server 使用者使用sp_rename儲存過程, sqlite 使用者使用alter table語句。

所有重新命名操作的基本語法都要求指定舊表名和新錶名。不過,存在 dbms 實現差異。關於具體的語法,請參閱相應的 dbms 文件。

SQL必知必會 建立和操縱表

sql必知必會 讀書筆記 1.建立表 一般有兩種建立表的方法 2.表建立基礎 利用create table建立表,必須給出下列資訊 create table products prod id char 10 not null,vend id char 10 not null,prod name ch...

SQL必知必會 建立和操縱表(十七)

一般有兩種建立表的方法 多數dbms都具有互動式建立和管理資料庫表的工具 表也可以直接用sql語句操縱 create table products prod id,char 10 not null,vend id,char 10 not null,prod name,char 10 not null...

SQL 必知必會 筆記 15 建立和操縱表

建立表的兩種辦法 表建立基礎 建立表示例 1 create table products2 3 prod id char 10 not null,是否可以為null 4 vend id char 10 not null 5 prod name char 254 not null 6 prod pri...