MySQL修煉之路二

来源:https://www.cnblogs.com/zhangchenchuan/archive/2019/10/19/11703603.html
-Advertisement-
Play Games

1. 表欄位的操作 1. 語法: alter table 表名 執行動作; 2. 添加欄位(add) alter table 表名 add 欄位名 數據類型; alter table 表名 add 欄位名 數據類型 first; alter table 表名 add 欄位名 數據類型 after 字 ...


1. 表欄位的操作

  1. 語法: alter table 表名 執行動作;
  2. 添加欄位(add)
    alter table 表名 add 欄位名 數據類型;
    alter table 表名 add 欄位名 數據類型 first;
    alter table 表名 add 欄位名 數據類型 after 欄位名;
  3. 刪除欄位(drop)
    alter table 表名 drop 欄位名;
  4. 修改數據類型(modify)
    alter table 表名 modify 欄位名 新數據類型;
  5. 表重命名
    alter table 表名 rename 新表名;
  6. 練習
    1. 創建庫 studb2
      create database studb2;
    2. 在庫中創建表 t1, 欄位有3個:name, age, phnumber
      use studb2;
      create table t1(
      name char(15),
      age tinyint unsigned,
      phnumber int);
    3. 查看表結構
      desc t1;
    4. 在表中第一列添加一個id 欄位
      alter table t1 add id int first;
    5. 把 phnumber 的數據類型改為 bigint
      alter table t1 modify phnumber bigint;
    6. 在表中最後一列添加一個欄位 address
      alter table t1 add address char(100);
    7. 刪除表中的 age 欄位
      alter table t1 drop age;
    8. 查看表結構
      desc t1;

2. 表記錄管理

  1. 刪除表記錄
    1. delete from 表名 where 條件;
    2. 註意
      delete 語句後如果不加where條件,所有記錄全部清空
  2. 更新表記錄
    1. update 表名 set 欄位1=值1,欄位2=值2,... where 條件;
    2.註意
      必須加where條件

  3. 練習
    1. 查找所有蜀國人的信息
      select * from hero where country='蜀國';
    2. 查找所有女英雄的姓名、性別和國家
      select name,sex,country from hero where sex='女';
    3. 把id位2的記錄改為典韋,性別男,國家魏國
      update hero set name='典韋', sex='男', country='魏國' where id=2;
    4. 刪除所有蜀國英雄
      delete from hero where country = '蜀國';
    5. 把貂蟬的國籍改為魏國
      update hero set country='魏國' where name='貂蟬';
    6. 刪除所有表記錄
      delete from hero;

3. 運算符操作

  1. 數值比較/字元比較
    1. 數值比較 : = != > >= < <=
    2. 字元比較 : = !=
    3 練習
      1. 查找攻擊力高於150的英雄的名字和攻擊值
        select name,gongji from sanguo where gongji > 150;
      2. 將趙雲的攻擊力設置位360,防禦力設置位68
        update sanguo set gongji=360, fangyu=68 where name='趙雲';

  2. 邏輯比較
    1. and(兩個或多個條件同時成立)
    2. or(任意一個條件成立即可)
    3. 練習
      1. 找出攻擊值高於200的蜀國英雄的名字、攻擊力
        select name,gongji from sanguo where gongji > 200 and country='蜀國';
        select name as n, gongji as g from sanguo where gongji > 200 and country='蜀國';
      2. 將吳國英雄中攻擊值位110的英雄的攻擊值改為100,防禦力改為60
        update sanguo set gongji=100, fangyu=60 where country='吳國' and gongji=110;
      3. 查找蜀國和魏國的英雄信息
        select * from sanguo where country='蜀國' or country='魏國';

  3. 範圍內比較
    1. between 值1 and 值2
    2. where 欄位名 in(值1, 值2, ...)
    3. where 欄位名 not in(值1, 值2, ...)

    4. 練習
      1. 查找攻擊值100-200的蜀國英雄信息
        select * from sanguo where gongji between 100 and 200 and country='蜀國';
      2. 找到蜀國和吳國以外的國家的女英雄信息
        select * from sanguo where country not in('蜀國', '吳國') and sex='女';
      3. 找到id 位1、3或5的蜀國英雄和貂蟬的信息
        select * from sanguo where (id in(1,3,5) and country='蜀國') or name='貂蟬';

  4. 匹配空、非空
    1. 空:where name is null
    2. 非空:where name is not null

    3. 示例:
      1. 姓名位NULL值的蜀國女英雄
        select * from sanguo
        where name is null and country='蜀國' and sex = '女';
      2. 姓名位“”的英雄信息
        select * from sanguo where name="";
    4. 註意
      1. NULL:空值,只能用is 或者 is not 去匹配
      2. "" :空字元串,用 = 或者 != 去匹配

  5. 模糊比較
    1. where 欄位名 like 表達式
    2. 表達式
      1. _: 匹配單個字元
      2. %:匹配0到多個字元

    3. 示例
      select name from sanguo where name like "_%_";
      select name from sanguo where name like "%";
      # NULL 不會被統計,只能用is、is not 去匹配
      select name from sanguo where name like "___";
      select name from sanguo where name like "趙%";

4. SQL查詢

  1. 總結
    3.select ... 聚合函數 from 表名
    1. where ...
    2. group by ...
    4. having ...
    5. order by ...
    6. limit ...;

  2. order by
    1. 給查詢結果進行排序
    2. ... order by 欄位名 升序/降序
    3. 升序:ASC
     降序:DESC

    4. 示例
      1. 將英雄按防禦值從高到低排序
        select * from sanguo order by fangyu desc;

      2. 將蜀國英雄按攻擊值從高到低排序
        select * from sanguo order by gongji desc;

      3. 將魏蜀兩國英雄中名字為三個字的按防禦值升序排列
        select * from sanguo where country in('魏國', '蜀國') and name like '___' order by fangyu;

  3. limit(永遠放在SQL語句的最後寫)
    1. 作用:限制顯示查詢記錄的個數
    2. 用法
      1. limit n -> 顯示n條記錄
      2. limit m, n
        m 表示 從第m+1條記錄開始顯示,顯示 n 條
        limit 2, 3 : 第 3、4、5 三條記錄

    3. 示例
      1. 在蜀國英雄中,查找防禦值倒數第二名至倒數第四名的英雄的記錄
        select * from sanguo
        where country='蜀國'
        order by fangyu asc
        limit 1, 3;

      2. 在蜀國英雄中,查找攻擊值前3名且名字不為 NULL的英雄的姓名、攻擊值和國家
        select name,gongji,country from sanguo
        where country="蜀國" and name is not null
        order by gongji desc
        limit 3;

    4. 分頁
      每頁顯示5條記錄,顯示第4頁的內容

      第1頁: limit 0,5 # 1 2 3 4 5
      第2頁: limit (2-1)*5,5 # 6 7 8 9 10
      第3頁: limit (3-1)*5,5 # 11 12 13 14 15
      第4頁; limit (4-1)*5,5 # 16 17 18 19 20
      .....
      每頁顯示n條記錄,顯示第m頁:limit (m-1)*n, n

  4. 聚合函數
    1. 分類
      avg(欄位名) : 求該欄位平均值
      sum(欄位名): 求和
      max(欄位名):求最大值
      min(欄位名): 求最小值
      count(欄位名): 統計該欄位記錄的個數

    2. 示例
      1. 攻擊最強值是多少
        select avg(gongji) from MOSHOU.sanguo;
        select avg(gongji) as best from MOSHOU.sanguo;

        select max(gongji) from MOSHOU.sanguo;

      2. 統計id、name兩個欄位分別有幾條記錄
        select count(id), count(name) from sanguo;
        ## 空值 NULL 不會被統計

      3. 計算蜀國英雄的總攻擊力
        select sum(gongji) from MOSHOU.sanguo where country='蜀國';
      4. 統計蜀國英雄中攻擊值大於200的英雄的數量
        select count(*) from MOSHOU.sanguo where country='蜀國' and gongji > 200;


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

-Advertisement-
Play Games
更多相關文章
  • 回到目錄 (續上小節) 3. 分壓偏置 前面的“改進型固定偏置”電路,雖然情況比原始的固定偏置電路好了一點,但還是不太理想,於是人們又設計出了性能更加穩定的分壓偏置(voltage-divider bias configuration)電路,如下圖所示: 圖3-6.06 分壓偏置電路的穩定性非常完美 ...
  • https://www.jb51.net/article/82608.htm https://blog.csdn.net/taian1665/article/details/86492400 https://blog.51cto.com/bantu/1982399 https://blog.csdn ...
  • 今日工作:資料庫連接、數據寫入 一、資料庫連接:使用了pymysql庫 二、數據寫入 代碼部分結束,雖然今天的代碼看起來又少又容易,但sql語句可真是廢了不少力氣。 最終資料庫成果,總共1729條數據: ...
  • 1. 鎖分類 MySQL中主要分為全局鎖、表級鎖和行鎖三類。本篇主要涉及全局鎖和表級鎖。 2. 全局鎖 全局鎖是對整個資料庫實例進行加鎖。 Flush table with read lock(FRTWRL)該命令用於加全局鎖。使用該命令之後,整個庫處於只讀狀態,不能執行數據的增刪改查、建表、修改表 ...
  • 列的查詢 語法1-1 基本的SELECT語句 SELECT <列名>,... FROM <表名>; 語法1-2 查詢出表中所有的列 SELECT * FROM <表名>; 星號(*)是代表全部列的意思。使用星號無法設定列的顯示順序。 語法1-3 1.為列設定別名 eg:SELECT product_ ...
  • 作為一名應用系統開發人員,為什麼要關註數據內部的存儲和檢索呢?首先,你不太可能從頭開始實現一套自己的存儲引擎,往往需要從眾多現有的存儲引擎中選擇一個適合自己應用的存儲引擎。因此,為了針對你特定的工作負載而對資料庫調優時,最好對存儲引擎的底層機制有一個大概的瞭解。 今天我們就先來瞭解下關係型資料庫My ...
  • 前言 當我們在Redis資料庫中set一個KV的時候,這個KV保存在哪裡?如果我們get的時候,又從哪裡get出來。時間複雜度,空間複雜的等等,怎麼優化等等一系列問題。 伺服器中的資料庫 Redis伺服器將所有資料庫信息都保存在redis.h##redisService結構體中。代碼如下: 列了幾個 ...
  • 1. 外鍵(foreign key) 1. 定義:讓當前表欄位的值在另一個表的範圍內選擇 2. 語法 foreign key(參考欄位名) references 主表(被參考欄位名) on delete 級聯動作 on update 級聯動作 3. 使用規則 1. 主表、從表欄位數據類型要一致 2. ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...