SQL基礎知識

2020-09-27 08:01:10

SQL學習過程

林林總總寫一些SQL的基礎,希望對大家有幫助~
一、關於資料分析
資料分析流程:收集資料(問卷,資料庫)、分析資料結構、資料預處理(建模、資料分析)、展示結果。
資料平臺:excel、資料庫、資料中心(Hadoop、spark等)
二、資料庫
資料庫:為某種目的而組織起來的記錄和檔案的集合,通俗理解就是很多表。
現在大多數資料庫是關係型資料庫
表結構:欄位/列 記錄/行
基本上所有資料庫都支援標準的SQL語法,例如:Oracle、SQL Server、MySQL、acess、DB2等,但SQL server使用T-sql,Oracle使用PL/SQL,非關係性資料庫也會有能轉化成sql引擎或外掛,如hive sparksql
三、SQL的概念
SQL語言的概念:
①結構化查詢語言,是一種程式語言;
②一種資料庫查詢和程式設計語言;
③用於存取資料以及查詢、更新和管理關聯式資料庫系統;
④各種資料處理邏輯與方法實現,都可以通過SQL語言來完成。
四、SQL的結構
在這裡插入圖片描述
實際工作中的邏輯架構
在這裡插入圖片描述

接下來具體介紹sql裡的資料定義語言(DDL)、資料操作語言(DML)和資料查詢語言(DQL)

資料定義語言(DDL)
建立資料庫:create database 資料庫名稱;
刪除資料庫:drop database 資料庫名稱;
資料庫命名規則:命名反映建庫的內容,公司的其他規範,DB_demo

建立表:create table 表名 (列名-欄位,型別-數值、字元等);
刪除表:drop table 表名;
資料表命名規則:以姓名縮寫_開始,以日期結束,中間反應表的內容,公司的其他規範,例如:my_order_20200508

在建立表時要註明欄位型別,具體的資料型別如下:
資料型別
整型
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
檢視資料庫與表
show databases; --檢視目前所有資料庫
use 資料庫名稱; – 進入資料庫
show tables; --檢視目前所在資料庫所有表
desc 表名; – 檢視表結構
資料庫基本語句
ALTER TABLE 語句
主要解決問題:用於在已有的表中新增、修改或刪除列,更新表名,欄位型別等。
在這裡插入圖片描述
資料操作語言(DML)
在這裡插入圖片描述
資料庫基本語句
在這裡插入圖片描述
updata資料替換
如:UPDATE my_order_20200508 SET create_time = Replace(create_time, ‘2016-’, ‘2020-’)
delect 語句
在這裡插入圖片描述
SQL實操
我這裡使用的是navicat+mysql,具體的安裝教學就不給大家一一介紹了,網上都有。
我是先在MySQL的命令程式裡建立資料庫,再使用navicat連線到MySQL,就能看到mysql下所有的資料庫
在這裡插入圖片描述
接著可以使用navicat新建查詢建立表,從表中插入資料,也可以直接匯入資料。
在這裡插入圖片描述
那麼我在這建立的表格如上
用查詢語句查詢一下一張表格上前五行的資訊
這就是SQL語句最簡單的用法
在這裡插入圖片描述
資料查詢語言(DQL)
在這裡插入圖片描述
其中select from是必須的
having是對資料進行過濾
SQL的執行順序為:FROM>JOIN>ON>WHERE>GROUP BY>AVG,SUM…>HAVING>SELECT>DISTINXT>ORDER BY>LIMIT

練習
檢視表結構
在這裡插入圖片描述
檢視表的前十行資料
在這裡插入圖片描述
找出購買金額大於200的顧客
在這裡插入圖片描述
去重加distinct關鍵字
找出購買金額大於20小於200的顧客
在這裡插入圖片描述
按金額結果進行降序排序
在這裡插入圖片描述
練習 group by
group by 必須結合彙總函數
統計顧客的累計購買金額
在這裡插入圖片描述
統計每個顧客每天的購買金額
在這裡插入圖片描述
在這裡插入圖片描述
練習:
購買金額大於20小於200的顧客
在這裡插入圖片描述
缺失值判斷語句形式為
某欄位 is null / is not null
模糊查詢 like
在這裡插入圖片描述
練習:查詢一月份的所有訂單
在這裡插入圖片描述
資料庫相關函數
在這裡介紹的是常用的時間函數,日期轉換函數,基本字元函數
在這裡插入圖片描述
時間函數練習
在這裡插入圖片描述

預設週日為第一天
日期轉換函數
大寫的y為四位年份,小寫為兩位,大寫m/d為英文,小寫為數位。
常用的是%Y-%m-%d-%H
在這裡插入圖片描述

基本字元函數
在這裡插入圖片描述
學完這些基本語句就可以嘗試著實現sql的複雜查詢了
查詢訂單表裡購買金額最大和最小的顧客
在這裡插入圖片描述
SQL多表關聯
查詢所有使用者的購買額度以及總銷售額
在這裡插入圖片描述
關於union 後排序失效的問題,上網找了解決方案,解決方案如下:
在這裡插入圖片描述
union 的去重是針對記錄完全一致
使用場景:進行彙總合併
多表連線:外關聯和內關聯
內關聯練習:
在這裡插入圖片描述
外關聯–左關聯和右關聯
所查詢的結果與以什麼表為準有關
例如左關聯:
在這裡插入圖片描述
多表連線產生笛卡爾積
1.生成大表,列數為N+M-1,有就是兩表少一列;
2.行數是兩個表的乘積
實際中如果關聯查詢很慢,很有可能出現了笛卡爾積,應立刻停止查詢

關於SQL的一些基礎先寫到這,有問題歡迎各位指出來,SQL的用法其實在很多地方都能用上,excel,access,還有R都能用上,有時間再更新啦~

快捷鍵
CTRL+/ 單行註釋
CTRL+f 查詢與替代