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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...