1. 程式人生 > 其它 >SQL基礎學習筆記<第一天>

SQL基礎學習筆記<第一天>

技術標籤:資料庫學習mysql資料庫

1.什麼是資料庫?
資料庫是資料儲存的集合
表是資料結構化的資訊
2.區分
MYSQL 是一個數據庫
SQL 資料查詢語句
3.SQL基礎語法
3.1 and,or語句
查詢城市為上海學歷為本科或者城市為北京學歷為碩士的所有資訊(注:and執行優先順序排在or前,加括號可以改變優先順序)

SELECT * FROM test.dataanalyst_sql
where (city = '上海'
and education = '本科')
or
(city = '北京'
and education = '碩士')

3.2 模糊查詢 通過%
蘇州% %蘇州% %蘇州

3.3 group by 語句 按照某欄位查詢(去除重複的)
查詢不同城市崗位數和公司數,因為同一個公司可能存在多個崗位,故採用distinct進行去重

SELECT
	city,
	count( positionId ) AS '崗位數',
	count( DISTINCT companyId ) AS "公司數" 
FROM
	test.dataanalyst_sql 
GROUP BY
	city

結果如下:

3.4 having語句
test 3.4.1 篩選含有100個崗位及以上的城市中崗位數量

SELECT
	city,count(1) 
FROM
	test.
dataanalyst_sql GROUP BY city HAVING count( positionId )>= 100

結果如下:

test 3.4.2 查詢公司種類包含“電子商務”且該公司數量大於50的城市的該種公司數量

SELECT
	city,
	count( 1 ) 
FROM
	test.dataanalyst_sql 
WHERE
	industryField LIKE '%電子商務%' 
GROUP BY
	city 
HAVING
	count( companyId )>= 50

結果如下:

3.5 if語句
“1”可用其他任何字元代替,保證非空即可,該句意為包含“電子商務”的記為1個,不包含的記為0,篩選電子商務類公司大於50個以上的城市。[注意此處並不是篩選崗位,而是篩選的城市,因此結果中統計的數量為所有崗位的數量,而不單單是包含電子商務的崗位的數量。]

SELECT
	city,
	count( 1 ) 
FROM
	test.dataanalyst_sql 
GROUP BY
	city 
HAVING
	count(
IF
	( industryField LIKE '%電子商務%', 1, NULL )) >= 50

結果如下:

3.6 統計總數,電商數量,電商佔比並且篩選出電商數量大於10的城市且按電商數量升序排序。
(注:select裡面採用的別名話不能立刻在select中使用,只能在下面的from where等中使用,即將( industryField LIKE “%電子商務%”, industryField, NULL ))/ count( 1 ) 改為total/emarket會報錯)

SELECT
	city,
	count( 1 ) AS "total",
	count(
	IF
	( industryField LIKE "%電子商務%", industryField, NULL )) AS "emarket",
	count(
	IF
	( industryField LIKE "%電子商務%", industryField, NULL ))/ count( 1 ) AS "電商佔比" 
FROM
	test.dataanalyst_sql 
GROUP BY
	city 
HAVING
	emarket >= 10 
ORDER BY
	emarket

結果如下: