搜尋
首頁資料庫mysql教程mysql查询语句(mysql学习笔记七)_MySQL

bitsCN.com

Sql语句

一般顺序GHOL : group by,having ,order by,limit

    如果是分组,应该使用对分组字段进行排序的group by语法

                    Limit start ,length

                   去除重复记录默认为all

Select distinct 字段  from

Select distinct * from 没用(所有字段组合不相同才认为不相同,用在这里基本没用),记录值完全一样时取其一个

Union查询

把两个select 结果union起来

( select 语句1)union(select 语句2)

选出英语最高分和数学最高分的学生的id,name ,class

注意加括号

有重复记录时的合并

english由高到低和由低到高的结果合并

在符合语句中 order by功能受影响,需加上limit

子语句的排序

1.将子语句包裹在子括号内

2.子语句的 order by

 中有order by配合Limit使用时才生效。

原因是:union在做子语句时,会对没有limitorder by优化(忽略)

所有结果排序

只需要在最后一个select语句后增加相应排序即可。

子语句括号非必须最后一个排序默认针对所有结果。

Union检索的字段必须个数一样(否者出错),数据类型也一样(发生类型转换) 列名由第一个select检索列名来定

子查询

语句内部的查询语句

表中数据

查出英语成绩最高的学生的信息

不用子查询:

 

但有2个学生英语成绩最高且一致,这个时候在不知道表里数据的情况下就不能使用这种查询方法

   思路:先找出英语成绩最大的那个值,再找出哪些学生的英语成绩与这个最大的值相等。这样一步一步进行查询。

 

只检索一个字段时可以作为一个值使用,必须只检索一个字段

子查询分类

不同的分类会有不同的使用方式

分类标准:

子查询出现的位置

子查询的返回值形式

  返回值分类:

   单一值,单列,多列,多行多列()

出现位置:

Where 型,where

From  from

Exists

使用:

标量的:获得一个值后用关系运算符进行运算(> >=, )

列子查询(只是1):获得一列通常是对个行的一列值(一个集合)

 使用in,not in运算符

查出班级为php101中所有学生的信息

集合操作符还有

Any(集合)  集合中的任意一个

=any(集合) 等于集合中的任意一个即可

等同于in

=All(集合) 集合中的所有元素

!=all(集合) 不等于集合中的所有元素等同于Not in

!=any(集合) 不等于集合中的任意一个元素成立即可,即为只要不等于其中的一个元素即为成立的。

注意:这种语法不该出现在实际开发中

Some(集合) 集合中的一些

语法上与any一样

总结:

=any  等同于in

!=all 等同于 not  in

Some 和any同义

All,any ,some可以使用除了=,!=之外运算符,比in强大

返回一行

在参与比较时,使用括号可以构建一行

(field1,field2,…)

表中数据

现在要查询出和贺8在同样的班级且与他math成绩一样的同学的信息

子查询

 

返回一个表

如果用在from子句内,要求要是一个表

现在是查询结果,必须给这个查询结果起别名

 表中数据

查询php103班 english不及格的学生信息

必须有别名

Exists

如果子查询可以返回数据则返回真,否者返回假

有以下2表

A表 

B表

在a中查询出id在 b中有的记录

先获取a表的第一行记录,在子查询中判断a表的id与b表的id比较

连接查询

Join

每个实体,一个表

一个业务逻辑,使用多个实体的数据

多张表应该在一起使用,将多个表的记录连接起来

Teacher

Teacher_class1

查出代课老师的代课信息

 

 

 

笛卡尔(交叉)连接

内连接处理

在连接时,是可以省略连接条件的。意味着,所有的左表数据,都要与右表的记录做一个连接

共存在m*n个连接

称之为交叉连接或笛卡尔集

此时可以使用 cross join代替inner join

Mysql中cross join与inner join相同

Inner join是默认的连接方式(inner 省略)

等效的

也可使用

表示笛卡尔积

结果虽然一样

On数据连接条件

Where数据过滤条件

但 where是先连接成笛卡尔积

然后做筛选,而on 是在连接时就判断

上表是连接条件2

下表是 

过滤条件2

 

 

 

下表连接过滤各一个

Using:要求负责连接的两个实体之间字段名称一致。

查询条件与外连接通用 外连接不能用where作为连接条件。

注意:

无论是连接条件还是连接查询多字段列表,都没必要一定要写表名.字段语法,是否写取决于是否发生冲突。建议写上。

别名

  表应该别名,保证简洁清晰。

列别名

 

外连接:

分类

左外连接

右外连接

全外连接(暂不支持)

左连接

在连接时,如果出现左边表,数据连接不到右边表的情况,则左表的数据在最终结果内保留。而如果出现右表的数据连接不到左标的情况,右表数据被丢弃。

由于内连接没有左右连接之分,left outer joinouter可以省略。

在外连接中不可以用where做连接条件可用on ,using

表别名可以用在连接条件里,但字段别名不可以。

表起别名后,在筛选或者连接条件里必须用别名,原名不能用了

左表teacher里的数据孙武连接不上也保留。

全外连接左外与右外 union(取并集)

内连接是左外右外交集

Using会去掉结果中重复字段,并放在列首

外连接不能使用没有条件的连接(不像内连接那样形成笛卡尔积)

自然连接

通过mysql自己判断完成连接过程。不需要指定连接条件,mysql会使用多表内相同的字段作为连接条件。

one数据

Two表数据

 

自然连接也有内外之分

内:natural join

:左外natural left join ,右外 natural right join

bitsCN.com
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)Apr 10, 2025 am 09:36 AM

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL:開發人員的基本技能MySQL和SQL:開發人員的基本技能Apr 10, 2025 am 09:30 AM

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

描述MySQL異步主奴隸複製過程。描述MySQL異步主奴隸複製過程。Apr 10, 2025 am 09:30 AM

MySQL異步主從復制通過binlog實現數據同步,提升讀性能和高可用性。 1)主服務器記錄變更到binlog;2)從服務器通過I/O線程讀取binlog;3)從服務器的SQL線程應用binlog同步數據。

mysql:簡單的概念,用於輕鬆學習mysql:簡單的概念,用於輕鬆學習Apr 10, 2025 am 09:29 AM

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL:數據庫的用戶友好介紹MySQL:數據庫的用戶友好介紹Apr 10, 2025 am 09:27 AM

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

InnoDB緩衝池如何工作,為什麼對性能至關重要?InnoDB緩衝池如何工作,為什麼對性能至關重要?Apr 09, 2025 am 12:12 AM

InnoDBBufferPool通過將數據和索引頁加載到內存中來提升MySQL數據庫的性能。 1)數據頁加載到BufferPool中,減少磁盤I/O。 2)臟頁被標記並定期刷新到磁盤。 3)LRU算法管理數據頁淘汰。 4)預讀機制提前加載可能需要的數據頁。

MySQL:初學者的數據管理易用性MySQL:初學者的數據管理易用性Apr 09, 2025 am 12:07 AM

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

與MySQL中使用索引相比,全表掃描何時可以更快?與MySQL中使用索引相比,全表掃描何時可以更快?Apr 09, 2025 am 12:05 AM

全表掃描在MySQL中可能比使用索引更快,具體情況包括:1)數據量較小時;2)查詢返回大量數據時;3)索引列不具備高選擇性時;4)複雜查詢時。通過分析查詢計劃、優化索引、避免過度索引和定期維護表,可以在實際應用中做出最優選擇。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用