1. 程式人生 > >MYSQL——《SQL必知必會》學習筆記

MYSQL——《SQL必知必會》學習筆記

2017/12/4週一

一天看了一半的圖靈程式設計叢書的這本《SQL必知必會》第4版,資料庫入門經典書

平臺:Windows下的命令列操作

資料庫:MYSQL

1.安裝會出現的問題

【解決方案】MySQL-5.7.9 服務無法啟動-“NET HELPMSG 3534”

http://blog.csdn.net/i_am_wangbo/article/details/49999407

解決方法:刪除data資料夾,重新初始化

2.參考的是易百教程網站的MySQLhttp://www.yiibai.com/mysql/

下面是書的前一半記錄的筆記:

show databases;

use mysql1;
show tables;
select * from products;
####註釋方法1:任意位置
--註釋方法2:得出現在命令列 行後
/*註釋方法3:任意位置*/


##第二章 檢索資料 

--顯示全部 ‘*’
select * from products;
--顯示3列,逗號‘,’隔開
select prod_name, vend_id, prod_pricefrom products;


--顯示1列 
select prod_name from products;
--只顯示5行 ‘limit 5’
select prod_name from products LIMIT 5;
--顯示2行後的3行,即第3行到第5行 ‘limit 3 offset 2’或‘LIMIT 2,3’
select prod_name from products LIMIT 3 OFFSET 2;
select prod_name from products LIMIT 2,3;




--顯示不重複的不同的值 ‘DISTINCT’
select DISTINCT vend_id from products;


##第三章 排序檢索資料 “ORDER by prod_price DESC”

--按照‘vend_id’排序  “ORDER by prod_price DESC”(預設升序ASC(ascending)
--ASC  a  scending遞增
--DESC de scending遞減
select prod_name, vend_id, prod_pricefrom productsORDER by prod_price;
select prod_name, vend_id, prod_pricefrom productsORDER by prod_price, prod_name;
select prod_name, vend_id, prod_pricefrom productsORDER by prod_price DESC, prod_name;


##第四章 過濾資料 "WHERE prod_price = 3.49" BETWEEN 5 and 10

select prod_id, prod_name, prod_price from products WHERE prod_price = 3.49;
select prod_id, prod_name, prod_price from products WHERE prod_price < 10;
select prod_id, prod_name, prod_price from products WHERE prod_price BETWEEN 5 and 10;
--ORDER應該在WHERE之後
select prod_id, prod_name, prod_price from products WHERE prod_price < 10 ORDER by prod_price DESC;


--IS NULL判斷是否為NULL值
select * from customers where cust_email IS NULL;


--AND ,字串只用單引號‘’表示
select prod_id, vend_id, prod_name, prod_price from products 
WHERE prod_price < 10  AND  vend_id = 'DLL01';
--OR
select prod_id, vend_id, prod_name, prod_price from products 
WHERE prod_price < 5  or vend_id = 'FNG01';
--AND OR混用/ AND優先順序更高,使用時最好加括號 / 注意以下2句的區別
select prod_id, vend_id, prod_name, prod_price from products 
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' AND prod_price >=10;
select prod_id, vend_id, prod_name, prod_price from products 
(WHERE vend_id = 'DLL01' OR vend_id = 'BRS01') AND prod_price >=10;




#第五章 高階過濾 IN  NOT
--IN vend_id IN ( 'DLL01','BRS01' ) 與or類似,但執行更快,語法更清晰 
select prod_id, vend_id, prod_name, prod_price from products 
WHERE vend_id IN ( 'DLL01','BRS01' ) ORDER BY prod_name;
--NOT NOT vend_id = 'DLL01' 找出與條件不匹配的行 
select prod_id, vend_id, prod_name, prod_price from products 
WHERE NOT vend_id = 'DLL01'ORDER BY prod_name;


#第六章 萬用字元LIKE  '% _ '  


#注意萬用字元要用LIKE 不能用 = ,因為不相等
--LIKE  '%'
select prod_id, vend_id, prod_name, prod_price from products 
WHERE vend_id LIKE 'D%'ORDER BY prod_name;
--'_'下劃線 只能匹配單個字元
select prod_id, vend_id, prod_name, prod_price from products 
WHERE vend_id LIKE 'D_L01'ORDER BY prod_name;
####################################################################################

####################################################################################

#第7章 建立計算欄位
--CONCAT 拼接連線多個數組 ,字串用單引號包括
select CONCAT(vend_name, ' ','(',vend_country,')')  from vendors;
--AS 為新列命名
select CONCAT(vend_name, ' ','(',vend_country,')') AS result from vendors;
--計算新的一列,命名為result
select prod_id,quantity,item_price, quantity*item_price AS result  from orderitems;
--RTRIM() LTRIM() TRIM()去除字串的空格


#總結:select為測試、檢驗、計算提供了很好的方法


#第8章 函式
--UPPER()轉換為大寫字串 LOWER()
select vend_name, UPPER(vend_name) as result from vendors;
--YEAR()
select order_num from orders where year(order_date) = 2012;
#總結,函式各資料庫軟體不一致,移植性不好


#第9章 彙總資料
--聚集函式,各軟體都挺一致
AVG()COUNG() MAX()MIN() SUM()


#第10章