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語法範例

建立資料檔刪除資料檔增加欄位查詢記錄增加記錄
刪除記錄更改記錄設定索引鍵刪除索引鍵建立VIEW
刪除VIEW

隨機查詢

僅查詢欄位名稱SubString雜項
     
     

建立資料檔

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 )     TOP                


刪除資料檔

DROP TABLE <table name>

範例:刪除家庭作業資料檔 "pub.demo.homework"

DROP TABLE "pub.demo.homework"     TOP


增加欄位

ALTER TABLE <table name> ADD <column name> <column type>

範例:在資料檔中增加一個欄位:note (說明) 資料格式:字元(最大長度為80)

ALTER TABLE "table name" ADD "note" varchar(80)     TOP


查詢記錄

SELECT [DISTINCT] <attribute list>

FROM <table name>

WHERE <condition>

ORDER BY <column name>

範例:從資料檔中找出第3次作業分數大於60分的全部記錄,且依學號由小到大排序。

SELECT *

FROM "table name"

WHERE score > 60

ORDER BY id     TOP


增加記錄

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)     TOP


刪除記錄

DELETE FROM <table name>

[WHERE <selection condition>

範例:刪除學生1234567的所有記錄

DELETE FROM "table name"

WHERE id like '1234567'

沒有指定WHERE,則所有紀錄都會被刪除,請注意小心使用!!     TOP


更改記錄

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,則所有紀錄都會更新,請注意小心使用!!     TOP


設定索引鍵

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)     TOP


刪除索引鍵

DROP INDEX <index name>

範例:刪除索引鍵homework_index

DROP INDEX homework_index     TOP


建立VIEW

CREATE VIEW <view name>[(<column name>{,<column name>})]

AS <select statement>

範例:略。     TOP


刪除VIEW

DROP VIEW <view name>

範例:略。     TOP


隨機查詢10筆的資料

SELECT * FROM Table WHERE 條件 ORDER BY RAND() LIMIT 10     TOP


僅查詢欄位名稱

範例:查詢某一個資料表的所有"欄"的名稱,但不想要細部的資料
  
   
SELECT * FROM "tablename" WHERE 1=2 TOP

SubString

SubString(expr,start,lenght)
解釋:傳回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     TOP


雜項

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'的資料刪除        
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WuOu

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值