SQL語法 定義與操作指令
選擇、查看資料庫狀態 show databases:列出所有資料庫 use <databasename>:進入某個資料庫 use northwind; show tables:列出所有資料表
資料定義語言 Data Definition Language, DDL
資料定義語言 資料定義語言(DDL)是用來建立關聯式資料庫綱要 資料庫建立每一個關聯表綱要、視界、索引和設定完整 性限制條件。 建立資料表:使用CREATE TABLE,設定完整性限制條件。 建立視界:建立視界(Views)的指令是CREATE VIEW。 建立索引:建立資料表索引的DDL指令
CREATE TABLE 語法 CREATE TABLE table_name ( column1 datatype [ NOT NULL | NULL ] [ DEFAULT value1 ], column2 datatype [ NOT NULL | NULL ] [ DEFAULT value2 ], column3 datatype [ NOT NULL | NULL ] [ DEFAULT value3 ], ………. columnN datatype [ NOT NULL | NULL ] [ DEFAULT valueN ] [ , PRIMARY KEY (column_list) ] [ , FOREIGN KEY (column_list) REFERENCES table_name (column_list) [ , CHECK (expr) ] )
CREATE TABLE-限制準則 NOT NULL | NULL:欄位值是否可以為空值 DEFAULT:指定欄位的預設值 PRIMARY KEY ():指定資料表的主鍵 複合主鍵,欄位用逗號分隔。 FOREIGN KEY ()/REFERENCES ():指定資料表的外來 鍵 REFERENCE是參考的資料表,括號是參考資料表的主鍵。 CHECK ():設定欄位的限制條件,在括號內是條件的 運算式。
CREATE TABLE新增關聯表 建立Students資料表: 在個人資料庫建立Students資料表 sid CHAR(4) NOT NULL , name VARCHAR(12) NOT NULL , tel VARCHAR(15) , birthday DATETIME , GPA FLOAT , PRIMARY KEY (sid) , CHECK (GPA >= 0.0 and GPA <= 4.0) )
CREATE TABLE新增關聯表 建立Courses資料表: 在School資料庫建立Courses資料表的SQL指令,主鍵 是c_no欄位,如下所示: CREATE TABLE Courses ( c_no CHAR(5) NOT NULL , title VARCHAR(30) NOT NULL , credits INT DEFAULT 3, PRIMARY KEY (c_no) )
CREATE TABLE新增關聯表 CREATE TABLE Classes ( sid CHAR(4) NOT NULL , c_no CHAR(5) NOT NULL , time DATETIME , room VARCHAR(8) , FOREIGN KEY (sid) REFERENCES Students (sid) , FOREIGN KEY (c_no) REFERENCES Courses (c_no) )
CREATE TABLE練習 新增stu資料表 欄位 型態 允許空值 特別功能 sno integer Not null auto_increment sname char(10) birthday datetime tel varchar(15) dept char(50)
ALTER TABLE更改關聯表綱要 新增/刪除資料表欄位 資料表欄位增減欄位,不需要重新建立資料表 ALTER TABLE table_name ADD column_name datatype DROP COLUMN column_name
ALTER TABLE更改關聯表綱要 新增資料表欄位範例 在Students資料表新增SSN欄位的身份證字號,資料型 態為CHAR(10) ADD SSN CHAR(10) 刪除資料表欄位範例 在Students資料表刪除欄位SSN,SQL指令: DROP COLUMN SSN
ALTER TABLE 修改stu資料表為以下狀態 欄位 型態 允許空值 特別功能 sno integer Not null auto_increment sname char(10) birthday datetime tel varchar(15) dept char(50) SSN
ALTER TABLE更改關聯表綱要 新增/刪除資料表的主鍵 建立資料表時沒有指定主鍵 使用ALTER TABLE指令新增資料表的主鍵: ALTER TABLE table_name ADD PRIMARY KEY (column_list) DROP PRIMARY KEY
DROP TABLE刪除整個關聯表 刪除指定資料表 DROP TABLE table_name 刪除Employees資料表: DROP TABLE Employees
TRUNCAT TABLE刪除關聯表內容 刪除資料表的記錄,但是保留關聯表綱要 TRUNCATE TABLE table_name 刪除Classes資料表內容: TRUNCATE TABLE Classes
資料操作語言 Data Manipulation Language, DML
資料操作語言 資料操作語言(DML) 新增、刪除和更新資料表的記錄, SQL語言的資料表操作指令: INSERT:在資料表插入一筆新記錄 UPDATE:更新資料表的記錄 DELETE:刪除資料表的記錄
INSERT新增記錄-語法 新增一筆記錄 INSERT INTO table (column1,column2,…..) VALUES ('value1', 'value2 ', …) column1~n是資料表內的欄位名稱 需要包含所有非虛值欄位, value1~n是對應的欄位值
INSERT新增記錄-注意事項 INSERT指令注意事項: 欄位或值的清單,都使用逗號分隔。 字元與日期/時間須使用單引號。 不需要和資料表定義的欄位數目或順序相同, 只需列出需要值的欄位,但括號內的欄位名稱 順序要和VALUES值的順序相同。
INSERT新增記錄-範例 新增記錄: 在Students新增一筆學生記錄的SQL指令 INSERT INTO Students VALUES ('S001','陳會安', '02-22222222','1967/09/03',3.7)
INSERT練習 在stu資料表新增以下資料: sno sname birthday dept 1 王小明 1990/05/20 資工系 2 陳美麗 資管系 3 林天才 1991/01/23 資傳系
UPDATE更新記錄-語法 更新指定欄位的內容: UPDATE table SET column1 = ‘value1’ WHERE conditions table:資料表 column1為欄位名稱,value1是更新欄位值。 更新的欄位不只一個時使用逗號分隔: UPDATE table SET column1 = 'value1' , column2 = 'value2' WHERE conditions
UPDATE更新記錄 WHERE為必要,若沒有此條件,所有記錄欄位都會被 更新。 字元與日期/時間需要使用單引號包圍。 更新記錄: 在資料表Students更改學號S001生日和GPA: UPDATE Students SET birthday='1968-09-12', GPA=3.0 WHERE sid = 'S001'
UPDATE練習 修改stu資料: sno sname birthday dept 1 王小明 1990/05/20 資管系 2 陳美麗 3 林天才 1991/11/23 資傳系
DELETE刪除記錄 將資料表符合條件的記錄刪除掉 DELETE FROM table WHERE conditions table是資料表
DELETE刪除記錄 WHERE條件可以使用=、<>、>、<=和>=等 比較運算子。 WHERE條件如果不只一個條件,可以使用邏輯 運算子and或or連結。 刪除記錄: 在資料表Students刪除學號S001記錄: DELETE FROM Students WHERE sid = 'S001'
UPDATE練習 刪除stu資料: sno sname birthday dept 1 王小明 1990/05/20 資管系 2 陳美麗 3 林天才 1991/11/23 資傳系