最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL學(xué)習(xí)之SQL語法及SQL解析順序

 更新時(shí)間:2023年03月30日 14:33:04   作者:摳腳的大灰狼  
這篇文章主要介紹了SQL語法及SQL解析順序,SQL(Structured Query Language)是一種標(biāo)準(zhǔn),作為一種訪問關(guān)系型數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,感興趣的小伙伴可以借鑒閱讀

SQL(Structured Query Language)是一種標(biāo)準(zhǔn),作為一種訪問【關(guān)系型數(shù)據(jù)庫的標(biāo)準(zhǔn)語言】。許多數(shù)據(jù)庫產(chǎn)品,如Oracle,DB2,SQL Server,PostgreSQL,MySQL都支持它。近幾年的NoSQL最初是宣稱不再需要SQL,后來也不得不修正為Not Only SQL,來擁抱SQL。

目前比較典型的版本是 SQL 92標(biāo)準(zhǔn)。包括MySql在內(nèi)的其他數(shù)據(jù)庫,在SQL 92 或 SQL 99這些標(biāo)準(zhǔn)基礎(chǔ)之上,還擴(kuò)展了一些自己的SQL語句,如 MySQL中的limit關(guān)鍵字。

SQL語言分類

  • DDL

    數(shù)據(jù)定義語言,用來定義數(shù)據(jù)庫對象,數(shù)據(jù)庫,表,列等。如create,alter,drop等

  • DML

    數(shù)據(jù)操作語言,用來對數(shù)據(jù)庫中的表的記錄進(jìn)行更新。如insert,update,delete等

  • DCL

    數(shù)據(jù)控制語言,用來定義數(shù)據(jù)庫的訪問權(quán)限,安全級別等。如grant等

  • DQL:

    數(shù)據(jù)查詢語言,用來查詢。如select,from,where等

 SQL語法順序和解析順序

# 語法順序
SELECT DISTINCT
	<select_list>
FROM
	<left_table> <join_type>
JOIN <right_table> ON <join_condition>
WHERE
	<where_condition>
GROUP BY
	<group_by_list>
HAVING
	<having_condition>
ORDER BY
	<order_by_condition>
LIMIT <limit_number>

# 解析順序
FROM <left_table>
ON <join_condition>
<join_type> JOIN <right_table>  -- 這一步和上一步,會循環(huán)執(zhí)行
WHERE <where_condition> -- 這一步會循環(huán)執(zhí)行,多個(gè)條件從左往右
GROUP BY <group_by_list>
HAVING <having_condition>
SELECT   -- 分組之后才執(zhí)行SELECT
DISTINCT <select_list>
ORDER BY <order_by_condition>
LIMIT <limit_number> -- 這一步是MySQL獨(dú)有的語法,前面都是SQL92標(biāo)準(zhǔn)

FROM

對FROM的左表和右表計(jì)算笛卡爾積,產(chǎn)生虛表VT1

select * from seller join product;

ON

產(chǎn)生虛表VT1后,通過ON關(guān)鍵字進(jìn)行篩選,只有符合<join_condition>條件的才會被篩選到虛表VT2

select * from seller s join product p on s.id = p.id;

OUTER JOIN

  • LEFT (OUTER) JOIN : 會返回左表(保留表)中全部記錄以及右表中滿足ON條件的記錄

  • RIGHT (OUTER) JOIN : 同理

  • INNTER JOINT : 只返回左右兩表中滿足ON條件的記錄

 若指定了OUTER JOIN(LEFT JOIN,RIGHT JOIN),那么保留表中未匹配ON條件的行,就會作為外部行,添加到虛表VT2中,形成虛表VT3。

select * from seller s right join product p on s.id = p.id;

若FROM子句,包含不止2個(gè)表,則會對上一個(gè)join連接產(chǎn)生的結(jié)果VT3,和下一個(gè)表重復(fù)執(zhí)行上面的步驟

WHERE

根據(jù)where條件過濾

GROUP BY

對結(jié)果進(jìn)行分組

-- mysql 8 默認(rèn)開啟了 only_full_group_by
select version(),@@sql_mode;
-- 需要把這個(gè)選項(xiàng)關(guān)掉,
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- 后執(zhí)行g(shù)roup by 正常
select * from user group by name;

HAVING

對分組的結(jié)果,進(jìn)行having條件過濾

SELECT

選取指定的列

DISTINCT

針對某列去重
注意DISTINCT 一定要SELECT的第一列,加在后面無效

-- 下面無效
select id, distinct name from user;
-- 下面有效
select distinct name from user;

distinct 后加多列,則是將多列拼接在一起來去重

若想根據(jù)某一列去重,并顯示出整行的數(shù)據(jù),可以用GROUP BY

ORDER BY

排序

LIMIT

分頁

注意:對于select中的列的別名,只有在order by中才能使用,由上面的SQL解析順序可知

 到此這篇關(guān)于MySQL學(xué)習(xí)之QL語法及SQL解析順序的文章就介紹到這了,更多相關(guān)SQL語法及解析順序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql出現(xiàn)提示錯(cuò)誤10061的解決方法

    mysql出現(xiàn)提示錯(cuò)誤10061的解決方法

    這篇文章主要為大家詳細(xì)介紹了mysql出現(xiàn)提示錯(cuò)誤10061的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • MySQL MVVC多版本并發(fā)控制的實(shí)現(xiàn)詳解

    MySQL MVVC多版本并發(fā)控制的實(shí)現(xiàn)詳解

    在多版本并發(fā)控制中,為了保證數(shù)據(jù)操作在多線程過程中,保證事務(wù)隔離的機(jī)制,降低鎖競爭的壓力,保證較高的并發(fā)量。在每開啟一個(gè)事務(wù)時(shí),會生成一個(gè)事務(wù)的版本號,被操作的數(shù)據(jù)會生成一條新的數(shù)據(jù)行
    2022-08-08
  • MySQL5.7限制general_log日志大小的實(shí)現(xiàn)

    MySQL5.7限制general_log日志大小的實(shí)現(xiàn)

    MySQL5.7.41中為避免通用查詢?nèi)罩緂eneral_log快速增長占用硬盤空間,可以通過定時(shí)任務(wù)執(zhí)行腳本進(jìn)行每日備份或清理,從而限制其大小,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • MySQL?with語句講解

    MySQL?with語句講解

    這篇文章主要介紹了MySQL?with語句小結(jié),對于邏輯復(fù)雜的sql,with可以大大減少臨時(shí)表的數(shù)量,提升代碼的可讀性、可維護(hù)性,對mysql?with語句相關(guān)知識感興趣的朋友一起看看吧
    2022-11-11
  • 使用Dify訪問mysql數(shù)據(jù)庫詳細(xì)代碼示例

    使用Dify訪問mysql數(shù)據(jù)庫詳細(xì)代碼示例

    這篇文章主要介紹了使用Dify訪問mysql數(shù)據(jù)庫的相關(guān)資料,并詳細(xì)講解了如何在本地搭建數(shù)據(jù)庫訪問服務(wù),使用ngrok暴露到公網(wǎng),并創(chuàng)建知識庫、數(shù)據(jù)庫訪問工作流和智能體,需要的朋友可以參考下
    2025-03-03
  • MySQL 備份還原數(shù)據(jù)庫批處理

    MySQL 備份還原數(shù)據(jù)庫批處理

    在日常工作中,我們往往需要對MySQL數(shù)據(jù)庫進(jìn)行備份,有時(shí)可以通過拷貝整個(gè)文件,有時(shí)通過備份整個(gè)庫還有的時(shí)候我們就只需要備份某個(gè)表。
    2009-07-07
  • mysql如何在已有數(shù)據(jù)庫上統(tǒng)一字符集

    mysql如何在已有數(shù)據(jù)庫上統(tǒng)一字符集

    這篇文章主要介紹了mysql如何在已有數(shù)據(jù)庫基礎(chǔ)上換字符集,數(shù)據(jù)庫里面,部分?jǐn)?shù)據(jù)表和數(shù)據(jù)是latin1的,部分?jǐn)?shù)據(jù)表和數(shù)據(jù)是UTF8,還有部分表,表結(jié)構(gòu)是utf8而數(shù)據(jù)是latin1,下面說一下,怎么樣字符集統(tǒng)一成utf8,需要的朋友可以參考下
    2019-06-06
  • Mysql全局ID生成方法

    Mysql全局ID生成方法

    本文給大家介紹mysql全局id生成方法,涉及到mysql全局id相關(guān)知識,感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • InnoDB解決幻讀的方法詳解

    InnoDB解決幻讀的方法詳解

    這篇文章主要介紹了InnoDB解決幻讀的方法詳解的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • MYSQL METADATA LOCK(MDL LOCK)MDL鎖問題分析

    MYSQL METADATA LOCK(MDL LOCK)MDL鎖問題分析

    這篇文章主要介紹了MYSQL METADATA LOCK(MDL LOCK)MDL鎖問題分析,并通過實(shí)例給大家例句的問題處理辦法,需要的朋友參考學(xué)習(xí)下。
    2017-12-12

最新評論

宝兴县| 双柏县| 广东省| 汾阳市| 安徽省| 买车| 内丘县| 永州市| 都昌县| 政和县| 西和县| 仁怀市| 阜宁县| 扎囊县| 马公市| 昌乐县| 大埔县| 普格县| 额济纳旗| 肃北| 乾安县| 盘锦市| 凌源市| 开封县| 垦利县| 彭泽县| 黄骅市| 喀喇| 平安县| 北票市| 池州市| 日照市| 桂东县| 广德县| 阿克苏市| 邵武市| 通化县| 金秀| 巴林左旗| 历史| 文登市|