MySql筆記(二)

来源:https://www.cnblogs.com/qzdd/archive/2020/01/19/12214755.html
-Advertisement-
Play Games

一幅畫,一次瞬間的回眸,就在那次畫展上,那個眼神,溫柔的流轉,還是那乾凈的皮鞋,一塵不染,俊朗的眉宇性感的唇,悄悄走近,牽手一段浪漫 [toc] MySQL筆記(二) 13、條件查詢 1.普通條件查詢 語法:SELECT COL_LIST FROM TABLE_NAME [WHERE CONDITI ...


目錄

一幅畫,一次瞬間的回眸,就在那次畫展上,那個眼神,溫柔的流轉,還是那乾凈的皮鞋,一塵不染,俊朗的眉宇性感的唇,悄悄走近,牽手一段浪漫

MySQL筆記(二)

13、條件查詢

1.普通條件查詢
語法:SELECT COL_LIST FROM TABLE_NAME
[WHERE CONDITION_EXPRESSION]

示例1:查詢QQ號為12301的玩家信息
    SELECT*FROM USERS WHERE USER_QQ='12301'

示例2:查詢分數大於2500分的數據
    SELECT*FROM  SCORES WHERE SCORE>2500


2.比較運算符
​ 等於 =
​ 不等於 <>
​ 大於 >
​ 大於等於 >=
​ 小於 <
​ 小於等於 <=

示例:查詢游戲編號為1且分數大於4000分的分數信息
    SELECT * FROM SCORES
    WHERE GNO=1 AND SCORE>4000

3.邏輯運算符
並且 AND
或者 OR
非 NOT

示例:查詢游戲編號為1和2的分數信息
    SELECT * FROM SCORES WHERE GNO=1 OR GNO=2

4.模糊查詢

示例1:查詢分數在2500(含)到3000(含)的分數信息
        SELECT * FROM SCORES
        WHERE SCORE>2500 AND SCORE<=3000
    或
        SELECT * FROM SCORES
        WHERE SCORE BETWEEN 2500 AND 3000
示例2:查詢分數不在2500(含)到3000(含)的分數信息
    SELECT * FROM SCORES
    WHERE SCORE NOT BETWEEN 2500 AND 3000

示例3:查詢1987年1月1日到1992年7月31日出生的玩家
    SELECT * FROM USERS
    WHERE USER_BIRTHDAY
    BETWEEN '1987-01-01' AND '1992-07-31'

5.通配符
'_' 一個字元
% 任意字元
[] 指定範圍內
[^] 不在括弧中

示例1:查詢所有姓孫的玩家信息
    SELECT * FROM USERS
        WHERE USER_NAME LIKE '孫%'

示例2:查詢所有非姓孫的玩家信息
    SELECT * FROM USERS
        WHERE USER_NAME NOT LIKE '孫%'

6.查詢空值的運算符

示例1:查詢生日為NULL的玩家信息
        SELECT * FROM USERS WHERE USER_BIRTHDAY IS NULL
示例2:查詢生日不為NULL的玩家信息
    SELECT * FROM USERS WHERE USER_BIRTHDAY IS NOT NULL

14、對查詢結果排序

1.對指定列進行排序
單列排序要素:
排序依據
排序方式
ASC表示:升序排序(預設方式)
DESC表示:降序排序

​ 語法:SELECT COL_LIST FROM TABLE_NAME
​ ORDER BY ORDER_BY_LIST[ASC|DESC]

    示例1:查詢分數表中編號為1的所有分數信息,並按照分數升序排序
        SELECT * FROM SCORES
        WHERE GNO=1
        ORDER BY SCORE ASC
    
    示例2:查詢分數表中編號為1的所有分數信息,並按照分數降序排序
        SELECT * FROM SCORES
        WHERE GNO=1
        ORDER BY SCORE DESC

2.多列排序
多列排序要點:
排序依據
排序方式
優先順序

    示例1:查詢分數表所有信息,並按照游戲編號的升序和分數的降序進行排序
        SELECT * FROM SCORES 
        ORDER BY GNO ASC,SCORE DESC

15、彙總和分組數據結果

1.聚合函數
聚合函數 支持的數據類型 描述
sum() 數字 對指定列中的所有非空值求總和
avg() 數字 對指定列中的所有非空值求平均值
min() 數字 字元 dateinme 返回指定列中的最小數字,最早的日期或者最小的字元串
max() 數字 字元 dateinme 返回指定列中的最大數字,最近的日期或者最大的字元串
conut() 任意基於行的數據類型 統計結果集合中全部記錄行的數量

示例1:查詢玩家表中一共有多少名玩家信息
語法1:SELECT COUNT(USER_QQ)FROM USERS
語法2:SELECT COUNT(*)FROM USERS

示例2:查詢QQ號是12301的玩家游戲的總分數
語法:SELECT SUM(SCORE) AS '總分數' FROM SCORES WHERE USER_QQ='12301'

示例3:查詢QQ號是12301的玩家游戲的平均分數
語法:SELECT AVG(SCORE) AS '平均分數' FROM SCORES WHERE USER_QQ='12302'

示例4:查詢游戲編號是1的游戲的最高分數
語法:SELECT MAX(SCORE)AS'最高分數' FROM SCORES WHERE GNO=1

示例5:查詢QQ號是12302的玩家的總分,平均分和最高分
語法:SELECT SUM(SCORE)AS'總分' AVG(SCORE)AS'平均分'  MAX(SCORE)AS'最高分'
    FROM SCORES WHERE USER_QQ='12302'

2.在結果集內分組
使用GROUP BY 分組

示例1:查詢每個玩家的總分數,平均分,最高分數
語法:SELECT SUM(SCORE)AS'總分' AVG(SCORE)AS'平均分'  MAX(SCORE)AS'最高分'
      FROM SCORES GROUP BY  user_qq

示例2:查詢每個玩家的平均分數,並顯示玩家QQ和平均分數
語法:SELECT USER_QQ,AVG(SCORE)AS'平均分'
    FROM SCORES GROUP BY  user_qq

3.篩選分組結果

示例1:查詢平均分數大於4000的玩家QQ號,總分數,平均分數
    語法:SELECT USER_QQ,SUM(SCORE)AS'總分數',AVG(SCORE)AS'平均分數'
        FROM SCORES GROUP BY USER_QQ HAVING AVG(SCORE)>4000
示例2:查詢所有用戶的平均分數和總分數,並按平均分倒序排列
語法:SELECT USER_QQ,AVG(SCORE)AS'平均分數',SUM(SCORE)AS'總分數'
    FROM SCORES GROUP BY USER_QQ HAVING AVG(SCORE)DESC

SELECT語句的執行順序
1.from子句指定數據源
2.where子句基於指定的條件對記錄進行篩選
3.group by子句將數據劃分為多個分組
4.使用聚合函數進行進一步的計算統計
5.使用having子句篩選分組
6.使用order by子句對結果集進行排序

16、連接查詢

1.FROM子句進行多表查詢
示例:查詢分數信息,顯示玩家昵稱,游戲名稱和分數

語法:SELECT USER_NAME AS'昵稱',GNAME AS'游戲名稱',SCORE AS'分數'
        FROM USERS,GAMES,SCORE
        WHERE USERS.USER_QQ=SCORES.USER_QQ
        AND GAMES.GNO=SCORES.GNO

2.內連接
連接查詢分為內連接和外連接兩種
內連接特點:
1.相連接的兩張表地位平等
2.如果一張表中在另一張表中不存在對應數據,側不做連接

語法:SELECT USER_NAME ,score
        FROM USERS,SCORE 
        WHERE users.user_qq=scores.user_qq
        
示例1:查詢每個玩家的昵稱,總分和平均分
語法:SELECT USER_NAME AS'昵稱',SUM(SCORE)AS'總分',AVG(SCORE)AS'平均分'
    FROM USERS U INNER JOIN SCORES S ON S.USER_QQ=U.USER_QQ
    GROUP BY U.USER_QQ,USERS.USER_NAME

示例2:查詢平均分數大於3500的分數信息,顯示玩家昵稱,總分數,平均分數,並按照平均分數降序排列
語法:SELECT USER_NAME AS'昵稱',SUM(SCORE)AS'總分',AVG(SCORE)AS'平均分'
    FROM USERS U INNER JOIN SCORES S ON S.USER_QQ=U.USER_QQ
    GROUP BY U.USER_QQ,USERS.USER_NAME 
    HAVING AVG(SCORE)>3500
    ORDER BY AVG(SCORE) DESC

3.外連接
外連接分為左連接和右外連接
外連接的特點:
1.做連接的兩個表地位不平等,其中有一張是基礎表
2.基礎表中的每條數據必須出現,即使另一張表沒有數據與之匹配,也要用NULL補齊
3.左外連接時左表是基礎表,右外連接時右表是基礎表

外連接語法:SELECT COL_LIST
        FROM TABLE1 LEFT|RIGHT[OUTER]JOIN TABLE2 ON TABLE1.COL=TABLE2.COL

      示例:查詢所有玩家關於5號游戲的分數信息
      語法:SELECT USER_NAME AS'昵稱'
        GNO AS '游戲編號',SCORE AS'分數'
        FROM USERS U LEFT JOIN SCORES S ON U.USER_QQ=S.USER_QQ
        AND S.GNO=5 

17、子查詢

1.使用IN關鍵字的子查詢
示例:查詢游戲類型是‘棋牌類’的游戲的分數信息
1.游戲分數表中並包含游戲類型信息
2.採用連接查詢
3.分兩步進行,首先找到所有“棋牌類”游戲的編號,再以這一組編號為查詢依據完成查詢

語法:SELECT * FROM SCORES  WHERE GNO IN 
          (SELECT gno from games WHERE gtype='棋牌')

註意:子查詢一般不寫成SELECT*FROM

示例:查詢沒有參與5號游戲的玩家QQ

語法:SELECT USER_QQ FROM USERS
      WHERE USER_QQ NOT IN
      (SELECT USER_QQ FROM SCORES WHERE GNO=5)

2.使用EXISTS關鍵字的子查詢
示例;如果存在昵稱為“孫悟空”側查詢分數表中數據
SELECT * FROM SCORES
WHERE EXISTS
(SELECT*FROM USERS WHERE USER_NAME='孫悟空')

18、聯合查詢

聯合查詢語法格式

    SELECT_STATEMENT
UNION[ALL]SELECT_STATEMENT
[UNION[ALL]SELECT_STATEMENT]
[...n]

作用與特點:
1.可以把多條查詢語句所產生的結果集縱向連接為一體
語句:SELECT user_name from users
UNION
SELECT gname from gemes
2.有ALL關鍵字可以顯示全部數據(重覆的也顯示出來)
3.列的數量與類型都要相容

 示例1:查詢玩家表中所有女性玩家和生日為空的玩家
 語法:SELECT *FROM USERS WHERE USER_SEX='女'
   UNION
   SELECT * FORM USERS WHERE USER_BIRTHDAY IS NULL

 示例2:查詢QQ是"12301"的玩家所有分數並計算出總分數和平均分數,並顯示到同一結果集中
 語法:SELECT USER_QQ,GNO,SCORE FROM SCORES WHERE USER_QQ='12301'
   UNION ALL
   SELECT '總分', ' ',SUM(SCORE)FROM SCORES
   WHERE USER_QQ='12301'
   UNION ALL
   SELECT '平均分', ' ',AVG(SCORE)FROM SCORES
       WHERE USER_QQ='12301'

19、日期和時間函數

函數的概念:按指定格式輸入參數,返回正確結果的運算單元
返回當前日期:
1.CURDATE()
2.CURRENT_DATE()
3.CURDATE()+0可以將當前日期值轉換為數值型

語法:SELECT CURDATE()

返回當前時間:
        1.CURTIME()
        2.CURRENT_TIME()
            3.CURTIME()+0可以將當前時間值轉換為數值型

語法:SELECT CURTIME()

返回當前日期和時間:
          1.CURRENT_TIMESTAMP()
          2.LOCALTIME()
              3.NOW()
              4.SYSDATE()

語法:SELECT  NOW()

獲取月份:
    1.MONTH(DATE)
    2.MONTHNAME(DATE)

語法:SELECT  MONTH("2015-09-22")

獲取星期:
    1.DAYNAME(DATE)
    2.DAYOFWEEK(DATE)
    3.WEEKDAY(DATE)
    4.WEEK(DATE)
    5.WEEKOFYEAR(DATE)

    語法:SELECT  DAYNAME(2017-04-05)

獲取天數:
    1.DAYOFYEAR(DATE)
    2.DAYOFMONTH(DATE)

語法:SELECT 1.DAYOFYEAR(2017-04-05)

獲取年份,季度,小時,分鐘,秒鐘
    1.YEAR(DATE)
    2.QUARTER(DATE)
    3.HOUR(TIME)
    4.MINUTE(TIME)
    5.SECOND(TIME)

20、數字函數

絕對值函數:
ABS(X)
語法:SELECT ABS(7)

符號函數:
SIGN(X)
語法:SELECT SIGN(-1)

獲取隨機數函數
1.RAND()
2.RAND(X)
語法:SELECT RAND()

獲取整數的函數
1.CEIL(X)/CEILING(X)
2.FLOOR(X)

四捨五入函數
1.ROUND(X)
2.ROUND(X.Y)
3.TRUNCATE(X,Y)

求餘數函數
MOD(X,Y)

域運算函數(平方根)
1.pow(x,y)或Power(x,y)
2.EXP(X)
3.SQRT(X)

角度弧度互換函數
1.RADIANS(X)
2.DEGREES(X)

圓周率函數
PI()

三角函數
1.SIN(X)
2.ASIN(X)
3.COS(X)
4.ACOS(X)
5.TAN(X)
6.ATAN(X)
7.COT(X)

21、字元串函數

1.計算字元數和字元串長度的函數
1.CHAR_LENGTH(S)
2.LENGTH(S)
語法:SELECT LENGTH('s')

2.合併字元串函數
1.CONCAT()
語法:SELECT CONCAT('HH','逗逼')

3.替換字元串函數
1.INSERT(S1,X,LEN,S2)
2.REPLACE(S,S1,S2)
語法:SELECT INSERT('ADCDE',2,3,'##')

4.截取字元串的函數
1.LEFT(S,N)
2.RIGHT(S,N)
語法:SELECT LEFT()

5.重覆生成字元串函數
REPEAT(S,N)
語法:SELECT REPEAT('ABC',3)

6.大小寫轉換函數
1.LOWER(X)/LCASE(X)
2.UPPER(X)/UCASE(X)
語法:SELECT LCASE('ABCD')

7.填充字元串函數
1.LPAD(S1,LEN,S2)
2.RPAD(S1,LEN,S2)
語法:SELECT LPAD('abcd',10,'#')

8.刪除空格函數
1.LTRIM(S)/RTRIM(S)
2.TRIM(S)
語法:SELECT RTRIM(' ABCD ')

9.刪除指定字元串
TRIM(S1 FROM S)
語法:SELECT TRIM('A' FROM 'ABCADE')
10.獲取子字元串
SUBSTRING(S,N,LEN)
MID(S,N,LEN)
語法:SELECT SUBSTRING('abcade',3,2)

11.返回指定位置字元串函數
ELT(N,S1,S2)
語法:SELECT ELT(2,'ABC','DEF','MYSQL')

12.返回指定字元串位置
FIELD(S,S1,S2)

語法:SELECT FIELD('ABC','ABC','DEF','MYSQL')

22、系統函數

1.獲取MySQL版本號的函數
VERSION()

2.查看當前用戶的連接數
CONNECTION_ID()

3.查看當前所用資料庫函數
1.DATABASE()
2.SCHEMA()

4.獲取用戶名的函數
1.USER()
2.CURRENT_USER()
3.SYSTEM_USER()
4.SESSION_USER()


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

-Advertisement-
Play Games
更多相關文章
  • Blog 1. PicGo 支持macOS,Windows,Linux! 支持許多市面上可見的圖床,界面簡潔美觀(本人最愛) 預設支持微博圖床、七牛圖床、騰訊雲COS、又拍雲、GitHub、SM.MS、阿裡雲OSS、Imgur。 地址:https://github.com/Molunerfinn/P ...
  • Everspin在磁存儲器設計,製造和交付給相關應用方面的知識和經驗在半導體行業中是獨一無二的。在平面內和垂直磁隧道結(MTJ)STT-MRAM位單元的開發方面處於市場領先地位。包括40nm,28nm及更高工藝在內的先進技術節點上進行了全包交鑰匙的300mm大批量平面內和垂直MTJ ST-MRAM生 ...
  • 1. Spring Cloud版本命名方式 大多數Spring項目以“主版本號.次版本號.增量版本號.里程碑版本號”的形式命名版本。 主版本號表示項目的重大重構; 次版本號表示新特性的添加和變化; 增量版本號一般表示Bug修複; 里程碑版本號表示某版本號的里程碑; 例如Spring Framewor ...
  • Proxmox VE 簡介 "Proxmox Virtual Environment" ,或 Proxmox VE,是來自德國的開源虛擬化方案。軟體和社區支持都是免費的,企業用戶則可以通過訂閱制獲得付費商業支持。前幾年我曾瞭解過 Proxmox VE,當時 PVE 的重心還在容器化(OpenVZ 和 ...
  • 電腦科學里的巨集(Macro),是一種批量批處理的稱謂。一般說來,巨集是一種規則或模式,或稱語法替換 ,用於說明某一特定輸入(通常是字元串)如何根據預定義的規則轉換成對應的輸出(通常也是字元串)。這種替換在預編譯時進行,稱作巨集展開。 發現定義中有意思的點在於這個“語法替換”,。 當巨集定義值本身為常量時 ...
  • 我們知道linux中一個思想:一切皆文件,那麼在我們安裝完postgresql資料庫後,她長什麼樣呢?本文帶著你一起揭開她的面紗,看看postgresql的文件佈局。 說明:由於安裝測試的版本是10.5這裡可以參考官方文檔:https://www.postgresql.org/docs/10/sto ...
  • 參考:https://www.postgresql.org/docs/current/install-procedure.html 完事開頭難!!!如果想瞭解一門技術,看文檔必不可少,實操更不可少,這篇博文記錄了自己學習postgesql的測試安裝文檔,由於對pg的參數瞭解甚少,目前使用的預設的參數 ...
  • postgresql 作為官方號稱的最先進的開源資料庫,從今天(2020-1-19)起開始系統的學習一下,記錄自己學習的點點滴滴。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...