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
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...