Mysql之SQL語句基礎1

来源:https://www.cnblogs.com/wenhx0212/archive/2023/03/31/17245993.html
-Advertisement-
Play Games

一、基本概念 ——後續的內容將會記錄作者在計科學習內容 DB(資料庫):存儲數據的倉庫,數據是有組織進行存儲 DBMS(資料庫管理系統):操縱和管理資料庫的大型軟體 SQL:操縱關係資料庫的編程語言,是一套標準 有Mysql,Oracle,SQLSever,PostgreSQl RDBMS(關係型數 ...


 一、基本概念

            ——後續的內容將會記錄作者在計科學習內容

  1. DB(資料庫):存儲數據的倉庫,數據是有組織進行存儲
  2. DBMS(資料庫管理系統):操縱和管理資料庫的大型軟體
  3. SQL:操縱關係資料庫的編程語言,是一套標準
  4. 有Mysql,Oracle,SQLSever,PostgreSQl 
  5. RDBMS(關係型資料庫):建立在關係模型基礎上,有多張相互連接的二維表組成的資料庫

  特點:

  •  使用表存儲數據,格式統一,便於維護
  •    使用sql語句操作,標準統一,使用方便

  SQL的通用語法:

  1.  SQL語句可以單行或者多行書寫,以分號結尾
  2.    SQL語句可以使用空格/縮進來增強語句的可讀性
  3.    Mysql資料庫的SQL語句部分區分大小寫,關鍵詞建議使用大些
  4.    註釋:單行註釋--註釋內容或#  ;多行註釋/*  */

  SQL的分類:

  1. DDL:數據定義語言,定義數據對象(資料庫,表欄位)
  2. DML:數據操作語言,對資料庫表中的數據進行增刪改
  3. DQL:數據查詢語句,查詢資料庫中表的記錄
  4. DCL:數據控制語言,用來創建數據用戶,控制DB的訪問許可權

 二、操作

  DDL操作:(所用軟體DataGrip)

  • 查詢:
    • 查詢所有資料庫:
      Show databases;
    • 查詢當前資料庫:
      Select database ();
    • 創建:
      Creat database [if not exists]資料庫名 [default charset 字元集] [collate排序規則]
    • 刪除:
      drop database[if exists]資料庫名;
    • 使用:
      use 數據名;

 

  • DDL表操作——查詢
    • 查詢當前資料庫所有的表:
      Show tables;
    • 查詢表結構:
      desc 表名;
    • 查詢指定表的建表語句:
      Show create table 表名;

      DDL——表操作——創建:

    • Create table 表名(
          欄位1     欄位1類型[comment 欄位1註釋],
           欄位2     欄位2類型[comment 欄位2註釋][comment 欄位註釋];

         字元串類型:

    • char(10):性能好
    • varchar(10):性能較差
    • 例如:用戶名 user name varchar(50)
    • 例如:性別 gender char (1)
  • DDL——表操作——修改
    • 添加欄位:
      Alter table 表名 add 欄位名 類型(長度)[comment註釋][約束]
    • 修改數據類型:
      Alter table 表名 modify 欄位名 新數據類型(類型)
    • 修改欄位名和欄位類型:
      Alter table 表名 change 舊欄位名 新欄位名 類型(長度)[comment註釋][約束]
    • 刪除欄位:
      Alter table 表名 drop 欄位名;
    • 修改表名:
      Alter table 表名 rename to 新表名;
  • DDL表操作——刪除
    • 刪除表:
      drop table [if exsits]表名;
    • 刪除指定表,並重新創建該表:
      truncate table 表名;

    DML:用來對資料庫中表的數據記錄進行增刪改操作

  1. 給指定欄位添加數據:
    Insert into 表名 (欄位名1,欄位名2...)Values(值1,值2...);
  2. 給全部欄位添加數據:
    Insert into 表名 values(值1,值2...);
  3. 批量添加數據:
    Insert into 表名(欄位名1,欄位名2)values(值1,值2...),(值1,值2...);
    Insert into 表名  values(值1,值2...),(值1,值2...);
  • 註意:插入數據時,指定的欄位順序需要與值的順序是一一對應的。
    •   字元串和日期數據應該包含在引號內
    •       插入的數據大小,應該在欄位的規定範圍

    DML:修改數據

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

    刪除數據: 

delete from 表名[where 條件];

     DQL:用來查詢庫中表的記錄

  1. select欄位列表 
  2. from表名列表
  3. where條件列表
  4. group by分組欄位列表
  5. having分組後條件列表
  6. order by排序欄位列表
  7. limit分頁參數
  • 查詢多個欄位
    select 欄位1,欄位2...from 表名;
    select *from 表名;
  • 設置別名
    select 欄位1 [As 別名1],欄位1 [As 別名1]...from 表名;
  • 去除重覆記錄
    select distinct 欄位列表 from 表名;
    > >= 
    < <=
    =
    <>或!=
    between...and在某個範圍之內(含最小值,最大值)
    in(...)在in之後的列表中的值,多選一
    Like 占位符,模糊匹配(匹配單個字元,%匹配任意字元)
    : select * from 表名where name Like '%666'
    
    is Null是Null
    and或&&
    OR或||
    NOT或!

    聚合函數:將一列數據作為一個整體,進行縱向計算

  • 常見的聚合函數
    • count統計數量
    • max最大值
    • min最小值
    • avg平均值
    • sum求和
      select 聚合函數(欄位列表) from 表名;
      select count(*) from employee;

      分組查詢

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

      where與having區別

    • 執行時機不同:where是分組之前進行過濾,不滿足where條件,不參與分組,而having 是分組後對結果進行過濾。
    • 判斷條件不同:where不能對聚合函數進行判斷,having可以
      1例如,根據性別分組,統計男性員工和女性員工的數量
      select gender count(*) from employment  group by gender;
      2例如,根據性別分組,統計男性員工和女性員工的平均年齡
      select gender avg(age) from employee  group by gender
      3例如,年齡小於45的員工,並根據工作地址分組,獲取員工數大於等於3的工作地址
      select count(*) from employee where age<45 group by workdress having count(*)>=3

      註意:

    • 執行順序:where>聚合函數>having
    • 分組之後,查詢的欄位一般為聚合函數和分組欄位
    • 查詢其他欄位無任何意義

    DQL-排序查詢

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

       

    2. 排序方式:
      1. ASC:升序(預設值)
      2. DESC:降序
    3. 註意:如果是在多欄位排序,當第一個欄位值相同時,才會根據第二個欄位進行排  例如:select * from employee order by age asc;
    4. DQL——分頁查詢
      1.  語法:
        select 欄位列表 from 表名 limit 啟始索引,查詢記錄數;

         

      2.    註意: 
        1.  啟始索引從0開始,啟始索引=(查詢頁碼-1)*每頁顯示記錄數
        2. 分頁查詢是資料庫的方言,不同的資料庫有不同的實現,如果查詢的第一頁數據,其實索引可以省略,直接簡寫limit 10

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

-Advertisement-
Play Games
更多相關文章
  • Redhat/CentOS Linux 系統進入單用戶模式 以 CentOS 7.9 和 Redhat 8.2 為例進行操作,因為CentOS是Redhat的發行版,所以同版本號界面和操作是一樣的。 CentOS 7.9 開機在 grub 引導界面時,按下 e 鍵進入編輯模式: 找到 linux16 ...
  • 環境準備: 1.至少倆台linux主機,一臺是控制節點,一臺是受控節點 2.控制節點和受控節點都需要安裝Python36 3.控制節點需要安裝ansible 4.控制節點需要獲得受控節點的普通用戶或root用戶的許可權,控制節點需要ssh客戶端,受控節點需要ssh服務端 5.控制節點和受控節點之間網路 ...
  • 一:MQTT 1、MQTT協議說明 ( Message Queuing Telemetry Transport)消息隊列傳輸探測,一種基於==發佈/訂閱模式==的輕量級消息傳輸協議 2、MQTT協議來源 在1999年的時候,Andy Stanford-Clark和 Arlen Nipper需要一種通 ...
  • 安裝與配置 1. 安裝Squid代理伺服器軟體: sudo yum install squid 2. 配置Squid代理伺服器: #http_access allow localnet 將其改為: http_access allow all 然後找到以下行: #http_port 3128 將其改為 ...
  • #ubuntu16.04升級python3.7.1教程 準備 sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev sudo apt-get install libffi-dev libssl-dev libreadline-dev -y ...
  • Linux 文件許可權 文件許可權和文件類型共有10個字元組成,這10個字元可以分成三部分 $$ d+rwx+rwx+rw-\d:表示文件類型\2-4位(第一組rwx):表示文件所有者的對文件的許可權\5-7位(第二組rwx):表示文件所有者所在組的用戶對文件的許可權\8-10位(rw-):表示其他用戶對文 ...
  • 一、項目要求 1、創建role,通過role完成項目(可能需要多個role) 2、部署nginx調度器(node2主機) 3、部署2台lnmp伺服器(node3,node4主機) 4、部署mariadb資料庫(node5主機) 主要用的ansible實現自動化部署,ansible的安裝教程省略,控制 ...
  • 昨天看到一個MySQL資料庫設計原則:強烈建議表的主鍵使用整型自增主鍵。為啥呢? 要弄明白這個問題首先需要瞭解MySQL是如何維護數據的,你需要知道以下幾點: MySQL的InnoDB存儲引擎是在B+樹上維護表數據的 B+樹是一種平衡樹 在這棵樹上,每個節點在電腦中叫做數據頁,預設16k 樹的葉子 ...
一周排行
    -Advertisement-
    Play Games
  • 1、預覽地址:http://139.155.137.144:9012 2、qq群:801913255 一、前言 隨著網路的發展,企業對於信息系統數據的保密工作愈發重視,不同身份、角色對於數據的訪問許可權都應該大相徑庭。 列如 1、不同登錄人員對一個數據列表的可見度是不一樣的,如數據列、數據行、數據按鈕 ...
  • 前言 上一篇文章寫瞭如何使用RabbitMQ做個簡單的發送郵件項目,然後評論也是比較多,也是準備去學習一下如何確保RabbitMQ的消息可靠性,但是由於時間原因,先來說說設計模式中的簡單工廠模式吧! 在瞭解簡單工廠模式之前,我們要知道C#是一款面向對象的高級程式語言。它有3大特性,封裝、繼承、多態。 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 介紹 Nodify是一個WPF基於節點的編輯器控制項,其中包含一系列節點、連接和連接器組件,旨在簡化構建基於節點的工具的過程 ...
  • 創建一個webapi項目做測試使用。 創建新控制器,搭建一個基礎框架,包括獲取當天日期、wiki的請求地址等 創建一個Http請求幫助類以及方法,用於獲取指定URL的信息 使用http請求訪問指定url,先運行一下,看看返回的內容。內容如圖右邊所示,實際上是一個Json數據。我們主要解析 大事記 部 ...
  • 最近在不少自媒體上看到有關.NET與C#的資訊與評價,感覺大家對.NET與C#還是不太瞭解,尤其是對2016年6月發佈的跨平臺.NET Core 1.0,更是知之甚少。在考慮一番之後,還是決定寫點東西總結一下,也回顧一下.NET的發展歷史。 首先,你沒看錯,.NET是跨平臺的,可以在Windows、 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 添加節點(nodes) 通過上一篇我們已經創建好了編輯器實例現在我們為編輯器添加一個節點 添加model和viewmode ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...
  • 類型檢查和轉換:當你需要檢查對象是否為特定類型,並且希望在同一時間內將其轉換為那個類型時,模式匹配提供了一種更簡潔的方式來完成這一任務,避免了使用傳統的as和is操作符後還需要進行額外的null檢查。 複雜條件邏輯:在處理複雜的條件邏輯時,特別是涉及到多個條件和類型的情況下,使用模式匹配可以使代碼更 ...
  • 在日常開發中,我們經常需要和文件打交道,特別是桌面開發,有時候就會需要載入大批量的文件,而且可能還會存在部分文件缺失的情況,那麼如何才能快速的判斷文件是否存在呢?如果處理不當的,且文件數量比較多的時候,可能會造成卡頓等情況,進而影響程式的使用體驗。今天就以一個簡單的小例子,簡述兩種不同的判斷文件是否... ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...