# SQL Script Example 本範例預計以學生資料為例,針對資料進行CRUD的操作 ## 第一部分-Create操作 ### 建立一個名為Class_Student的資料表,其中有student_id、student_name、student_age三個欄位。 ```sql CREATE TABLE Class_Student( student_id INT NOT NULL AUTO_INCREMENT, student_name VARCHAR(100) NOT NULL, student_age INT NOT NULL, submission_date DATE, PRIMARY KEY ( student_id ) ); ``` #### 結果: | student_id | student_name | student_age | | -------- | -------- | -------- | | None | None | None | ### 插入三筆學生資料。 ```sql INSERT INTO Class_Student ( "student_name", "student_age") VALUES ("Gary", 22), ("Tina", 23), ("Allen", 21); ``` #### 結果: | student_id | student_name | student_age | | -------- | -------- | -------- | | 1 | Gary | 22 | | 2 | Tina | 23 | | 3 | Allen | 21 | ## 第二部分-Read操作 ### 查詢Class_Student資料表中所有欄位的學生資料。 ```sql SELECT * FROM Class_Student; ``` #### 結果: | student_id | student_name | student_age | | -------- | -------- | -------- | | 1 | Gary | 22 | | 2 | Tina | 23 | | 3 | Allen | 21 | ### 查詢Class_Student資料表中所有學生的student_name欄位值。 ```sql SELECT student_name FROM Class_Student; ``` #### 結果: | student_name | | -------- | | Gary | | Tina | | Allen | ### 查詢Class_Student資料表中student_name等於Gary的那位學生之student_age欄位值。 ```sql SELECT student_age FROM Class_Student WHERE student_name="Gary"; ``` #### 結果: | student_age | | -------- | | 22 | ### 查詢Class_Student資料表中student_age大於21的所有學生,並以student_age由大至小排列的student_id與student_name欄位值。 ```sql SELECT student_id, student_name FROM Class_Student WHERE student_age>21 ORDER BY student_age DESC; ``` #### 結果: | student_id | student_name | | -------- | -------- | | 2 | Tina | | 1 | Gary | ## 第三部分-Update操作 ### 更新Class_Student資料表中student_name等於Gary的student_age為23。 ```sql UPDATE Class_Student SET student_age=23 WHERE student_name="Gary"; ``` #### 結果: | student_id | student_name | student_age | | -------- | -------- | -------- | | 1 | Gary | 23 | | 2 | Tina | 23 | | 3 | Allen | 21 | ### 更新Class_Student資料表中的第三位學生,其student_name為Ben、student_age為20。 ```sql UPDATE Class_Student SET student_name="Ben", student_age=20 WHERE student_id=3; ``` #### 結果: | student_id | student_name | student_age | | -------- | -------- | -------- | | 1 | Gary | 23 | | 2 | Tina | 23 | | 3 | Ben | 20 | ## 第四部分-Delete操作 ### 刪除Class_Student資料表中student_age等於23的學生資料。 ```sql DELETE FROM Class_Student WHERE student_age=23 ``` #### 結果: 由於`student_name`等於Gary與Tina的`student_age`均為23,因此該兩筆資料均被刪除,僅剩下`student_name`為Ben的資料。 | student_id | student_name | student_age | | -------- | -------- | -------- | | 3 | Ben | 20 | ### 刪除Class_Student這個資料表。 ```sql DROP TABLE Class_Student; ``` #### 結果: 整個資料表包括內部的資料均被刪除。 ## 進階教學 ### 網站資源 * [1keydata](https://www.1keydata.com/tw/sql) * [Gitbook.NET](http://tw.gitbook.net/sql/) * [sqlzoo](https://sqlzoo.net/wiki/SQL_Tutorial) (可即時練語法) ### 重點超連結 #### JOIN * [1keydata-表格連接](https://www.1keydata.com/tw/sql/sqljoins.html) * [1keydata-外部連接](https://www.1keydata.com/tw/sql/sqlouterjoin.html) * [Gitbook.NET](http://tw.gitbook.net/sql/sql-using-joins.html) * [sqlzoo](https://sqlzoo.net/wiki/The_JOIN_operation) (可即時練語法) #### UNION * [1keydata](https://www.1keydata.com/tw/sql/sqlunion.html) * [Gitbook.NET](http://tw.gitbook.net/sql/sql-unions-clause.html) #### 子查詢(Subquery) * [1keydata](https://www.1keydata.com/tw/sql/sql-subquery.html) * [Gitbook.NET](http://tw.gitbook.net/sql/sql-sub-queries.html) #### GROUP BY * [1keydata](https://www.1keydata.com/tw/sql/sqlgroupby.html) * [Gitbook.NET](http://tw.gitbook.net/sql/sql-group-by.html) #### 函數 * [1keydata](https://www.1keydata.com/tw/sql/sqlfunctions.html) * [Gitbook.NET](http://tw.gitbook.net/sql/sql-useful-functions.html) #### LIKE * [1keydata](https://www.1keydata.com/tw/sql/sqllike.html) * [Gitbook.NET](http://tw.gitbook.net/sql/sql-like-clause.html) #### HAVING * [1keydata](https://www.1keydata.com/tw/sql/sqlhaving.html) * [Gitbook.NET](http://tw.gitbook.net/sql/sql-having-clause.html) #### 查詢輔助(EXISTS、IN) * [1keydata-EXISTS](https://www.1keydata.com/tw/sql/sql-exists.html) * [1keydata-IN](https://www.1keydata.com/tw/sql/sqlin.html) ###### tags: `筆記`