【MySQL_05】語法簡述(是語法,不詳細介紹各種語句)

文章目錄

  • 一、基本規則
  • 二、標識符規則
  • 三、數據類型
  • 四、運算符
  • 五、關鍵字
  • 六、SQL 語句的通用語法結構

歷史文章點擊👉:SQL

🐈??github:https://github.com/mysql

💻官網: https://www.mysql.com

🌏維基百科:https://zh.wikipedia.org/wiki/MySQL

MySQL的語法主要遵循SQL標準。

簡單說明,有些內容后面特定章節介紹。

一、基本規則

?? (1) SQL語句的基本結構

MySQL語句通常以關鍵字(如SELECTINSERTUPDATE等)開頭,以分號(;)結尾。例如:

SELECT * FROM table_name;

?? (2) 大小寫敏感性

  • 關鍵字(如SELECTFROMWHERE等):不區分大小寫,SELECTselect是等效的。
  • 數據庫名、表名和字段名
    • 默認情況下,表名和數據庫名在Windows系統中不區分大小寫;
    • 但在Linux系統中區分大小寫。
    • 字段名通常不區分大小寫。

?? (3) 注釋

  • 單行注釋--#
    -- 這是單行注釋
    SELECT * FROM table_name;  # 這也是單行注釋
    
  • 多行注釋/* */
    /*
    這是多行注釋
    可以包含多行內容
    */
    SELECT * FROM table_name;
    

?? (4)字符串和日期

  • 字符串:用單引號(')或雙引號(")括起來。例如:
    'Hello, world!'"Hello, world!"
    
  • 日期和時間:通常用YYYY-MM-DDYYYY-MM-DD HH:MM:SS格式表示。例如:
    '2025-03-10''2025-03-10 12:34:56'
    

二、標識符規則

  • 表名和列名
    • 可以由字母、數字、下劃線 (_) 組成。
    • 必須以字母或下劃線開頭。
    • 不能與 MySQL 的關鍵字沖突(如 SELECTFROM)。
    • 如果與關鍵字沖突,可以用反引號包裹,例如:`select`
  • 數據庫名
    • 規則與表名和列名類似。
    • 區分大小寫(取決于操作系統)。

三、數據類型

分類數據類型描述示例
整數類型TINYINT8位有符號整數,范圍為-128到127;無符號范圍為0到255。TINYINT(4)
SMALLINT16位有符號整數,范圍為-32768到32767;無符號范圍為0到65535。SMALLINT(6)
MEDIUMINT24位有符號整數,范圍為-8388608到8388607;無符號范圍為0到16777215。MEDIUMINT(9)
INTINTEGER32位有符號整數,范圍為-2147483648到2147483647;無符號范圍為0到4294967295。INT(11)
BIGINT64位有符號整數,范圍為-9223372036854775808到9223372036854775807;無符號范圍為0到18446744073709551615。BIGINT(20)
浮點數類型FLOAT[(M,D)]單精度浮點數,存儲近似值。可選精度M和小數位數DFLOAT(5,2)
DOUBLE[(M,D)]DOUBLE PRECISION雙精度浮點數,存儲近似值。可選精度M和小數位數DDOUBLE(10,4)
DECIMAL(precision, scale)定點數,存儲精確值。precision為總位數,scale為小數位數。DECIMAL(10,2)
字符串類型CHAR(length)定長字符串,最大長度為255字符。length為字符數。CHAR(10)
VARCHAR(length)變長字符串,最大長度為65535字符。length為字符數。VARCHAR(255)
TEXT用于存儲大量文本數據,最大長度為65535字符。TEXT
BLOB用于存儲二進制數據,最大長度為65535字節。BLOB
日期和時間DATE日期值,格式為YYYY-MM-DDDATE
TIME時間值,格式為HH:MM:SSTIME
DATETIME日期和時間值,格式為YYYY-MM-DD HH:MM:SSDATETIME
TIMESTAMP時間戳,范圍為1970-01-01 00:00:012038-01-19 03:14:07TIMESTAMP
YEAR年份值,格式為YYYY(四位年份)。YEAR

四、運算符

分類運算符描述示例
算術運算符+加法運算。SELECT 1 + 2;
-減法運算。SELECT 5 - 3;
*乘法運算。SELECT 4 * 3;
/除法運算,返回浮點結果。SELECT 10 / 2;
DIV整數除法,返回整數結果。SELECT 10 DIV 3;
%MOD求余運算,返回除法的余數。SELECT 10 % 3;SELECT 10 MOD 3;
+-單目運算符,用于正數或負數。SELECT +5;SELECT -5;
比較運算符=等于。SELECT * FROM table_name WHERE column = 1;
<>!=不等于。SELECT * FROM table_name WHERE column <> 1;
<小于。SELECT * FROM table_name WHERE column < 1;
>大于。SELECT * FROM table_name WHERE column > 1;
<=小于等于。SELECT * FROM table_name WHERE column <= 1;
>=大于等于。SELECT * FROM table_name WHERE column >= 1;
IS NULL檢查值是否為NULLSELECT * FROM table_name WHERE column IS NULL;
IS NOT NULL檢查值是否不為NULLSELECT * FROM table_name WHERE column IS NOT NULL;
IS [NOT] DISTINCT FROM檢查兩個值是否相同或不同(NULL值也視為相等)。SELECT * FROM table_name WHERE column IS DISTINCT FROM value;
邏輯運算符AND邏輯“與”,表示兩個條件都為真時返回真。WHERE condition1 AND condition2;
OR邏輯“或”,表示兩個條件中任意一個為真時返回真。WHERE condition1 OR condition2;
NOT邏輯“非”,用于否定條件。WHERE NOT condition;
XOR邏輯“異或”,表示兩個條件中只有一個為真時返回真。WHERE condition1 XOR condition2;
位運算符&位“與”,對兩個值的二進制位進行逐位“與”運算。SELECT 5 & 3;
``位“或”,對兩個值的二進制位進行逐位“或”運算。
^位“異或”,對兩個值的二進制位進行逐位“異或”運算。SELECT 5 ^ 3;
~位“非”,對值的二進制位進行逐位取反運算。SELECT ~5;
<<左移運算,將值的二進制位向左移動指定的位數。SELECT 5 << 1;
>>右移運算,將值的二進制位向右移動指定的位數。SELECT 5 >> 1;
其他運算符BETWEEN檢查值是否在指定范圍內。SELECT * FROM table_name WHERE column BETWEEN value1 AND value2;
IN檢查值是否在一組值中。SELECT * FROM table_name WHERE column IN (value1, value2, ...);
LIKE模糊匹配字符串,%表示任意字符序列,_表示單個字符。SELECT * FROM table_name WHERE column LIKE 'pattern';
REGEXP正則表達式匹配。SELECT * FROM table_name WHERE column REGEXP 'pattern';
CONCAT字符串連接。SELECT CONCAT('Hello', ' ', 'World');
IS [NOT] TRUE檢查布爾值是否為真或假。SELECT * FROM table_name WHERE condition IS TRUE;

五、關鍵字

關鍵字含義示例
SELECT從表中檢索數據。SELECT * FROM table_name;
INSERT向表中插入新數據。INSERT INTO table_name VALUES (...);
UPDATE更新表中的數據。UPDATE table_name SET column = value WHERE condition;
DELETE刪除表中的數據。DELETE FROM table_name WHERE condition;
CREATE創建數據庫、表或其他對象。CREATE TABLE table_name (...);
DROP刪除數據庫、表或其他對象。DROP TABLE table_name;
ALTER修改表結構(添加、刪除或修改列)。ALTER TABLE table_name ADD COLUMN column_name datatype;
TRUNCATE清空表中的所有數據,但保留表結構。TRUNCATE TABLE table_name;
FROM指定從哪個表中檢索數據。SELECT * FROM table_name;
WHERE指定條件,用于過濾數據。SELECT * FROM table_name WHERE condition;
AND用于組合多個條件,表示邏輯“與”。WHERE condition1 AND condition2;
OR用于組合多個條件,表示邏輯“或”。WHERE condition1 OR condition2;
NOT用于否定條件,表示邏輯“非”。WHERE NOT condition;
IN檢查某個值是否在一組值中。WHERE column IN (value1, value2, ...);
BETWEEN檢查某個值是否在指定范圍內。WHERE column BETWEEN value1 AND value2;
LIKE用于模糊匹配字符串。WHERE column LIKE 'pattern';
ORDER BY按指定列對結果集進行排序。SELECT * FROM table_name ORDER BY column ASC;
GROUP BY按指定列對結果集進行分組。SELECT column, COUNT(*) FROM table_name GROUP BY column;
HAVING用于對分組后的結果進行過濾。SELECT column, COUNT(*) FROM table_name GROUP BY column HAVING COUNT(*) > 1;
JOIN用于連接多個表。SELECT * FROM table1 JOIN table2 ON table1.id = table2.id;
INNER JOIN返回兩個表中匹配的記錄。SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;
LEFT JOIN返回左表的所有記錄,以及右表中匹配的記錄。SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id;
RIGHT JOIN返回右表的所有記錄,以及左表中匹配的記錄。SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.id;
FULL JOIN返回兩個表中所有匹配和不匹配的記錄。MySQL不支持FULL JOIN,但可以通過UNION實現。SELECT * FROM table1 UNION SELECT * FROM table2;
DISTINCT用于返回唯一值,去除重復行。SELECT DISTINCT column FROM table_name;
AS用于為列或表指定別名。SELECT column AS alias FROM table_name AS alias;
CASE用于條件表達式。SELECT CASE WHEN condition THEN value1 ELSE value2 END FROM table_name;
LIMIT用于限制查詢結果的數量。SELECT * FROM table_name LIMIT 10;
OFFSETLIMIT一起使用,跳過指定數量的記錄。SELECT * FROM table_name LIMIT 10 OFFSET 5;
UNION用于合并兩個SELECT語句的結果集,自動去除重復行。SELECT column FROM table1 UNION SELECT column FROM table2;
UNION ALL用于合并兩個SELECT語句的結果集,包含重復行。SELECT column FROM table1 UNION ALL SELECT column FROM table2;
EXISTS檢查子查詢是否返回至少一行數據。SELECT * FROM table1 WHERE EXISTS (SELECT 1 FROM table2 WHERE condition);
ANY用于比較子查詢返回的任意值。SELECT * FROM table1 WHERE column > ANY (SELECT column FROM table2);
ALL用于比較子查詢返回的所有值。SELECT * FROM table1 WHERE column > ALL (SELECT column FROM table2);
GRANT授予用戶權限。GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'host';
REVOKE撤銷用戶權限。REVOKE SELECT, INSERT ON database_name.table_name FROM 'username'@'host';
CREATE USER創建新用戶。CREATE USER 'username'@'host' IDENTIFIED BY 'password';
DROP USER刪除用戶。DROP USER 'username'@'host';
ALTER USER修改用戶屬性(如密碼)。ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
COMMIT提交事務,使事務中的更改永久生效。COMMIT;
ROLLBACK回滾事務,撤銷事務中的更改。ROLLBACK;
START TRANSACTION開始一個事務。START TRANSACTION;
SET設置變量或系統參數。SET @variable = value;
DECLARE在存儲過程中聲明變量。DECLARE variable_name datatype;
IF用于條件判斷。IF condition THEN statement;
WHILE循環語句,當條件為真時重復執行。WHILE condition DO statement;
LOOP無限循環,需要在循環體內退出。LOOP statement;
REPEAT循環語句,直到條件為真時停止。REPEAT statement UNTIL condition;
LEAVE退出循環。LEAVE loop_label;
ITERATE跳過當前循環迭代,繼續下一次迭代。ITERATE loop_label;

六、SQL 語句的通用語法結構

  • SELECT 語句

    SELECT column1, column2
    FROM tablename
    WHERE condition
    ORDER BY column1 ASC|DESC
    LIMIT offset, count;
    
  • INSERT 語句

    INSERT INTO tablename (column1, column2)
    VALUES (value1, value2);
    
  • UPDATE 語句

    UPDATE tablename
    SET column1 = value1, column2 = value2
    WHERE condition;
    
  • DELETE 語句

    DELETE FROM tablename
    WHERE condition;
    
  • CREATE TABLE 語句

    CREATE TABLE tablename (column1 datatype constraints,column2 datatype constraints,...
    );
    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72925.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72925.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72925.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript中的生成器函數詳解

在 JavaScript 中&#xff0c;生成器函數 Generator Function 是一種特殊的函數&#xff0c;它允許你在函數執行過程中暫停和恢復。生成器函數通過 function* 語法定義&#xff0c;并使用 yield 關鍵字來控制函數的執行流程。生成器函數返回一個生成器對象&#xff0c;該對象遵…

計算機網絡——交換機

一、什么是交換機&#xff1f; 交換機&#xff08;Switch&#xff09;是局域網&#xff08;LAN&#xff09;中的核心設備&#xff0c;負責在 數據鏈路層&#xff08;OSI第二層&#xff09;高效轉發數據幀。它像一位“智能交通警察”&#xff0c;根據設備的 MAC地址 精準引導數…

Git合并工具在開發中的使用指南

在團隊協作開發中&#xff0c;Git 是最常用的版本控制工具&#xff0c;而代碼合并&#xff08;Merge&#xff09;是多人協作不可避免的環節。當多個開發者同時修改同一文件的相同區域時&#xff0c;Git 無法自動完成合并&#xff0c;此時需要借助合并工具&#xff08;Merge Too…

實現多語言適配

1.在res下創建多語言資源文件&#xff1a; 2.選擇需要的語言 然后得到多種語言適配string文件&#xff1a; 3.代碼設置多語言 object LanguageHelper {/*** 獲取適配的 Context*/fun getAttachBaseContext(context: Context): Context {return if (Build.VERSION.SDK_INT > …

【學習方法一】

學習方法一 一、通用高效學習法二、學科專項方法三、工具與技術輔助四、習慣與心理策略五、避免常見誤區總結六、進階學習策略七、解決學習痛點八、場景化學習法九、資源與工具推薦十、個性化學習調整十一、長期學習心態十二、常見問題QA十三、應對特殊挑戰的學習法十四、健康與…

Golang學習筆記_44——命令模式

Golang學習筆記_41——觀察者模式 Golang學習筆記_42——迭代器模式 Golang學習筆記_43——責任鏈模式 文章目錄 一、核心概念1. 定義2. 解決的問題3. 核心角色4. 類圖 二、特點分析三、適用場景1. 事務管理系統2. 多媒體遙控器3. 操作審計系統 四、Go語言實現示例五、高級應用…

應急響應--流量分析

&#xff08;一&#xff09;Cobalt Strike流量特征分析 1.HTTP特征 源碼特征&#xff1a; 在流量中&#xff0c;通過http協議的url路徑&#xff0c;在checksum8解密算法計算后&#xff0c;32位的后門得到的結果是92&#xff0c;64位的后門得到的結果是93&#xff0c;該特征符…

CI/CD—Jenkins配置一次完整的jar自動化發布流程

背景&#xff1a; 實現設想&#xff1a; 要創建自動化發布&#xff0c;需要準備一臺測試服務器提前安裝好java運行所需的環境&#xff0c;JDK版本最好和Windows開發機器上的版本一致&#xff0c;在Jenkins上配置將構建好的jar上傳到測試服務器上&#xff0c;測試服務器自動啟動…

創建分區表ORA-14037

1、故障現象 在跑腳本的時候創建物化試圖提示分區界限過高 2、解決方法 最終原因是&#xff1a;缺少了 這個 r34411分區&#xff0c;加上就好。 判斷是物化視圖創建的時候需要兼容所有分區的數據&#xff0c;所以報錯&#xff0c;而分區表則不存在這種情況 3、測試驗證 分區…

轉和git subtree管理方式為git submodule的管理方式

將 Git 子樹&#xff08;subtree&#xff09;轉換為子模塊&#xff08;submodule&#xff09;的步驟如下&#xff1a; 1. 確定子樹的路徑和對應的遠程倉庫地址 找到當前項目中子樹的路徑以及對應的遠程倉庫地址。例如&#xff0c;假設子樹的路徑為 subtree-folder&#xff0c…

基于51單片機多功能防盜報警系統

基于51單片機多功能防盜報警系統( proteus仿真程序設計報告原理圖講解視頻&#xff09; 1. 主要功能&#xff1a;2. 講解視頻&#xff1a;3. 仿真4. 程序代碼5. 設計報告6. 原理圖7. 設計資料內容清單&&下載鏈接 仿真圖proteus8.9及以上 程序編譯器&#xff1a;keil 4/…

R語言和RStudio安裝

整體還是比較簡單的&#xff0c;主要是記錄個流程。 官方鏡像站列表R語言官網 1 安裝R&#xff08;2025/3/6&#xff09; R語言官網&#xff1a;The R Project for Statistical Computing 打開之后就Hello world一下吧 配置環境變量 2 安裝RStudio 下載地址&#xff1a;htt…

Ubuntu 22.04 升級到 Ubuntu 24.04 全流程指南

&#x1f4cc; 1. 前言 Ubuntu 24.04 是最新的 LTS 版本&#xff0c;帶來了內核更新、性能優化以及更強的安全性。本指南詳細記錄了從 Ubuntu 22.04 升級到 24.04 的完整過程&#xff0c;包括 升級前的準備、遇到的問題及如何選擇最佳選項&#xff0c;避免升級失敗或系統損壞。…

【每日學點HarmonyOS Next知識】Web跨域資源、Web長按菜單、Web攔截請求、禁止錄屏、Base64圖片寬高

1、HarmonyOS Web組件本地資源跨域問題&#xff1f; 關于資源跨域問題的解決&#xff0c;可以參考以下官網文檔&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-cross-origin-V5 方法一 為了使Web組件能夠成功訪問跨域資源&#xff0c;開…

數據庫查問題常用OS命令匯總

1、內存使用情況查看 top //查看活躍進程占用情況 free -mh //查看操作系統當前可用內存 2、cpu使用情況 lscpu //查看os cpu情況 sar -u -f sar文件名 -s hh:mm:ss -e hh:mm:ss //查看對應日期的歷史cpu情況 top //查看當前活躍進程使用cpu情況 3、io情況 iostat …

nlp培訓重點-5

1. LoRA微調 loader&#xff1a; # -*- coding: utf-8 -*-import json import re import os import torch import numpy as np from torch.utils.data import Dataset, DataLoader from transformers import BertTokenizer """ 數據加載 """cl…

CI/CD—Jenkins配置Maven+GitLab自動構建jar包

一、安裝Maven插件通過Maven構建項目 1、在Jenkins上安裝Maven Integration plugin插件 2、創建一個maven項目 2.1、填寫構建的名稱和描述等 2.2、填寫連接git的url 報錯&#xff1a;無法連接倉庫&#xff1a;Error performing git command: git ls-remote -h http://192.168.…

ngx_regex_create_conf

ngx_regex_create_conf 定義在 src/core/ngx_regex.c static void * ngx_regex_create_conf(ngx_cycle_t *cycle) {ngx_regex_conf_t *rcf;ngx_pool_cleanup_t *cln;rcf ngx_pcalloc(cycle->pool, sizeof(ngx_regex_conf_t));if (rcf NULL) {return NULL;}rcf->p…

【數據結構】初識集合框架及背后的數據結構(簡單了解)

目錄 前言 如何學好數據結構 1. 什么是集合框架 2. 集合框架的重要性 3. 背后所涉及的數據結構以及算法 3.1 什么是數據結構 3.2 容器背后對應的數據結構 3.3 相關java知識 3.4 什么是算法 3.5 基本關系說明&#xff08;重要&#xff0c;簡單了解&#xff09; 前言 …

P9242 [藍橋杯 2023 省 B] 接龍數列--DP【巧妙解決接龍問題】

P9242 [藍橋杯 2023 省 B] 接龍數列--DP 題目 解析什么時候該用 DP&#xff1f;動態規劃 vs 其他方法代碼 題目 解析 這題沒思路&#xff0c;壓根沒想到DP &#x1f626; 看了大神的題解&#xff0c;利用dp記錄每一個數結尾的長度&#xff0c;最后再用N-dp中的最大值&#xf…