mysql——第二課

學生表

CREATE TABLE `student` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,`sex` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,`age` int(11) DEFAULT NULL,`c_id` int(10) DEFAULT NULL,PRIMARY KEY (`id`),KEY `c_id` (`c_id`),CONSTRAINT `student_ibfk_1` FOREIGN KEY (`c_id`) REFERENCES `class` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1574588396 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

班級表

CREATE TABLE `class` (`id` int(11) NOT NULL AUTO_INCREMENT,`c_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

查詢:

詢是數據庫操作的核心,用于從數據庫中檢索、插入、更新和刪除數據。

-- 從表中選取所有列的數據
SELECT * from student
-- 從表中選取指定列的數據
select name,age,sex FROM student;

?

between:

在 SQL 里,BETWEEN?操作符是一個很實用的工具,主要用于篩選出指定范圍內的數據。此范圍涵蓋數值、日期或者文本等不同類型的數據。

SELECT * from student where age BETWEEN 20 and 100;

?

in:

在 SQL 中,IN?操作符是一個常用的條件篩選工具,它允許你在?WHERE?子句里指定多個值,用于判斷某列的值是否包含在給定的值列表中。

select * from student where age in(45,21);
select * from student where id in(1,3);

?

?與或非:

1.?AND?運算符

AND?運算符用于在?WHERE?子句中連接多個條件,只有當所有條件都為真時,對應的記錄才會被返回。

SELECT *
FROM employees
WHERE department = 'IT' AND salary > 5000;

此查詢僅會返回?department?是?IT?并且?salary?超過 5000 的員工記錄,也就是?Bob?和?David?的信息。

2.?OR?運算符

OR?運算符同樣用于在?WHERE?子句中連接多個條件,只要其中任何一個條件為真,對應的記錄就會被返回。

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR ...;

該查詢會返回?department?為?IT?或者?salary?大于 6000 的員工記錄,即?BobCharlie?和?David?的信息。

3.?NOT?運算符

NOT?運算符用于對一個條件取反,也就是當條件為假時,對應的記錄才會被返回。

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

通過靈活運用?ANDOR?和?NOT?運算符,你能夠構建出滿足各種需求的復雜查詢條件。

ISNULL()函數的使用

ISNULL(expr),如果expr的值為null,則返回1,如果expr1的值不為null,則返回0。

SELECT * from student where age is not null;

?

模糊查找

在 SQL 中,模糊查找是一種強大的功能,允許你在數據庫中查找與特定模式匹配的數據,而不是精確匹配。這在處理文本數據時特別有用,比如在搜索功能中。主要通過?LIKE?操作符結合通配符來實現。

通配符

  • 百分號(%:代表零個、一個或多個任意字符。
  • 下劃線(_:代表單個任意字符。
  • 方括號([]:用于指定一個字符范圍,只適用于部分數據庫系統(如 SQL Server)。
  • 脫字符([^ ]:用于排除指定字符范圍,同樣只適用于部分數據庫系統(如 SQL Server)
SELECT * from student where name like"呂_";
SELECT * from student where name like"呂__";
SELECT * from student where name like"呂%";
SELECT * from student where name like"%呂"

?

分頁查詢

在 SQL 里,LIMIT?是進行分頁查詢的常用關鍵字,它能限定查詢結果返回的行數,借助?LIMIT?與偏移量,就能實現分頁查詢。不過不同數據庫系統對?LIMIT?的使用方式稍有差異。

-- limit a,b a表示起始索引值 b表示查詢個數
-- limt b offset a
SELECT * from student limit 0,5;
SELECT * from student limit 5,5;

?

排序子語句

在 SQL 中,排序子語句通常指的是?ORDER BY?子句,它用于對查詢結果集按照一個或多個列進行排序。

-- --  排序子語句
-- order by 列名 desc 降序 asc升序
select * from student order by age desc;
--  where 排序 限制
SELECT *from student where sex="男" ORDER BY age asc limit 0,5

?

聚合函數 分組函數

在 SQL 中,聚合函數和分組函數(通常借助?GROUP BY?子句與聚合函數配合使用)是用于對數據進行匯總和分析的重要工具,

?COUNT()
  • 功能:用于統計記錄的數量。
  • 示例:假設有一個?employees?表,要統計員工的數量。
SELECT COUNT(*) FROM employees;
SUM()
  • 功能:用于計算某列數值的總和。
  • 示例:計算?employees?表中所有員工的工資總和。
SELECT SUM(salary) FROM employees;
AVG()
  • 功能:用于計算某列數值的平均值。
  • 示例:計算?employees?表中員工的平均工資。
SELECT AVG(salary) FROM employees;

分組函數(GROUP BY?子句)

GROUP BY?子句用于將查詢結果按照一個或多個列進行分組,然后可以對每個組應用聚合函數。

-- 聚合函數 分組函數
-- min() 最小 max()最大 sum()求和 avg() 求平均 count()數量-->count不統計null字段
--  HAVING 子句:如果你需要對分組后的結果進行過濾,應該使用 HAVING 子句而不是 WHERE 子句。WHERE子句在數據分組前進行過濾,而 HAVING 子句在數據分組后對分組的結果進行過濾。
SELECT avg(age),c_id from student  where sex="男" GROUP BY c_id having c_id=1;

添加:

insert into student(name,age,sex) values("趙云",18,"男"); 

?

修改:

UPDATE student set name="諸葛亮",age=100,sex="男" where id=14;

?

刪除:

DELETE from student where id=1;
delete from student where id in (5,12,13,4);

多表查詢:

-- 重命名 as 新名字 as可省
select s1.*,c1.c_name 班級名稱 from student as s1,class c1 where s1.c_id=c1.id

連表查詢:

連表查詢(也稱為連接查詢)是 SQL 中一種強大的功能,用于從多個表中檢索相關的數據。當數據分散在不同的表中時,通過連表查詢可以將這些表中的數據組合起來,以滿足特定的查詢需求。

1. 內連接(INNER JOIN)

  • 原理:內連接只返回兩個表中滿足連接條件的行,即只返回兩個表中匹配的記錄。

2. 左連接(LEFT JOIN 或 LEFT OUTER JOIN)

  • 原理:左連接返回左表中的所有行,以及右表中匹配的行。如果右表中沒有匹配的行,則右表的列值將顯示為?NULL

3. 右連接(RIGHT JOIN 或 RIGHT OUTER JOIN)

  • 原理:右連接與左連接相反,它返回右表中的所有行,以及左表中匹配的行。如果左表中沒有匹配的行,則左表的列值將顯示為?NULL

4. 全連接(FULL JOIN 或 FULL OUTER JOIN)

  • 原理:全連接返回兩個表中的所有行,無論是否有匹配的行。如果某一行在另一個表中沒有匹配的行,則對應的列值將顯示為?NULL
SELECT * FROM STUDENT JOIN CLASS ON STUDENT.C_ID=CLASS.ID;
SELECT * FROM STUDENT LEFT JOIN CLASS ON STUDENT.C_ID=CLASS.ID;

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

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

相關文章

圖解 ThreadLocal

在 Java 多線程編程的世界里,ThreadLocal 是一個非常實用的工具,它為每個線程提供了獨立的變量副本,避免了多線程環境下的變量共享問題。今天,我們就從內存視角出發,通過一張圖來深入理解 ThreadLocal 的工作原理&…

Sql Server 索引性能優化 分析以及分表

定位需優化語句 根據工具 skywking 或者開啟慢查詢日志 找到 慢sql 的語句根據 執行過程 來 判斷 慢的原因 row filter 指標 看查了多少數據 比例多少 type 看下是單表 還是 join聯表 比如 執行步驟多 沒索引 優化方向 減少執行次數索引 沒索引考慮加索引 加索引 盡量選擇 i…

@JsonSerialize注解

1.簡介 JsonSerialize注解可以自定義改變返回前端的內容,比如:將Student實體類的age字段的值在返回前端之前,由20改為21. 要用到jackson-databind依賴包,在Spring Boot項目中,默認已經集成了Jackson,因此你不需要手動引入Jackson庫。 2.上例子 將Stud…

Java面試黃金寶典5

1. ConcurrentHashMap 和 HashTable 有哪些區別 原理 HashTable:它繼承自 Dictionary 類,是 Java 早期提供的線程安全哈希表。其線程安全的實現方式是對每個方法都使用 synchronized 關鍵字進行同步。例如,在調用 put、get 等方法時&#xff…

vim的一般操作(分屏操作) 和 Makefile 和 gdb

目錄 一. vim的基本概念 二. vim基礎操作 2.1 插入模式 aio 2.2 [插入模式]切換至[正常模式] Esc 2.3[正常模式]切換至[末行模式] shift ; 2.4 替換模式 Shift R 2.5 視圖(可視)模式 (可以快速 刪除//注釋 或者 增加//注釋) ctrl v 三&…

Linux:基礎IO---文件描述符

文章目錄 1. 前言1.1 C語言文件知識回顧 2. 文件2.1 文件基礎知識 3. 被打開的文件3.1 以C語言為主,先回憶一下C文件接口3.2 過渡到系統,認識文件系統調用3.3 訪問文件的本質3.4 重定向&&緩沖區 序:在深入了解了進程的內容后&#xf…

2025年十大AI工具對比

2025年十大AI工具對比 以下是2025年各大AI工具的詳細對比,涵蓋性能、功能、用戶評價等方面,并以表格形式呈現。數據來源于多個權威來源,確保信息全面且準確。 對比表格 排名AI工具名稱主要功能性能特點用戶評價適用場景1DeepSeek多模態AI、…

JDK 24 發布,新特性解讀!

一、版本演進與技術格局新動向 北京時間3月20日,Oracle正式發布Java SE 24。作為繼Java 21之后的第三個非LTS版本,其技術革新力度遠超預期——共集成24項JEP提案,相當于Java 22(12項)與Java 23(12項&#…

批量圖片壓縮工具,高效減小文件大小并保持質量

在處理大量圖片時,如何高效壓縮文件大小并保持畫質是個常見難題。今天為大家推薦一款專業工具——JPGC,它專為圖片批量處理設計,能快速壓縮JPG/JPEG格式圖片,在減小文件體積的同時盡可能保留畫質,尤其適合處理數碼相機…

【002安卓開發方案調研】之Kotlin+Jetpack開發方案

基于2025年國內移動開發領域的現狀,結合Jetpack Compose的技術特性和生態發展,以下是對KotlinJetpack Compose開發安卓應用的綜合分析: 一、技術與生態成熟度評估 1. 技術成熟度 聲明式UI與開發效率 Jetpack Compose采用聲明式編程模型&…

軟考中級-軟件設計師 準備

軟考中級-軟件設計師 準備 一、軟考相關1.1、考試時間1.2、考試時長1.3、題型和分值: 二、軟考備考2.1、相關書籍2.2、推薦課程:B站up主zst_20012.3、學習路線 一、軟考相關 1.1、考試時間 一年有兩次軟考,一般是五月末和十一月的中旬 以下…

【數據挖掘】Python基礎環境安裝配置

【數據挖掘】Python基礎環境安裝配置 一、摘要二、安裝Python3.13.2三、安裝Jupyter Notebook四、安裝Numpy和Pandas以及matplotlib五、安裝scikit-learn庫和seaborn庫 一、摘要 本文主要介紹如何在Windows上安裝Python3.13.2,然后基于該Python版本安裝Jupyter not…

給語言模型增加知識邏輯校驗智能,識別網絡中的信息投毒行為模式

目前階段,現在的LLM缺少一個形式邏輯校驗模型。 網絡系統上不斷增長的信息相當部分不再純粹是人類生成,而是也由各種模型生成輸出,模型后續從網絡系統上取得信息,AI生態系統陷入了信息熵增循環,AI模型生態系統的計算輸…

OpenLayers集成天地圖服務開發指南

以下是一份面向GIS初學者的OpenLayers開發詳細教程&#xff0c;深度解析代碼&#xff1a; 一、開發環境搭建 1.1 OpenLayers庫引入 <!-- 使用CDN引入最新版OpenLayers --> <link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/ollatest/ol.c…

【免費】2000-2019年各省地方財政房產稅數據

2000-2019年各省地方財政房產稅數據 1、時間&#xff1a;2000-2019年 2、來源&#xff1a;國家統計局、統計年鑒 3、指標&#xff1a;行政區劃代碼、地區、年份、地方財政房產稅 4、范圍&#xff1a;31省 5、指標說明&#xff1a;房產稅是對個人和單位擁有的房產征收的一種…

在Ubuntu 22.04 中安裝Docker的詳細指南

在Ubuntu 22.04 中安裝Docker的詳細指南 一、引言 Docker是一個開源的應用容器引擎&#xff0c;它可以讓開發者將應用程序及其依賴項打包到一個可移植的容器中&#xff0c;然后發布到任何流行的Linux機器上&#xff0c;也可以實現虛擬化。在Ubuntu 22.04上安裝Docker能為開發、…

macOS 使用 iconv 轉化文件編碼

文章目錄 使用方式支持的編碼類型iconv 更多用法 使用方式 iconv -f GB2312 -t UTF-8 分治算法.txt > 分治算法2.txt 支持的編碼類型 可以使用 下面命令 查看編碼類型 iconv -lPS : ISO-8859 有很多種分支&#xff0c;iconv 支持 ISO-8859-1、ISO-8859-10&#xff0c;但…

操作系統核心問題解析(目的/定位、管理思想:先描述,再組織、 庫函數與系統調用的關系)

1. 目的/定位 核心作用&#xff1a;操作系統是計算機系統的資源管理者和用戶/應用程序的服務提供者。 資源管理&#xff1a;統一管理CPU、內存、磁盤、外設等硬件資源&#xff0c;避免沖突、提高利用率&#xff08;如多任務調度、虛擬內存&#xff09;。 服務接口&#xff1a…

使用Python將視頻轉化為gif

使用Python將視頻轉化為gif 一、前言二、準備三、測試 一、前言 最近想把喜歡的視頻片段作成gif&#xff0c;就試著用Python做了下&#xff0c;感覺效果還行&#xff0c;這里做個記錄。 二、準備 先下載安裝對應的庫&#xff0c;命令如下&#xff1a; pip install moviepy …

Python模塊化設計 ——函數調用

1.以下代碼的輸出結果是()。 def young(age): if 25 <=age<=30: print(“作為一個老師,你很年輕”) elif age <25: print(“作為一個老師,你太年輕了”) elif age>=60: print(“作為一個老師,你可以退休了”) else: print(“作為一個老師,你很有愛心”) young(42) …