SQL基礎學習筆記<第一天>
阿新 • • 發佈:2021-02-14
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
結果如下: