SQL的語法

来源:https://www.cnblogs.com/TeaTracing/archive/2022/06/11/16366783.html
-Advertisement-
Play Games

SQL的語法 SQL通用語法 SQL語句可以單行或多行書寫,以分號(“;”)結尾。 SQL語句可以使用空格或縮進增強可讀性。 MySQL資料庫的SQL語句不區分大小寫(建議關鍵字大寫)。 註釋 單行註釋: -- 內容 # 內容(MySQL特有) 多行註釋: /* 內容 */ SQL語句分類 分類 全 ...


SQL的語法


  • SQL通用語法

    1. SQL語句可以單行或多行書寫,以分號(“;”)結尾。

    2. SQL語句可以使用空格或縮進增強可讀性。

    3. MySQL資料庫的SQL語句不區分大小寫(建議關鍵字大寫)。

    4. 註釋

      單行註釋:

      -- 內容
      
      # 內容(MySQL特有)
      

      多行註釋:

      /* 內容 */
      
  • SQL語句分類

    分類 全稱 說明
    DDL Data Definition Language 數據定義語言,用於定於資料庫對象(資料庫、表、欄位)
    DML Data Manipulation Language 數據操作語言,用來對資料庫表中數據進行增加、刪除、修改
    DQL Data Query Language 數據查詢語言,用於查詢資料庫表中的記錄
    DCL Data Control Language 數據控制語言,用於創建資料庫、操控資料庫的訪問許可權

數據定義語言


  • 資料庫操作 —— 數據定義(DDL)

    1. 查詢:

      查詢所有資料庫:

      show databases;
      

      查詢當前資料庫:

      select database();
      
    2. 創建:

      create database [if not exists] 資料庫名稱 [default charset 字元集] [collate 排序規則];
      

      (PS:方括弧("[]")內的為可選項;字元集推薦使用utf8mb4;)

      (意義:[if not exists]意義為若資料庫內已存在該名稱的資料庫則不執行;)

    3. 刪除:

      drop database [if exists] 資料庫名稱;
      

      (PS:方括弧("[]")內的為可選項;)

      (意義:[if exists]意義為若資料庫存在則執行刪除;)

    4. 使用:

      use 資料庫名稱;
      
  • 資料庫操作 —— 數據定義(DDL)- 查詢

    1. 查詢當前資料庫所以的表:

      show table;
      
    2. 查詢表結構:

      desc 表名;
      
    3. 查詢指定表的建表語句:

      show create table 表名;
      
  • 數資料庫操作 —— 數據定義(DDL)- 創建

    <資料庫操作(DDL)- 創建 - 資料庫:tb_user>

    create table 表名(
        欄位1 欄位1的類型 [comment 欄位1註釋],
        欄位2 欄位2的類型 [comment 欄位2註釋],
        欄位3 欄位3的類型 [comment 欄位3註釋]
    ) [comment 表註釋]
    

    (PS:方括弧("[]")內的為可選項;)

  • 資料庫操作 —— 數據定義(DDL)- 數據類型

    <資料庫操作(DDL)- 數據類型 - 案例:08案例.txt>

    MySQL主要資料庫類型:

    1. 數值類型:

      (PS:DOUBLE需要設置精度、標度;)

      (意義:精度意義為數值總長度;標度意義為小數點位數;)

      (案例:[欄位名 TINYINT UNSIGNED] 意義為當前使用的TINYINT數據類型使用的是無符號的;)

    2. 字元串類型:

      (PS:帶BLOB的為二進位存儲數據類型;CHAR類型若存儲沒有達到設定的長度則會用空格填充;VARCHARA類型為所占用的長度則為所占用的空間;)

      (案例:[char(10)] 意義為最大長度為10的字元;)

    3. 日期時間類型:

  • 資料庫操作 —— 數據定義(DDL)- 修改

    1. 添加欄位:

      alter table 表名 add 欄位名 類型(長度) [comment 註釋] [約束]
      

      (PS:方括弧("[]")內的為可選項;)

    2. 修改數據類型:

      alter table 表名 modify 欄位名 新數據類型(長度);
      
    3. 修改欄位名和欄位類型:

      alter table 表名 change 舊欄位名 新欄位名 類型(長度) [comment 註釋] [約束];
      

      (PS:方括弧("[]")內的為可選項;)

    4. 刪除欄位:

      alter table 表名 drop 欄位名;
      
    5. 修改表名:

      alter table 表名 rename to 新表名;
      
  • 資料庫操作 —— 數據定義(DDL)- 刪除

    1. 刪除表:

      drop table [if exists] 表名;
      

      (PS:方括弧("[]")內的為可選項;)

      (意義:[if exists]意義為若資料庫存在則執行刪除;)

    2. 刪除指定表,並重新創建該表:

      truncate table 表名;
      

數據操作語言


  • 資料庫操作 —— 數據操作(DML)- 添加數據

    1. 給指定欄位添加數據:

      insert into 表名(欄位1,欄位2,欄位3) values(值1,值2,值3);
      
    2. 給全部欄位添加數據:

      insert into 表名 values(值1,值2,值3);
      
    3. 批量給指定欄位添加數據:

      insert into 表名(欄位1,欄位2) values(值1,值2),(值1,值2);
      
    4. 批量給全部欄位添加數據:

      insert into 表名 values(值1,值2),(值1,值2),(值1,值2);
      

    (PS:添加的數據類型為字元串、日期應該包含在引號('')中;添加的字元串類型大小應該在欄位規定的範圍內;)

  • 資料庫操作 —— 數據操作(DML)- 修改數據

    1. 修改表的數據:

      update 表名 set 欄位名1 = 值1,欄位名2 = 值2,欄位名3 = 值3 [where 條件];
      

      (PS:方括弧("[]")內的為可選項;)

  • 資料庫操作 —— 數據操作(DML)- 刪除數據

    1. 刪除表的數據:

      delete from 表名 [where 條件];
      

      (PS:方括弧("[]")內的為可選項;)

數據查詢語言


  • 資料庫操作 —— 數據查詢(DQL)

    語法:

    語法: 解釋:
    select 欄位列表
    from 表名列表
    where 條件列表
    group by 分組欄位列表
    having 分組後條件列表
    order by 排序欄位列表
    limit 分頁參數
  • 資料庫操作 —— 數據查詢(DQL)- 基本查詢

    1. 查詢多個欄位:

      select 欄位1,欄位2,欄位3 from 表名;
      
    2. 查詢所有欄位:

      select * from 表名;
      

      (PS:在開發中建議不要使用星號“※”;)

    3. 設置別名:

      select 欄位1 as 別名1,欄位2 as 別名2 from 表名;
      
    4. 去除重覆記錄:

      select distinct 欄位列表 from 表名;
      
  • 資料庫操作 —— 數據查詢(DQL)- 條件查詢(where)

    1. 語法:

      select 欄位列表 from 表名 where 條件列表;
      
    2. 條件:

      比較運算符 功能
      > 大於
      >= 大於等於
      < 小於
      <= 小於等於
      = 等於
      <> 或 != 不等於
      detween ... and ... 在某個範圍之內(最小值、最大值)
      in(...) 在in之後的列表中的值,多選一
      like 占位符 模糊匹配(“_”匹配單個字元,“%”匹配任意個字元)
      is null 是null
      邏輯運算符 功能
      and 或 && 並且(多個條件同時成立)
      or 或 || 或者(多個條件任意一個成立)
      not 或 ! 非、不是
  • 資料庫操作 —— 數據查詢(DQL)- 聚合函數(count、max、min、avg、sum)

    1. 介紹:

      將一列數據作為一個整體,進行縱向運算。

    2. 常見的聚合函數:

      函數 功能
      count 統計數量
      max 最大值
      min 最小值
      avg 平均值
      sum 求和
    3. 語法:

      select 聚合函數(欄位列表) from 表名;
      

      (PS:null值不參與聚合函數運算;)

  • 資料庫操作 —— 數據查詢(DQL)- 分組查詢(group by)

    1. 語法:

      select 欄位列表 from 表名 [where 條件] group by 分組欄位名 [having 分組後過濾條件];
      

      (PS:方括弧("[]")內的為可選項;)

    2. where與having的區別:

      執行時間不同:where是分組之前進行過濾(不滿足條件的不參與分組),而having是分組之後對結果進行過濾。

      判斷條件不同:where不能對聚合函數進行判斷,而having可以。

  • 資料庫操作 —— 數據查詢(DQL)- 排序查詢(order by)

    1. 語法:

      select 欄位列表 from 表名 order by 欄位1 排序方式1,欄位2 排序方式2;
      
    2. 排序方式:

      ASC:升序排序(預設值)。

      DESC:降序排序。

      (PS:若是多欄位排序,當第一個欄位值相同時,才會根據第二個欄位進行排序;)

  • 資料庫操作 —— 數據查詢(DQL)- 分頁查詢(limit)

    1. 語法:

      select 欄位列表 from 表名 limit 起始索引,查詢記錄數;
      

      (PS:起始索引從0開始;起始索引=(查詢頁面 - 1) * 每頁顯示記錄數;分頁查詢是資料庫的方言(limit是MySQL的);)

  • 資料庫操作 —— 數據查詢(DQL)- 執行順序

    1. 執行順序:

      執行順序: 語法: 解釋:
      4 select 欄位列表
      1 from 表名列表
      2 where 條件列表
      3 group by 分組欄位列表
      5 having 分組後條件列表
      5 order by 排序欄位列表
      6 limit 分頁參數

數據控制語言


  • 資料庫操作 —— 數據控制(DCL)- 管理用戶

    1. 查詢用戶:

      use mysql;
      
      select * from user;
      
    2. 創建用戶:

      create user '用戶名'@'主機名' identified by '密碼';
      
    3. 修改用戶密碼:

      alter user '用戶名'@'主機名' identified with mysql_native_password by '新密碼';
      
    4. 刪除用戶:

      drop user '用戶名'@'主機名';
      

    (PS:主機名可以使用百分號"%"通配符,來表示任意主機都可以訪問;)

  • 資料庫操作 —— 數據控制(DCL)- 許可權控制

    1. 常用的許可權控制:

      許可權: 說明;
      all、all privileges 所有許可權
      select 查詢數據
      insert 插入數據
      update 修改數據
      delete 刪除數據
      alter 修改表
      drop 刪除資料庫、表、視圖
      create 創建資料庫、表
    2. 查詢許可權:

      show grants for '用戶名'@'主機名';
      
    3. 授予許可權:

      grant 許可權列表 on 資料庫名.表名 to '用戶名'@'主機名';
      
    4. 撤銷許可權:

      revoke 許可權列表 on 資料庫名.表名 from '用戶名'@'主機名';
      

      (PS:多個許可權之間要使用逗號(",")分隔;)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ArrayList是我們開發中最常用到的集合,但是很多人對它的源碼並不瞭解,導致面試時,面試官問的稍微深入的問題,就無法作答,今天我們一起來探究一下ArrayList源碼。 1. 簡介 ArrayList底層是數組,允許元素是null,能夠動態擴容 size、isEmpty、get、set、add ...
  • 0. 文章目的 面向C#新學者,介紹命名空間(namespace)的概念以及C#中的命名空間的相關內容。 1. 閱讀基礎 理解C與C#語言的基礎語法。 理解作用域概念。 2. 名稱衝突與命名空間 2.1 一個生活例子 假設貓貓頭在北京有一個叫AAA的朋友,在上海有兩個叫AAA的朋友,上海的兩個AAA ...
  • 現在有些客戶的業務數據還在使用傳統Excel來彙總信息,使用Email實現數據的傳遞與交互。iNeuOS線上報表工具的開發與發佈基本上可以替代傳統Excel的使用,並且用戶可以自定義模板、隨意查詢數據等。 ...
  • 1.前言 hi,大家好,我是三合。作為一名程式猿,日常開發中,我們在接到需求以後,一般都會先構思一個模型,然後根據模型寫實體類,寫完實體類後在資料庫里建表,接著進行增刪改查, 也有第二種情況,就是有些人喜歡先在資料庫里建表,然後再添加實體類。前者是code First,後者是db First,如果數 ...
  • DS18B20 是一個常見的數字溫度計晶元, 因為測溫準確, 廉價且接線簡單, 實際應用廣泛, 在各種教學實驗套裝中出鏡率也很高. 在寫STC8H GPIO示例的時候寫了一下 DS18B20, 這個型號雖然簡單古老, 但是內容比較有意思, 一個篇幅寫不下, 所以把內容抽出來單獨介紹. ...
  • 在日常開發中,郵件發送是個比較常見的場景。因此出現了很多相關的軟體和服務,各大雲廠商也推出自己的郵件服務。今天筆者就像大家介紹一種常見的組合,AWS的郵件服務 SES 與郵件伺服器 postfix 的配置和使用方法。 概述 什麼是 AWS-SES Amazon Simple Email Servic ...
  • 寫在前面 令人愉快又頹廢的周日馬上就要到了,正在計劃這周博客寫什麼的我,突然收到導師發給我的消息,What?要給我發補助? 這樣中午不得去食堂加一個餐,很快啊,我就說了聲:謝謝。 但後續證明我還是太嫩了些,天上是沒有免費午餐的。 不過對於這種專業相關,而且能從中學到不少東西的任務,我還是十分樂意去乾 ...
  • 1.下載安裝包 1.1 下載elasticsearch 7.13.3 curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.3-linux-x86_64.tar.gz 1.2 解壓文件 t ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...