一般而言,資料庫的語法 ( SQL ) 分為三大類別:
1. DDL ( Data Definition Language ):定義資料庫物件使用的語法,常看到的關鍵字有:
Create:建立資料庫的物件。
Alter:變更資料庫的物件。
Drop:刪除資料庫的物件。
2. DCL ( Data Control Language ):控制資料庫物件使用狀況的語法,常看到的關鍵字有:
Grant:賦予使用者使用物件的權限。
Revoke:取消使用者使用物件的權限。
Commit:Transaction 正常作業完成。
Rollback:Transaction 作業異常,異動的資料回復到 Transaction 開始的狀態。
3. DML ( Data Manipulation Language ):維護資料庫資料內容的語法,常看到的關鍵字有:
Insert:新增資料到 Table 中。
Update:更改 Table 中的資料。
Delete:刪除 Table 中的資料。
Select:選取資料庫中的資料。
SQL語法範例
CREATE TABLE {, 範例:建立家庭作業資料檔 "abc" 欄位:id(學號) 資料格式:字元(最大長度為8) 欄位:hw(作業編號) 資料格式:小整數 欄位:score (分數) 資料格式:小整數 CREATE TABLE "abc" ( "id" varchar(8) , "hw" smallint , "score" smallint ) DROP TABLE 範例:刪除家庭作業資料檔 "pub.demo.homework" DROP TABLE "pub.demo.homework" ALTER TABLE 範例:在資料檔中增加一個欄位:note (說明) 資料格式:字元(最大長度為80) ALTER TABLE "table name" ADD "note" varchar(80) SELECT [DISTINCT] FROM WHERE ORDER BY 範例:從資料檔中找出第3次作業分數大於60分的全部記錄,且依學號由小到大排序。 SELECT * FROM "table name" WHERE score > 60 ORDER BY id INSERT INTO VALUES ( 範例:在資料檔中增加一筆記錄(學號:7654321 作業編號:2 分數:89) INSERT INTO "table name" (id, hw, score) VALUES ('1234567', 2, 89) DELETE FROM [WHERE 範例:刪除學生1234567的所有記錄 DELETE FROM "table name" WHERE id like '1234567' 沒有指定WHERE,則所有紀錄都會被刪除,請注意小心使用!! UPDATE SET [WHERE 範例:更改學生7654321第2次作業成績分數為95分 UPDATE "table name" SET score=95 WHERE id like '7654321' and hw=2 若不使用WHERE,則所有紀錄都會更新,請注意小心使用!! CREATE INDEX ON [CLUSTER] 範例:在資料檔中設定欄位學號與作業編號為一索引鍵(複合鍵)homework_index CREATE INDEX homework_index ON "table name" (id, hw) DROP INDEX 範例:刪除索引鍵homework_index DROP INDEX homework_index CREATE VIEW AS 範例:略。
DROP VIEW 範例:略。 SELECT * FROM Table WHERE 條件 ORDER BY RAND() LIMIT 10 SubString(expr,start,lenght) 方法一:SELECT DISTINCT CallerID 2. select * from 學生 (
ADD
[(
(
範例:查詢某一個資料表的所有"欄"的名稱,但不想要細部的資料
SELECT * FROM "tablename" WHERE 1=2
解釋:傳回expr中,第start字元開始lenght長度的字串
範例:查3月份,CallerID為遠傳者的明細,且依CallinTime最為排序
SELECT CallerID,CallinTime,HangupTime,BillingTime,PagerNo
FROM BrokerTotalServiceLog03
WHERE SubString(CallerID,1,4)='0916' or SubString(CallerID,1,4)='0917' or SubString(CallerID,1,4)='0926' or SubString(CallerID,1,5)='09540' or SubString(CallerID,1,4)='0955' or SubString(CallerID,1,5)='09605' or SubString(CallerID,1,5)='09606' or SubString(CallerID,1,4)='0930' or SubString(CallerID,1,4)='0936' or SubString(CallerID,1,5)='09310' or SubString(CallerID,1,5)='09311' or SubString(CallerID,1,5)='09312' or SubString(CallerID,1,5)='09313'
ORDER BY CallinTime
1. 重覆CallerID指出現一次
方法二:在結尾處加入GROUP BY CallerID
3. select * from 成績表 order by 學號 (排序)
4. select * from 成績表 order by 學號 desc (遞減排序)
5. select 學號,名字 from 學生
6. select * from 成績表 where 學號='1'
p.s. 字串要加' ' ,若是數字則不加,日期格式為#1998/11/19#
7. select * from 成績表 where 成績>=60 and 成績<=70 (大於60小於70)
8. select * from 成績表 where 成績 between 60 and 70 (介於60 和 70之間)
9. select * from 成績表 where 成績 not between 60 and 70 (不是介於 60 和70之間)
10. select * from 學生 where 學號 in ('1','3','5') (in 做為指定查詢)
11. select * from 學生 where 名字 like '陳%' (like 用來查詢字串中部份符合, '%'表零到任意多個字元,'_'表一個字元
12. select 學號, avg(成績) as 平均成績 from 成績表 group by 學號 order by avg(成績) desc
p.s.計算平均成績,其中" as 平均成績 "為設定欄位名稱," group by 學號"為同一學號為一組作計算, desc 為遞減排列, avg為計算平均值,sum則為計算總成績
13. select 學生.學號,學生.名字,成績表.科目編號,成績表.成績 from 學生,成績表 where 學生.學號=成績表.學號 order by 學生.學號 (多張資料表的結合查詢)
14. insert into 學生(學號,名字,地址) values ('5','王子','台東縣')
p.s.新增一筆學生資料
15. update 學生 set 名字='小王子' where 學號='5'
p.s.將學號'5'的名字改為'小王子'
16. update 成績表 set 成績=(成績^0.5)*10 where 學號='5'
p.s.將學號'5'的成績設為開根號乘以10
17. delete from 學生 where 學號='5'
p.s.將學號'5'的資料刪除
留言列表