《SQL基礎(chǔ)教程》知識(shí)點(diǎn)概述

第1章 數(shù)據(jù)庫和SQL

數(shù)據(jù)庫(DB):將大量數(shù)據(jù)保存起來,通過計(jì)算機(jī)加工而成的可以進(jìn)行高效訪問的數(shù)據(jù)集合。
數(shù)據(jù)庫管理系統(tǒng)(DBMS):用來管理計(jì)算機(jī)的系統(tǒng)。
服務(wù)器:用來接收其他程序程序發(fā)出的請(qǐng)求,并對(duì)該請(qǐng)求進(jìn)行相應(yīng)處理的程序,或者安裝了此類程序的設(shè)備。
客戶端:向服務(wù)器發(fā)送請(qǐng)求的程序,或者安裝了此類程序的設(shè)備。
SQL語句及其種類:SQL用關(guān)鍵字、表名、列名等組合而成的一條語句來描述操作的內(nèi)容。種類包括:DDL、DML、DCL。
數(shù)據(jù)庫的創(chuàng)建:CREATE DATABASE <數(shù)據(jù)庫名稱>;
表的創(chuàng)建:CREATE TABLE
命名規(guī)則:只能使用半角英文字母、數(shù)字、下劃線,且必須以半角英文字母開頭。
數(shù)據(jù)類型:INTEGER型,CHAR型,VARCHAR型,DATE型
約束條件:NOT NULL、PRIMARY KEY
表的刪除 :DROP TABLE <>;
表定義的更新: 添加列 ALTER TABLE <> ADD COLUMN <>; 刪除列 ALTER TABLE <> DROP COLUMN <>; 插入數(shù)據(jù) INSERT INTO <> VALUES ();

第2章 查詢基礎(chǔ)

簡(jiǎn)單查詢:SELECT <> FROM <>;
設(shè)置別名:AS
去重:DISTINCT
算術(shù)運(yùn)算符:+ 、 - 、 * 、 /
比較運(yùn)算符: = 、 <>、 >= 、 >、 <、 <= (注意:不能對(duì)NULL使用比較運(yùn)算符,IS NULL ;IS NOT NULL)
邏輯運(yùn)算符: NOT 、 AND 、OR

第3章 聚合與排序

聚合函數(shù): COUNT 、SUM 、 AVG 、MAX 、 MIN
分組:GROUP BY
HAVING字句,放在GROUP BY 之后
排序:ORDER BY
ASC升序 , DESC降序
排序NULL值放在最后

第4章 數(shù)據(jù)更新

數(shù)據(jù)插入 INSERT INTO < > ()VALUES ();
插入默認(rèn)值 DEFAULT
復(fù)制其他表的內(nèi)容:INSERT INTO < > () SELECT
數(shù)據(jù)的刪除:DROP TABLE 將表完全刪除,DELETE會(huì)留下表,刪除表中的全部?jī)?nèi)容
數(shù)據(jù)的更新:UPDATE <表名> SET <列名> = <表達(dá)式>;
事務(wù):需要在同一個(gè)處理單元中執(zhí)行的一系列更新處理的集合。
創(chuàng)建事務(wù):START TRANSACTION;(MySQL)
COMMIT——提交處理
ROLLBACK——取消處理
事務(wù)具有ACID特性:

  • 原子性(Atomicity):在事務(wù)結(jié)束時(shí),其中所包含的更新處理要么全部執(zhí)行,要么完全不執(zhí)行。
  • 一致性(Consistency): 事務(wù)中包含的處理要滿足數(shù)據(jù)庫提前設(shè)置的約束,如主鍵約束或者NOT NULL約束。
  • 隔離性(Isolation):不同事務(wù)之間互不干擾。
  • 持久性(Durability):也稱耐久性,指的是在事務(wù)結(jié)束后,DBMS能夠保證該時(shí)間點(diǎn)的數(shù)據(jù)狀態(tài)會(huì)被保存的特性。

第5章 復(fù)雜查詢

視圖:“從SQL的角度來看視圖就是一張表” 與表的區(qū)別在于是否保存了實(shí)際的數(shù)據(jù)。視圖就是保存好的SELECT語句。
使用視圖的優(yōu)點(diǎn):

  • 無需保存數(shù)據(jù),節(jié)省了存儲(chǔ)設(shè)備的數(shù)據(jù)空間。
  • 將頻繁使用的SELECT語句保存成視圖,不用每次都重復(fù)書寫。
    創(chuàng)建視圖的方法:CREATE VIEW 視圖名稱 (<視圖列名1>,<視圖列名2>,<>,······) AS <SELECT語句>
    視圖的限制:
  • 定義視圖時(shí)不能使用ORDER BY 子句
  • 對(duì)視圖進(jìn)行更新需要滿足這些條件(1.SELECT子句中未使用DISTINCT 2.FROM子句中只有一張表 3.未使用GROUP BY 4. 未使用HAVING)
    刪除視圖:DROP VIEW
    子查詢:一言以蔽之,子查詢就是一次性視圖。與視圖不同,子查詢?cè)赟ELECT語句執(zhí)行完畢之后就會(huì)消失。
    標(biāo)量子查詢:必須而且只能返回1行1列的結(jié)果。
    標(biāo)量子查詢的書寫位置:能夠使用常數(shù)或者列名的地方,無論是SELECT子句、GROUP BY子句、HAVING子句,還是ORDER BY子句,幾乎所有的地方都可以使用。
    關(guān)聯(lián)子查詢:在子查詢中添加WHERE子句的條件
    以一個(gè)例子來說明:通過關(guān)聯(lián)子查詢按照商品種類對(duì)平均銷售單價(jià)進(jìn)行比較
SELECT product_type,product_name,sale_price
FROM Product AS P1
WHERE sale_price > (SELECT AVG(sale_price)
                                FROM Product AS P2
                                WHERE P1.product_type = P2.product_type
                                GROUP BY product_type);

第6章 函數(shù)、謂詞、CASE表達(dá)式

算術(shù)函數(shù):+,-,*,/,ABS絕對(duì)值,MOD求余,ROUND四舍五入
字符串函數(shù):||——拼接,在MySQL中用CONCAT函數(shù);LENGTH——字符串長度;LOWER——小寫轉(zhuǎn)換;REPLACE——字符串的替換;SUBSTRING——字符串的替換;UPPER——大寫轉(zhuǎn)換;
日期函數(shù):CURRENT_DATE——當(dāng)前日期(MySQL);CURRENT_TIME——當(dāng)前時(shí)間;CURRENT_TIMESTAMP——當(dāng)前日期和時(shí)間;EXTRACT——截取日期元素
轉(zhuǎn)換函數(shù):CAST——類型轉(zhuǎn)換;COALESCE——將NULL轉(zhuǎn)換為其他值

謂詞
LIKE——字符串的部分一致查詢 %代表“0字符以上的任意字符串” ,_代表“任意一個(gè)字符串”
BETWEEN——范圍查詢
IS NULL、IS NOT NULL —— 判斷是否為NULL
IN——OR的簡(jiǎn)單用法
EXIST 判斷是否存在滿足某種條件的記錄,如果存在這樣的記錄就返回為真,如果不存在就返回為假。EXIST通常用關(guān)聯(lián)子查詢作為參數(shù)。

CASE表達(dá)式 CASE WHEN <> THEN <> ELSE <> END

第7章 集合運(yùn)算

行方向:UNION(并集),UNION ALL (包含重復(fù)項(xiàng)),INTERSECT(交集)——選取表中的公共部分,EXCEPT——用a表減去ab倆表公共的部分
列方向(表的聯(lián)結(jié)):內(nèi)聯(lián)結(jié)——INNER JOIN, 外聯(lián)結(jié)——OUTER JOIN 選取主表的全部信息(用LEFT、RIGHT來指定主表)
交叉聯(lián)結(jié)——CROSS JOIN (不常用) 笛卡爾積

第8章 SQL高級(jí)用法

窗口函數(shù)也稱OLAP(Online Analysis Processing)函數(shù),能對(duì)數(shù)據(jù)庫數(shù)據(jù)進(jìn)行實(shí)時(shí)分析處理。
語法:<窗口函數(shù)> OVER ([PARTITION BY <列清單>] ORDER BY <排序用列清單>)

  • 能過作為窗口函數(shù)使用的函數(shù):(SUM,AVG,COUNT,MAX,MIN)
  • RANK、DENSE_RANK、ROW_NUMBER
    PARTITION BY設(shè)定排序的對(duì)象范圍(橫向?qū)Ρ矸纸M)。
    ORDER BY 指定按哪一列、何種順序進(jìn)行排序(縱向排序)。
    窗口函數(shù)只能在SELECT子句之中使用。因?yàn)樵贒BMS內(nèi)部,窗口函數(shù)是對(duì)WHERE子句或者GROUP BY子句處理后的“結(jié)果”進(jìn)行的操作。
    將聚合函數(shù)當(dāng)作窗口函數(shù)使用時(shí)的最大特征是以“自身記錄”作為基準(zhǔn)進(jìn)行統(tǒng)計(jì),SUM可以實(shí)現(xiàn)累計(jì)的功能。
    用AVG計(jì)算移動(dòng)平均
SELECT product_id,product_name,product_price,
   AVG (sale_price) OVER (ORDER BY product_id ROWS 2 PRECEDING) AS moving_avg
   FROM Product;

ROWS(行)和PRECEDING(之前) 表示選之前的三行
GROUPING運(yùn)算符
ROLLUP——同時(shí)得出合計(jì)和小計(jì)
GROUPING——讓NULL更加容易分辨
CUBE——用數(shù)據(jù)來搭積木
GROUPING SETS——取得期望的積木

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • MYSQL 基礎(chǔ)知識(shí) 1 MySQL數(shù)據(jù)庫概要 2 簡(jiǎn)單MySQL環(huán)境 3 數(shù)據(jù)的存儲(chǔ)和獲取 4 MySQL基本操...
    Kingtester閱讀 8,060評(píng)論 5 115
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,961評(píng)論 0 9
  • 被歲月撩撥的我的理想 使我追溯我的夢(mèng) 無聲無息這歲月的刀鋒 已侵蝕了它的容顏 幼稚兒童稚嫩的臉 是個(gè)夢(mèng)想的起點(diǎn) 雨...
    吳里大怪閱讀 312評(píng)論 2 3
  • 01 自年初在得到訂閱了《武志紅的心理學(xué)課》,這是我從學(xué)習(xí)心理學(xué)知識(shí)以來,學(xué)習(xí)到最觸動(dòng)我的心理學(xué)知識(shí)。非常喜歡武老...
    劍飛在思考閱讀 363評(píng)論 0 1
  • 箏,清揚(yáng)悅耳;琴,沉斂悅心。這二者的分別于我而言,某日竟忽有所悟。將它比擬成微信與日記的關(guān)系——誰說風(fēng)馬牛不相及呢...
    劉飛瓊閱讀 458評(píng)論 4 2

友情鏈接更多精彩內(nèi)容