2016年6月5日 星期日

SQL語法筆記

首先,下面是使用
https://dev.mysql.com/doc/index-other.html
裡的world database

1. SHOW
SHOW DATABASES 顯示所有在系統中的資料庫

SHOW TABLES 顯示該資料庫中的所有資料表(要先用USE database_name指定現在處理哪個資料庫 )

SHOW COLUMNS FROM table_name 顯示table_name表的欄位結構


2.DISTINCT
搭配SELECT使用,可把重複的資料行濾掉
EX:
SELECT DISTINCT continent FROM country
如果指定兩個以上的欄位,只要其中一個欄位沒重複,就會出現

3.LIMIT
限制查詢結果的長度,也可跳過幾行
EX:
SELECT * FROM country LIMIT 8,3
country表中取出第9~11(從第9行開始取三行)
一般SELECT沒用LIMIT,可以看作是LIMIT 0;(SQL也是0為第一個數字)

4.ORDER BY
搭配SELECT使用,排列查詢出來的結果,ASC為由小到大排列,DESC反之
EX:
SELECT * FROM country ORDER BY population DESC
country表中取出所有欄位的資料,按照人口數量,由大到小排列

ORDER BY 兩個欄位以上,用逗號隔開,則由先出現的欄位優先進行排列

5.WHERE
搭配SELECT使用,用來限定額外過濾條件
EX:
SELECT * FROM country WHERE Continent = 'asia'
取出continent欄位是asia的資料列

6.BETWEEN
用來指定區間條件
EX:
SELECT * FROM country WHERE population BETWEEN 3000000 AND 10000000
取出人口數為300~1000萬之間的國家資料列

7.IN
用來取代多個等於
EX
SELECT * FROM country WHERE continent IN('asia','europe','africa')
反之使用NOT IN

8.CONCAT函數
用來將多個欄位連接成一個欄位顯示(不太實用的樣子)
EX
SELECT CONCAT(name,',',region) FROM country
name欄位跟region欄位中間用逗號隔開,放在一起,然後列出來

9.AS
用來改變結果的欄位名稱(也是不太實用的樣子)
EX
SELECT name AS country_name FROM country

10.UPPER LOWER函數
用來改成大寫小寫
EX
SELECT UPPER (continent) FROM country

11.AVG 函數
取平均值
EX:
SELECT AVG(population) FROM country
會得到每個國家人口數的平均,結果只有一列

如果要取出人口數大於平均人口數的國家:
SELECT * FROM country WHERE population > (SELECT AVG(population) FROM country)



12.SQRT 函數
開根號
EX:
SELECT SQRT(population) FROM country

13.SUM 函數
加總
EX
SELECT SUM(population) FROM country
結果大概60

14.LIKE
搭配WHERE使用,可過濾出符合指定樣式的值,文字、數字都可以比對
‘_’ 一個底線代表1個任意字元
‘%’ 一個百分號代表連續的任意個任意字元
EX:
SELECT * FROM country WHERE population LIKE '5%'
取出人口數是5開頭的國家

SELECT * FROM country WHERE name LIKE 'B_____'  (5個底線)
取出國家名稱是B開頭後5個字母的國家

15.MIN MAX函數
取最小值、最大值
EX:
SELECT * FROM `country` WHERE population/surfacearea = (SELECT MAX(population / surfacearea) FROM country)
取出人口密度(population / surfacearea)最大的國家的資料

16.JOIN
搭配SELECT,查詢多個表
EX:
country.code,
country.name AS 'country_name',
city.name AS 'city_name',
country.population AS 'country_population',
city.population AS'city_population',
city.population*100/country.population AS 'population_percentage(%)'
 FROM country JOIN city ON country.code = city.countrycode

取出從countrycity兩個表中,取出國家代碼及其名字和人口,外加計算城市人口佔國家人口的百分比

沒有留言:

張貼留言