SQL基本語法SQL語法一般而言,資料庫的語法 ( 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 <table name> (<column name> <column type> [NOT NULL] {,<column name> <column type> [NOT NULL]})範例:建立家庭作業資料檔 "abc"欄位:id(學號) 資料格式:字元(最大長度為8)欄位:hw(作業編號) 資料格式:小整數欄位:score (分數) 資料格式:小整數CREATE TABLE "abc" ( "id" varchar(8) , "hw" smallint , "score" smallint ) 刪除資料檔DROP TABLE <table name>範例烤肉:刪除家庭作業資料檔 "pub.demo.homework"DROP TABLE "pub.demo.homework" 增加欄位ALTER TABLE <table name> ADD <column name> <column type>範例:在資料檔中增加一個欄位:note (說明) 資料格式:字元(最大長度為80)ALTER TABLE "table name" ADD "note" varchar(80) 查詢記錄SELECT [DISTINCT] <attribute list>FROM <table name>WHERE <condition>ORDER BY <column name>範例:從資料檔中找出第3次作業分數大於60分的全部記錄,且依學號由小到大排序。SELECT *FROM "table name"WHERE score > 60ORDER BY id 增加記錄 INSERT INTO <table name>[(<column 襯衫name>{,<column name>})] VALUES ( <constant value>,{<constant value>})|<select statement> 範例:在資料檔中增加一筆記錄(學號:7654321 作業編號:2 分數:89) INSERT INTO "table name" (id, hw, score) VALUES ('1234567', 2, 89) 刪除記錄 DELETE FROM <table name> [WHERE <selection condition> 範例:刪除學生1234567的所有記錄 DELETE FROM "table name" WHERE id like '1234567'沒有指定WHERE,則所有紀錄都會被刪除,請注意小心使用!! 更改記錄 UPDATE <table name> SET <column name> = <value expression>{,<column name> = 長灘島<value expression>} [WHERE <select condition>] 範例:更改學生7654321第2次作業成績分數為95分 UPDATE "table name" SET score=95 WHERE id like '7654321' and hw=2 若不使用WHERE,則所有紀錄都會更新,請注意小心使用!! 設定索引鍵 CREATE INDEX <index name> ON <table name>(<column name>[<order>]{,<column name>[<order>]}) [CLUSTER] 範例:在資料檔中設定欄位學號與作業編號為一索引鍵(複合鍵)homework_index CREATE INDEX homework_index ON "table name" (id, hw) 刪除索引鍵 DROP INDEX <index name> 範例:刪除索引鍵homework_index DROP 酒店經紀INDEX homework_index 建立VIEW CREATE VIEW <view name>[(<column name>{,<column name>})] AS <select statement> 範例:略。  刪除VIEW DROP VIEW <view name> 範例:略。 隨機查詢10筆的資料SELECT * FROM Table WHERE 條件 ORDER BY RAND() LIMIT 10 僅查詢欄位名稱範例:查詢某一個資料表的所有"欄"的名稱,但不想要細部的資料 SELECT * FROM "tablename" WHERE 1=2 SubStringSubString(expr,start,lenght)解釋:傳回expr中,第start字元開始lenght長度的字串範例:查3月份,CallerID為遠傳者的明細,且依CallinTime最為排序SELECT 票貼CallerID,CallinTime,HangupTime,BillingTime,PagerNoFROM BrokerTotalServiceLog03WHERE 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指出現一次方法一:SELECT DISTINCT CallerID方法二:在結尾處加入GROUP BY CallerID 2. select * from 學生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'的資料刪除                        


.msgcontent .wsharing 汽車借款ul li { text-indent: 0; }



分享

Facebook
Plurk
YAHOO!

創作者介紹

ap05apstpk 發表在 痞客邦 PIXNET 留言(0) 人氣()