iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0
Software Development

SQL 30天手把手入門系列 第 23

Day23 - 新增資料表和資料

  • 分享至 

  • xImage
  •  

在 Day11 的建立資料庫、資料表一文中,有使用到「新增資料表」和「新增資料」兩種 SQL 敘述。這篇主要是來講解這兩種敘述的使用方式和注意事項。

CREATE TABLE 建立資料表

來建立一個新的 Employee 資料表吧,其中欄位和格式如下:

CREATE TABLE Employee
(id CHAR(5) NOT NULL,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
salary INTEGER DEFAULT 0,
birth_date DATE,
PRIMARY KEY(id)
);
SELECT * FROM Employee;
  • NOT NULL:代表該欄位一定要填入值
  • DEFAULT:代表預設值,如果 INSERT 語句中沒有該值填入,就會帶入這個 DEFAULT 值
    Day23Result1

INSERT 敘述句語法

一般的情形下,每新增一筆資料,就得撰寫一次以下的 INSERT 敘述句語法。

INSERT INTO <TableName> (Field1, Field2, ...) VALUES(Content1, Content2,...) 

在以上的敘述句中,欄位名稱和內容是彼此一一對應的。換言之,如果 Content1 填入的內容不符合 Field1 的規範,那就會出現錯誤。
舉例,若要在 Employee 資料表中新增兩筆資料,可以寫成:

INSERT INTO Employee (id,name,email,salary,birth_date) 
VALUES('00001','Andy','andy@abc.com',40000,'1992-09-01');
INSERT INTO Employee (id,name,email,salary,birth_date) 
VALUES('00002','Sandy','sandy@abc.com',42000,'1987-09-01');
SELECT * FROM Demo_Shop.Employee;

Day23Result2
其中接在 Employee 後方 () 裡的內容,可當成「欄位串」;放在 VALUES 後方 () 裡的內容,可當成「內容值串」

撰寫時可省略欄位串

當你要 INSERT 的欄位為全部時,你可以只寫 VALUES。不過依然是要照欄位的順序寫的,否則會報錯。

INSERT INTO Employee
VALUES('00003','Tom','tom@abc.com',38000,'1994-09-01');
SELECT * FROM Demo_Shop.Employee;

Day23Result3

INSERT 敘述句的執行途中發生錯誤

如果有這樣的情形發生,那麼該 INSERT 所欲造成的資料改變並不會成功。換言之,原先資料表內的資料是不會有影響的。

存入預設值

若在建立資料表時,有設定 DEFAULT 值的話,那麼在 INSERT INTO 時的寫法可以有兩種:

/*寫明欄位,其值為 DEFAULT*/
INSERT INTO Employee (id,name,email,salary,birth_date) 
VALUES('00004','Cindy','cindy@abc.com',DEFAULT,'1993-09-01');
/*隱藏欄位和其對應值*/
INSERT INTO Employee (id,name,email,birth_date) 
VALUES('00005','Jacky','jacky@abc.com','1993-09-01');
SELECT * FROM Demo_Shop.Employee;

Day23Result4


上一篇
Day 22 - 資料結果排序
下一篇
Day24 - 修改資料
系列文
SQL 30天手把手入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言