mysql 03.查詢(重點)

先準備測試數據,代碼如下:

-- 創建數據庫
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;-- 創建student表
CREATE TABLE student (sid CHAR(6),sname VARCHAR(50),age INT,gender VARCHAR(50) DEFAULT 'male'
);-- 向student表插入數據
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1001', 'lili', 14, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1002', 'wang', 15, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1003', 'tywd', 16, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1004', 'hfgs', 17, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1005', 'qwer', 18, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1006', 'zxsd', 19, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1007', 'hjop', 16, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1008', 'tyop', 15, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1009', 'nhmk', 13, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1010', 'xdfv', 17, 'female');

1.簡單查詢概述
簡單查詢即不含where的select語句。在此,我們講解簡單查詢中最常用的兩種查詢:查詢所有字段和查詢指定字段。

查詢所有字段(方法不唯一只是舉例)

select * from student;

在這里插入圖片描述

2.查詢指定字段(sid、sname)
MySQL命令:

select sid,sname from student;

在這里插入圖片描述

3.常數的查詢
在SELECT中除了書寫列名,還可以書寫常數。

可以用于標記

常數的查詢日期標記 MySQL命令:select sid,sname,'2021-03-02' from student;

在這里插入圖片描述

4.從查詢結果中過濾重復數據

在使用DISTINCT 時需要注意:
在SELECT查詢語句中DISTINCT關鍵字只能用在第一個所查列名之前。
MySQL命令:

select distinct gender from student;

在這里插入圖片描述
5.算術運算符(舉例加運算符)
在SELECT查詢語句中還可以使用加減乘除運算符。
查詢學生10年后的年齡 MySQL命令:

 select sname,age+10 from student;

在這里插入圖片描述

函數:
1.聚合函數
在開發中,我們常常有類似的需求:統計某個字段的最大值、最小值、 平均值等等。為此,MySQL中提供了聚合函數來實現這些功能。所謂聚合,就是將多行匯總成一行;其實,所有的聚合函數均如此——輸入多行,輸出一行。聚合函數具有自動濾空的功能,若某一個值為NULL,那么會自動將其過濾使其不參與運算。
聚合函數使用規則:
只有SELECT子句和HAVING子句、ORDER BY子句中能夠使用聚合函數。例如,在WHERE子句中使用聚合函數是錯誤的。
接下來,我們學習常用聚合函數。

1.1、count()
統計表中數據的行數或者統計指定列其值不為NULL的數據個數
查詢有多少該表中有多少人
MySQL命令:

select count(*) from student;

在這里插入圖片描述
1.2、max()
計算指定列的最大值,如果指定列是字符串類型則使用字符串排序運算

查詢該學生表中年紀最大的學生
MySQL命令:

select max(age) from student;

在這里插入圖片描述
1.3、min()
計算指定列的最小值,如果指定列是字符串類型則使用字符串排序運算

查詢該學生表中年紀最小的學生 MySQL命令:

select sname,min(age) from student;

在這里插入圖片描述
1.4 sum()
計算指定列的數值和,如果指定列類型不是數值類型則計算結果為0
查詢該學生表中年紀的總和 MySQL命令:

select sum(age) from student;

在這里插入圖片描述
1.5、avg()
計算指定列的平均值,如果指定列類型不是數值類型則計算結果為

查詢該學生表中年紀的平均數 MySQL命令:

select avg(age) from student;

在這里插入圖片描述


條件查詢
數據庫中存有大量數據,我們可根據需求獲取指定的數據。此時,我們可在查詢語句中通過WHERE子句指定查詢條件對查詢結果進行過濾。
在開始學習條件查詢之前,我們先準備測試數據,代碼如下:

-- 創建數據庫
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;-- 創建student表
CREATE TABLE student (sid CHAR(6),sname VARCHAR(50),age INT,gender VARCHAR(50) DEFAULT 'male'
);-- 向student表插入數據
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1001', 'lili', 14, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1002', 'wang', 15, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1003', 'tywd', 16, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1004', 'hfgs', 17, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1005', 'qwer', 18, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1006', 'zxsd', 19, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1007', 'hjop', 16, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1008', 'tyop', 15, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1009', 'nhmk', 13, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1010', 'xdfv', 17, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1012', 'lili', 14, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1013', 'wang', 15, 'female');

1.使用關系運算符查詢
在WHERE中可使用關系運算符進行條件查詢,常用的關系運算符如下所示:在這里插入圖片描述
查詢年齡等于或大于17的學生的信息 MySQL命令:


select * from student where age>=17;

在這里插入圖片描述
2.使用IN關鍵字查詢
IN關鍵字用于判斷某個字段的值是否在指定集合中。如果字段的值恰好在指定的集合中,則將字段所在的記錄將査詢出來。

查詢sid為S_1002和S_1003的學生信息 MySQL命令:

select * from student where sid in ('S_1002','S_1003');

在這里插入圖片描述
查詢sid為S_1001以外的學生的信息 MySQL命令:

select * from student where sid not in ('S_1001');

在這里插入圖片描述
3.使用BETWEEN AND關鍵字查詢
BETWEEN AND用于判斷某個字段的值是否在指定的范圍之內。如果字段的值在指定范圍內,則將所在的記錄將查詢出來
查詢15到18歲的學生信息 MySQL命令:

select * from student where age between 15 and 18;

在這里插入圖片描述
查詢不是15到18歲的學生信息 MySQL命令:

select * from student where age not between 15 and 18;

在這里插入圖片描述
4.使用空值查詢
在MySQL中,使用 IS NULL關鍵字判斷字段的值是否為空值。請注意:空值NULL不同于0,也不同于空字符串
由于student表沒有空值就不演示查詢空值的了
查詢sname不為空值的學生信息 MySQL命令:

select * from student where sname is not null;

在這里插入圖片描述
5.使用AND關鍵字查詢
在MySQL中可使用AND關鍵字可以連接兩個或者多個查詢條件。
查詢年紀大于15且性別為male的學生信息 MySQL命令:

select * from student where age>15 and gender='male';

在這里插入圖片描述
6.使用OR關鍵字查詢
在使用SELECT語句查詢數據時可使用OR關鍵字連接多個査詢條件。在使用OR關鍵字時,只要記錄滿足其中任意一個條件就會被查詢出來
查詢年紀大于15或者性別為male的學生信息 MySQL命令:

select * from student where age>15 or gender='male';

在這里插入圖片描述
7.使用LIKE關鍵字查詢
MySQL中可使用LIKE關鍵字可以判斷兩個字符串是否相匹配

7.1 普通字符串
查詢sname中與wang匹配的學生信息 MySQL命令:

select * from student where sname like 'wang';

在這里插入圖片描述
7.2 含有%通配的字符串
%用于匹配任意長度的字符串。例如,字符串“a%”匹配以字符a開始任意長度的字符串
查詢學生姓名以li開始的記錄 MySQL命令:

select * from student where sname like 'li%';

運行效果展示:

在這里插入圖片描述

查詢學生姓名以g結尾的記錄 MySQL命令:

select * from student where sname like '%g';

運行效果展示:
在這里插入圖片描述

查詢學生姓名包含s的記錄 MySQL命令:

select * from student where sname like '%s%';

運行效果展示
在這里插入圖片描述
7.3 含有_通配的字符串
下劃線通配符只匹配單個字符,如果要匹配多個字符,需要連續使用多個下劃線通配符。例如,字符串“ab_”匹配以字符串“ab”開始長度為3的字符串,如abc、abp等等;字符串“a__d”匹配在字符“a”和“d”之間包含兩個字符的字符串,如"abcd"、"atud"等等。
查詢學生姓名以zx開頭且長度為4的記錄 MySQL命令:

select * from student where sname like 'zx__';

運行效果展示

在這里插入圖片描述

查詢學生姓名以g結尾且長度為4的記錄 MySQL命令:

select * from student where sname like '___g';

運行效果展示

在這里插入圖片描述

8.使用LIMIT限制查詢結果的數量
當執行查詢數據時可能會返回很多條記錄,而用戶需要的數據可能只是其中的一條或者幾條
查詢學生表中年紀最小的3位同學 MySQL命令:

select * from student order by age asc limit 3;

運行效果展示

在這里插入圖片描述

9.使用GROUP BY進行分組查詢
GROUP BY 子句可像切蛋糕一樣將表中的數據進行分組,再進行查詢等操作。換言之,可通俗地理解為:通過GROUP BY將原來的表拆分成了幾張小表。
接下來,我們通過一個例子開始學習GROUP BY,代碼如下

-- 創建數據庫
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;-- 創建員工表
CREATE TABLE employee (id int,name varchar(50),salary int,departmentnumber int
);-- 向員工表中插入數據
INSERT INTO employee values(1,'tome',2000,1001); 
INSERT INTO employee values(2,'lucy',9000,1002); 
INSERT INTO employee values(3,'joke',5000,1003); 
INSERT INTO employee values(4,'wang',3000,1004); 
INSERT INTO employee values(5,'chen',3000,1001); 
INSERT INTO employee values(6,'yukt',7000,1002); 
INSERT INTO employee values(7,'rett',6000,1003); 
INSERT INTO employee values(8,'mujk',4000,1004); 
INSERT INTO employee values(9,'poik',3000,1001);

9.1 GROUP BY和聚合函數一起使用
統計各部門員工個數 MySQL命令:

select count(*), departmentnumber from employee group by departmentnumber;

運行效果展示
在這里插入圖片描述

統計部門編號大于1001的各部門員工個數 MySQL命令:

select count(*), departmentnumber from employee where departmentnumber>1001 group by departmentnumber;

運行效果展示

在這里插入圖片描述

9.2 GROUP BY和聚合函數以及HAVING一起使用
統計工資總和大于8000的部門 MySQL命令:

select sum(salary),departmentnumber from employee group by departmentnumber having sum(salary)>8000;

運行效果展示

在這里插入圖片描述

10.使用ORDER BY對查詢結果排序
從表中査詢出來的數據可能是無序的或者其排列順序不是我們期望的。為此,我們可以使用ORDER BY對查詢結果進行排序
其語法格式如下所示:

SELECT 字段名1,字段名2,…
FROM 表名
ORDER BY 字段名1 [ASC 丨 DESC],字段名2 [ASC | DESC];

在該語法中:字段名1、字段名2是查詢結果排序的依據;參數 ASC表示按照升序排序,DESC表示按照降序排序;默認情況下,按照ASC方式排序。通常情況下,ORDER BY子句位于整個SELECT語句的末尾。
查詢所有學生并按照年紀大小升序排列 MySQL命令:

select * from student order by age asc;

運行效果展示
在這里插入圖片描述

查詢所有學生并按照年紀大小降序排列 MySQL命令:

select * from student order by age desc;

運行效果展示

在這里插入圖片描述


別名設置
在査詢數據時可為表和字段取別名,該別名代替表和字段的原名參與查詢操作。
操作的表事先已準備

1.為表取別名
在查詢操作時,假若表名很長使用起來就不太方便,此時可為表取一個別名,用該別名來代替表的名稱。語法格式如下所示:

SELECT * FROM 表名 [AS] 表的別名 WHERE .... ;

將student改為stu查詢整表 MySQL命令:

select * from student as stu;

運行效果展示

在這里插入圖片描述

2.為字段取別名
在查詢操作時,假若字段名很長使用起來就不太方便,此時可該字段取一個別名,用該別名來代替字段的名稱。語法格式如下所示:

SELECT 字段名1 [AS] 別名1 , 字段名2 [AS] 別名2 , ... FROM 表名 WHERE ... ;

將student中的name取別名為“姓名” 查詢整表 MySQL命令:

select name as '姓名',id from student;

運行效果展示

在這里插入圖片描述

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

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

相關文章

PHP 公交公司充電樁管理系統mysql數據庫web結構apache計算機軟件工程網頁wamp

一、源碼特點 PHP 公交公司充電樁管理系統是一套完善的web設計系統,對理解php編程開發語言有幫助,系統具有完整的源代碼和數據庫,系統主要采用B/S模式開發。 源碼下載 https://download.csdn.net/download/qq_41221322/88220946 論文下…

【面試問題】當前系統查詢接口需要去另外2個系統庫中實時查詢返回結果拼接優化思路

文章目錄 場景描述優化思路分享資源 場景描述 接口需要從系統1查詢數據,查出的每條數據需要從另一個系統2中再去查詢某些字段, 比如:從系統1中查出100條數據,每條數據需要去系統2中再去查詢出行數據,可能系統1一條數…

socks5 保障網絡安全與爬蟲需求的完美融合

Socks5代理:跨足網絡安全和爬蟲領域的全能選手 Socks5代理作為一種通用的網絡協議,為多種應用場景提供了強大的代理能力。它不僅支持TCP和UDP的數據傳輸,還具備更高級的安全特性,如用戶身份驗證和加密通信。在網絡安全中&#xf…

蘋果手機批量刪除聯系人的2個方法,請查收!

【想要清理通訊錄里的“僵尸號”,但是突然發現手機不能批量刪除。一個一個刪除太麻煩了,有什么辦法可以一次性多刪幾個人嗎?】 小編想問問果粉們平時都是怎么刪除聯系人的?特別是要刪除多個聯系人的時候,大家還是選擇…

matlab保存圖片

僅作為記錄,大佬請跳過。 文章目錄 用界面中的“另存為”用saveas 用界面中的“另存為” 即可。 參考 感謝大佬博主文章:傳送門 用saveas 必須在編輯器中的plot之后用saveas(也就是不能在命令行中單獨使用——比如在編輯器中plot&#xf…

神經網絡基礎-神經網絡補充概念-46-指數加權平均的偏差修正

由來 指數加權平均(Exponential Moving Average,EMA)在初始時可能會受到偏差的影響,特別是在數據量較小時,EMA的值可能會與實際數據有較大的偏差。為了修正這種偏差,可以使用偏差修正方法,通常…

基于平臺的城市排水泵站管理系統設計

安科瑞 耿敏花 近年來我國城市內澇災害頻發,造成人員傷亡以及經濟損失嚴重,嚴重威脅著城市的安全。數據顯示,2015-2018年我國平均每年受淹或發生內澇城市的數量約占我國城市數量的1/5;人民生命財產也損失嚴重,據統計&a…

基于YOLOv5n/s/m不同參數量級模型開發構建茶葉嫩芽檢測識別模型,使用pruning剪枝技術來對模型進行輕量化處理,探索不同剪枝水平下模型性能影響【續】

這里主要是前一篇博文的后續內容,簡單回顧一下:本文選取了n/s/m三款不同量級的模型來依次構建訓練模型,所有的參數保持同樣的設置,之后探索在不同剪枝處理操作下的性能影響。 在上一篇博文中保持30的剪枝程度得到的效果還是比較理…

C++ 學習系列3 -- 函數壓棧與出棧

在C中,函數壓棧(函數調用)和出棧(函數返回)是函數調用過程中的兩個關鍵步驟。下面將逐步解釋這兩個過程: 一 函數壓棧與出棧過程簡介 函數壓棧(函數調用)的過程如下: …

2020年3月全國計算機等級考試真題(C語言二級)

2020年3月全國計算機等級考試真題(C語言二級) 第1題 有以下程序 void fun1 (char*p) { char*q; qp; while(*q!\0) { (*Q); q; } } main() { char a[]{"Program"},*p; p&a[3]; fun1(p); print…

【C語言學習】本地變量

本地變量 1.函數每次運行,就會產生一個獨立的變量空間,在這個空間中的變量,是函數的這次運行所獨有的,稱之為本地變量。 2.定義在函數內部的變量就是本地變量。 3.參數也是本地變量 變量的生存期和作用域 1.生存期:變量…

新能源電動車充電樁控制主板安全特點

新能源電動車充電樁控制主板安全特點 你是否曾經擔心過充電樁的安全問題?充電樁主板又是什么樣的呢?今天我們就來聊聊這個話題。 充電樁主板采用雙重安全防護系統,包括防水、防護、防塵等,確保充電樁安全、可靠。不僅如此,充電樁主板采用先…

簡單的洗牌算法

目錄 前言 問題 代碼展現及分析 poker類 game類 Text類 前言 洗牌算法為ArrayList具體使用的典例,可以很好的讓我們快速熟系ArrayList的用法。如果你對ArrayList還不太了解除,推薦先看本博主的ArrayList的詳解。 ArrayList的詳解_WHabcwu的博客-CSD…

mysql mysql 容器 忽略大小寫配置

首先能夠連接上mysql,然后輸入下面這個命令查看mysql是否忽略大小寫 show global variables like %lower_case%; lower_case_table_names 0:不忽略大小寫 lower_case_table_names 1:忽略大小寫 mysql安裝分為兩種(根據自己的my…

sql server Varchar轉換為Datetime

將Varchar轉換為Datetime是一個常見的需求,在處理日期和時間數據時特別有用。在SQL Server中,可以使用CONVERT函數或CAST函數將Varchar轉換為Datetime。 使用CONVERT函數 CONVERT函數可以將一個值從一個類型轉換為另一個類型。以下是使用CONVERT函數將…

FPGA芯片IO口上下拉電阻的使用

FPGA芯片IO口上下拉電阻的使用 為什么要設置上下拉電阻一、如何設置下拉電阻二、如何設置上拉電阻為什么要設置上下拉電阻 這里以高云FPGA的GW1N-UV2QN48C6/I5來舉例,這個芯片的上電默認初始化階段,引腳是弱上來模式,且模式固定不能通過軟件的配置來改變。如下圖所示: 上…

centos 7.x 單用戶模式

最近碰到 centos 7.9 一些參數設置錯誤無法啟動系統的情況,研究后可以使用單用戶模式進入系統進行恢復操作。 進入啟動界面,按 e ro 替換為 rw init/sysroot/bin/sh 替換前 替換后 Ctrl-x 進行重啟進入單用戶模式 執行 chroot /sysroot 可以查看日…

【ARM64 常見匯編指令學習 19 -- ARM64 BEQ與B.EQ的區別】

文章目錄 ARM BEQ和B.EQ 上篇文章:ARM64 常見匯編指令學習 18 – ARM64 TST 指令與 條件標志位 Z ARM BEQ和B.EQ 在ARMv8匯編中,BEQ和B.EQ實際上是同一條指令的兩種不同表示方式,它們都表示條件分支指令,當某個條件滿足時&#x…

java練習4.快速查找

題目: 數組 arr[6,1,3,7,9,8,5,4,2],用快速排序進行升序排序. import java.util.Random;public class recursionDemo {public static void main(String[] args) {/*快速排序:* 第一輪:以0索引為基準數,確定基準數在數組正確的位置,* 比基準數小的放到左邊,比基準數大的放在右邊…

Scada和lloT有什么區別?

人們經常混淆SCADA(監督控制和數據采集)和IIoT(工業物聯網)。雖然SCADA系統已經存在多年,但IIoT是一種相對較新的技術,由于其能夠收集和分析來自各種設備的大量數據而越來越受歡迎。SCADA和IIoT都用于提高工…