MYSQL數據庫語法補充

一,DQL基礎查詢

DQL(Data Query Language)數據查詢語言,可以單表查詢,也可以多表查詢

語法:

? ? ? ? select 查詢結果 from 表名 where 條件;

特點:

? ? ? ? 查詢結果可以是:表中的字段,函數

? ? ? ? 查詢的結果是一個虛擬的表格

1,查詢結果處理:

查詢特定列: select column1,column2 from table

全部列查詢: select * from table

處理函數: select 函數 from table

函數分類:

? ? ? ? 單行函數:如concat,length,ifnull等,會對查詢的每行進行處理

? ? ? ? 分組函數:做統計使用,又稱為統計函數、分組函數,會將多行處理成一行

單行函數:

(1)字符函數:

1.length()獲取參數值的字節個數(一個中文字符占3個字節,英文字符一個字母占一個字節)

2.char_length()獲取參數值的字符個數

SELECT NAME,LENGTH(NAME),CHAR_LENGTH(NAME) FROM student
-- 這里查詢了學生表中的姓名,姓名的字節長度,姓名的字符長度

3.concat(str1,str2,...)拼接字符串

SELECT CONCAT(num,':',NAME) FROM student -- 這里指給學號列添加了:以及姓名列

4.upper()/lower():將字符串變成大寫/小寫

SELECT UPPER(NAME),LOWER(NAME) FROM student
-- UPPER(NAME)轉大寫,LOWER(NAME)轉小寫,僅僅轉換英文字母大小寫

5.substring(column,position,length)截取字符串 位置從1開始

-- substring(列,開始的位置,截取長度) 注意開始的位置是從1開始,返回的是被截取的字符
SELECT SUBSTRING(NAME,1,1) FROM student

6.trim(column)去掉字符串前后的空格或子串,trim(指定子串 from column)

-- trim(列) 默認是取出前后的空格
SELECT NAME,TRIM(NAME) FROM student-- trim('*' FROM NAME) 去掉前后指定的字符串
SELECT NAME,TRIM('*' FROM NAME) FROM student


7.replace(column,old,new)替換,替換所有的子串

-- replace(列,old,new)將列中的數據將舊的字符改為新的字符
SELECT REPLACE(NAME,'j','J') FROM student

(2)邏輯處理

case when 條件 then 結果1 else 結果2 end; 可以有多個when

-- case when 條件 then 條件成立執行 else 條件不成立 end; 可以有多個when,且必須完成否則代碼報錯,else后直接跟結果
select num,name,(case when height>=1.70 then '高個子' else '非高個子' end)as heightfrom student
-- 這里是查詢學號,姓名,以及當身高大于等于1.70時 返回高個子否則返回非高個子并作為列,應用于每一行
select num,name,(case when height>=1.70 then '高個子'when height>=1.60 then '正常' else '低個子' end)as heightfrom student

ifnull(被檢測值,默認值)函數檢測是否為null,如果為null,則返回指定的值,否則返回原本的值

-- ifnull(列,'默認值')檢測指定列的值是否為空,如果為空顯示默認值
select num,name,ifnull(birthday,'暫未錄入信息')as birthday from student-- 檢測birthday列的值是否為空,如果為空則顯示傳入的字符串
-- 查詢學生表的學號,姓名,以及查詢某個列是否為空,如果不為空顯示表中的信息,如果不為空顯示'暫未錄入信息'

if函數:if else的 效果 if(條件,結果1,結果2)

-- if(條件,結果1,結果2)
select num,name,if(height>=1.70,'高個子','非高個子')as height from student
-- 這里指查詢學號,姓名

(3)數學函數

round(數值):四舍五入

ceil(數值):向上取整,返回>=該參數的最小整數

floor(數值):向下取整,返回<=該參數的最大整數

truncate(數值,保留小數位的位數):截斷,小數點后截斷到幾位,不會進行四舍五入

mod(被除數,除數):取余,被除數為正,則為正;被除數為負則為負

(4)日期函數

now():返回當前系統時間(年月日時分秒)

curdate():返回當前系統日期(年月日)

date_format(日期列,格式):將日期轉換為指定格式

datediff(big,small):返回兩個日期相差天數

日期格式:

select num,name,now(),curdate() from student
-- 查詢學生表的學號,姓名,當前系統日期(年月時分秒),當前的系統時間(年月日)
select num,name,date_format(birthday,'%Y')as birthday from student-- 將生日格式化
select num,name from student where date_format(birthday,'%Y') = '2008'-- 查詢生日為2008年的某行數據
select num,name from student where date_format(birthday,'%Y-%m-%d') = '2008-09-08'-- 先將生日格式化,通過where 條件查詢birthday為'2008-09-08的學號與姓名'
select num,name,datediff(curdate(),birthday)as borndays from student-- 查詢今天與生日相差多少天

分組函數

功能:用作統計使用,又稱為聚合函數或統計函數

sum(列):求和? 返回給定列的合計

-- 查詢了學生表的最高身高且為單行單列
select sum(height) from student

avg(列):平均值? 返回給定列的平均值

select avg(height) from student -- 查詢學生表的身高平均值

max(列):最大值? 返回該列中的最大值

min(列):最小值? 返回該列中的最小值

select max(height)as maxheight ,min(height)as minheight from student

count(列):計數? 統計此列中的個數,如果列值為null,則不統計,一般使用*或主鍵

-- count(列) 統計該列總數 值如果為null,不計算
select count(birthday) from student-- 如果統計所有的數據,一般用主鍵列或*
select count(id) from student
select count(*) from student

注:

單獨使用分組函數時沒有問題

SELECT MAX(height) FROM student

如果使用分組函數的同時,還需要查詢其他列名,則會報錯,需要結合group by語句

SELECT no,name,MAX(height) FROM student

(1)條件查詢

使用where 子句,將不滿足條件的行進行過濾,where子句緊隨from子句
語法:select<查詢結果>from<表名>where<條件>
在where子句中使用的符號以及邏輯運算符:
比較: =,!=,>,<,>=,<= ? between and 兩者之間,包含臨界值;
邏輯運算:and 與
? ? ? ? ? ? ? ? or ? 或
? ? ? ? ? ? ? ?not ?非

-- select 查詢結果 from 表 where 條件 [排序,數量限制,分組 分組后條件篩選]
select * from student where gender ='男'-- and 并且 與
select * from student where gender = '男' and height>=1.80 -- 有多個條件可以繼續添加
-- or 或
select * from student where gender = '男' or height>=1.80select * from student where height>=1.70 and height<=1.80
select * from student where height>1.70 and height<1.80-- 在兩個值之間,包含邊界值
select * from student where height between 1.70 and 1.80

模糊查詢

LIKE:是否匹配于一個模式 一般和通配符搭配使用,可以判斷字符型數值或數值型.

通配符: 匹配% 任意多個字符

in 判斷某字段的值是否屬于in列表中的某一項

not in判斷某字段的值是否不屬于in列表中的某一項

IS NULL(為空的)

IS NOT NULL(不為空的)

(2)查詢時的合并

1,UNION的語法如下

SQL語句1

UNION

SQL語句2

2,UNION ALL的語法如下

SQL語句1

UNION ALL

SQL語句2

當使用union 時,mysql 會把結果集中重復的記錄刪掉,而使用union all ,mysql 會把所有的記錄返回,且效率高于union 。

-- UNION 合并時,可以去除多條語句查詢出的重復數據
select num,name,gender  from student where gender = '男'
union
select num,name,gender  from student where gender = '女'-- union all 只是簡單的合并沒有去重
select num,name,gender from student
union all
select num,name,gender from student where gender='女'

排序

1.查詢結果排序
查詢結果排序,使用order by 子句排序 order by 排序列 asc/desc
asc代表的是升序,desc代表的是降序,如果不寫asc/desc 則默認是升序
order by 子句中可以支持單個字段,多個字段

-- 排序 order by 列名 asc (升序)/desc(降序)
select * from student where num>1 order by height asc
-- 先數據來源,在走條件,再走查詢結果
select * from student order by height asc
select * from student order by regtime desc-- 注冊日期降序
select * from student order by height desc,regtime asc -- 多個字段進行排序,相同位置再根據第二個排順序,當身高相同時再根據regtime 升序進行排序


2.查詢結果數量限制
limit子句:對查詢的結果顯示結果限制數量(sql 語句最末尾位置)

-- 數量限制 limit (開始的位置,每次查詢的數量) 開始的位置從零開始
select * from student where num>1 order by id asc limit 0,2
select * from student order by id asc limit 2,2
select * from student limit 4,2 -- 放在sql語句最末尾位置


mysql分頁公式 :limit (n-1)*每頁大小,每頁大小?
根據第幾頁選擇,其中n是第幾頁

分組查詢

語法:

select 分組函數,列(字段) from 表 group by 分組的列 [having 分組后的篩選條件]

可以同時對兩列進行分組

having是對查詢后的結果進行處理

-- 用哪個列作為分組條件,會把該列相同的數據分到同一組處理
select gender,count(*) from student where num>1 group by gender

注:查詢時語法運行順序

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76011.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76011.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76011.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis到底能不能做主數據庫?

張三拍案而起&#xff1a;“Redis 是緩存數據庫&#xff0c;怎么能當主數據庫用&#xff1f;簡直是天方夜譚&#xff01;” 李四冷笑回應&#xff1a;“你沒用過&#xff0c;憑什么說不行&#xff1f;我已經用 Redis 做主數據庫好幾年了&#xff0c;系統穩定得像鐵板一塊&…

flutter 項目結構目錄以及pubspec.ymal等文件描述

在Flutter項目中&#xff0c;目錄結構和pubspec.yaml文件是非常重要的組成部分&#xff0c;它們定義了項目的結構、依賴管理以及如何構建和運行項目。下面我將詳細解釋這些關鍵元素&#xff1a; 1. Flutter項目目錄結構 Flutter項目的標準目錄結構通常如下所示&#xff1a; …

CentOS 環境下 MySQL 數據庫全部備份的操作指南

最近阿里云個人服務到期&#xff0c;因為是很久之前買的測試機器&#xff0c;配置較低&#xff0c;上面運行的有技術博客 和以往的測試項目&#xff0c;所以準備放棄掉。 需要備份下上面的表結構和數據、以及代碼倉庫。 下面是一個完整的 CentOS 環境下 MySQL 數據庫全部備份…

ecplise 工具 沒有Java EE Tools 選項

Java EE Tools 是將項目轉換為web項目的重要的快捷鍵&#xff0c;如果進行web開發 那是不可或缺的 該工具是一個插件&#xff0c;可以作為插件安裝到ecplise上 安裝步驟如下&#xff1a; 找到help-->install new software 在彈出的頁面中 work with中輸入&#xff1a;Jun…

544 eff.c 1761 優化設計文檔

1:性能分析 1.1性能對比 oneapi 與hygonGcc性能對比發現&#xff0c;544課題中的eff.c 1761循環處&#xff0c;oneapi 進行了循環向量化, gcc使用標量&#xff0c;循環源碼前加 #pragma clang loop vectorize(disable) 找出oneapi在該循環處關閉和開啟loop vect 的性能差距&a…

LeetCode.3396.使數組元素互不相同所需的最少操作次數

3396. 使數組元素互不相同所需的最少操作次數 給你一個整數數組 nums&#xff0c;你需要確保數組中的元素 互不相同 。為此&#xff0c;你可以執行以下操作任意次&#xff1a; 從數組的開頭移除 3 個元素。如果數組中元素少于 3 個&#xff0c;則移除所有剩余元素。 注意&…

【已完結STM32】--自學江協科技筆記匯總

以下學習筆記代碼均來自b站江協科技視頻 筆記匯總完結 文章筆記對應江科大視頻新建工程【2-2】新建工程江科大STM32-GPIO輸出 點亮LED&#xff0c;LED閃爍&#xff0c;LED流水燈&#xff0c;蜂鳴器&#xff08;學習筆記&#xff09;_unit32-t rcc-apb2periph-CSDN博客 【3-1】…

QML Loader:加載組件與狀態監控

目錄 引言相關閱讀工程結構示例一&#xff1a;從文件加載組件 (LoaderFile.qml)代碼實現被加載的組件&#xff1a;MyComponent.qml代碼解析運行效果 示例二&#xff1a;直接加載Component對象 (LoaderComponent.qml)代碼實現代碼解析運行效果 示例三&#xff1a;監控加載狀態 (…

K8S核心技術點

Pod&#xff0c;Service和Deployment的關系 Pod&#xff1a;Kubernetes 中最小的部署單元&#xff0c;用于運行容器化應用。 Service&#xff1a;提供服務發現和負載均衡&#xff0c;為 Pod 提供穩定的網絡端點&#xff0c;ClusterIP&#xff0c;NodePort&#xff0c;LoadBala…

Spring 核心注解深度解析:@Autowired、@Repository 與它們的協作關系

引言 在 Spring 框架中&#xff0c;?依賴注入&#xff08;DI&#xff09;?? 是實現松耦合架構的核心機制。Autowired 和 Repository 作為兩個高頻使用的注解&#xff0c;分別承擔著 ?依賴裝配? 和 ?數據訪問層標識? 的關鍵職責。本文將深入探討它們的功能特性、協作模式…

[Linux]從零開始的ARM Linux交叉編譯與.so文件鏈接教程

一、前言 最近在項目需要將C版本的opencv集成到原本的代碼中從而進行一些簡單的圖像處理。但是在這其中遇到了一些問題&#xff0c;首先就是原本的opencv我們需要在x86的架構上進行編譯然后將其集成到我們的項目中&#xff0c;這里我們到底應該將opencv編譯為x86架構的還是編譯…

svelte+vite+ts+melt-ui從0到1完整框架搭建

框架太“重”了&#xff1a;通常一個小型項目只由少數幾個簡單頁面構成&#xff0c;如果使用 Vue 或者 React 這些框架來研發的話&#xff0c;有點“大材小用”了。構建的產物中包含了不少框架運行時代碼(虛擬 DOM、響應式、狀態管理等)&#xff0c;這些代碼對于小型項目而言是…

無法看到新安裝的 JDK 17

在 Linux 系統中使用 update-alternatives --config java 無法看到新安裝的 JDK 17&#xff0c;可能是由于 JDK 未正確注冊到系統備選列表中。 一、原因分析 JDK 未注冊到 update-alternatives update-alternatives 工具需要手動注冊 JDK 路徑后才能識別新版本。如果僅安裝 JDK…

鼎訊信通 便攜式雷達信號干擾模擬器:打造實戰化電磁環境的新利器

在現代戰爭中&#xff0c;電磁環境的復雜性直接影響著雷達裝備的性能和作戰效果。面對敵方日益精進的電子戰手段&#xff0c;如何提升雷達設備的抗干擾能力&#xff0c;確保其在實戰環境中的穩定性和可靠性&#xff0c;已成為各國軍隊和科研機構的重要課題。 為此&#xff0c;…

【AI提示詞】決策專家

提示說明 決策專家可以幫助你進行科學決策&#xff0c;盡可能避免錯誤&#xff0c;提升決策成功的概率。 提示詞 # Role : 決策專家決策&#xff0c;是面對不容易判斷優劣的幾個選項&#xff0c;做出正確的選擇。說白了&#xff0c;決策就是拿個主意。決策專家是基于科學決策…

力扣Hot100題,刷題

力扣HOT100 - 1. 兩數之和 解題思路&#xff1a; 解法一&#xff1a;暴力 class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for (int i 0; i < n; i)for (int j i 1; j < n; j) {if (target nums[i] nums[j])return new int[]…

uni-app ucharts自定義換行tooltips

實現效果&#xff1a; 第一步&#xff1a;在uni_modules文件夾下找到config-ucharts.js和u-charts.js文件 第二步&#xff1a;在config-ucharts.js文件中配置換行格式 // 換行格式"wrapTooltip":function(item, category, index, opts){return item.name&#xff1a;…

國標GB28181視頻平臺EasyCVR順應智慧農業自動化趨勢,打造大棚實時視頻監控防線

一、方案背景 近年來&#xff0c;溫室大棚種植技術憑借其顯著的優勢&#xff0c;在提升農作物產量和質量、豐富農產品供應方面發揮了重要的作用&#xff0c;極大改善了人們的生活水平&#xff0c;得到了廣泛的推廣和應用。大棚內的溫度、濕度、光照度和二氧化碳濃度等環境因素…

InternVideo2.5:Empowering Video MLLMs with Long and Rich Context Modeling

一、TL&#xff1b;DR InternVideo2.5通過LRC建模來提升MLLM的性能。層次化token壓縮和任務偏好優化&#xff08;mask時空 head&#xff09;整合到一個框架中&#xff0c;并通過自適應層次化token壓縮來開發緊湊的時空表征MVBench/Perception Test/EgoSchema/MLVU數據benchmar…

【時時三省】(C語言基礎)條件運算符和條件表達式

山不在高&#xff0c;有仙則名。水不在深&#xff0c;有龍則靈。 ----CSDN 時時三省 有一種if語句&#xff0c;當被判別的表達式的值為“真”或“假”時&#xff0c;都執行一個賦值語句且向一個變量賦值。 如&#xff1a; if ( a > b ) max a&#xff1b; else max …