首頁 資料庫 mysql教程 MySQl心得4--3--数据库查询3--from字句_MySQL

MySQl心得4--3--数据库查询3--from字句_MySQL

Jun 01, 2016 pm 01:42 PM
資料庫查詢

bitsCN.com  1.from 字句 SELECT的查询对象由FROM子句指定,其格式为:   FROM 表名1 [ , 表名2] … 其中,表名: tbl_name [ [AS] 表别名 ] [{USE | ignore | force} index (key_list)]                      /*查询表*/ | join_table                /*连接表*/ 说明:表名指出了要查询的表或视图。 ●  表别名主要用在相关子查询及连接查询中。如果FROM子句指定了表别名,这条SELECT语句中的其他子句都必须使用表别名来代替原始的表名。当同一个表在SELECT语句中多次被提到的时候,就必须要使用表别名来加以区分。 ●  {USE | IGNORE | FORCE} INDEX:USE INDEX告知MySQL选择一个索引来查找表中的行,IGNORE INDEX告知MySQL不要使用某些特定的索引,FORCE INDEX的作用接近USE INDEX(key_list),只有当无法使用一个给定的索引来查找表中的行时,才使用表扫描。 2.表名中可以包含一个或多个表:   ●   引用一个表: 可以用两种方式引用一个表,第一种方式是使用USE语句让一个数据库成为当前数据库,在这种情况下,如果在FROM子句中指定表名,则该表应该属于当前数据库。第二种方式是指定的时候在表名前带上表所属数据库的名字。例如,假设当前数据库是db1,现在要显示数据库db2里的表tb的内容,使用如下语句: SELECT  *  FROM db2.tb; 当然,在SELECT关键字后指定列名的时候也可以在列名前带上所属数据库和表的名字,但是一般来说,如果选择的字段在各表中是唯一的,就没有必要去特别指定。 ●   引用多个表: 如果要在不同表中查询数据,则必须在FROM子句中指定多个表。指定多个表时就要使用到连接。当不同列的数据组合到一个表中叫做表的连接。 3.连接的方式有以下三种。  高级查询  (多表查询:数据源是多个表) 做多表连接:要找到连接的条件,2个表的公共字段(属性) 分析:1.考虑数据源  :xs:学号  姓名; xs_kc:课程号  成绩               2.连接条件:两表的学号相等   xs.学号=xs_kc.学号 当查看的列在多个表中都存在的话,必须在字段名前加上表名进行限制。 1).  全连接 连接的第一种方式是将各个表用逗号分隔,这样就指定了全连接。FROM子句产生的中间结果是一个新表,新表是每个表的每行都与其他表中的每行交叉以产生所有可能的组合,列包含了所有表中出现的列,也就是笛卡儿积。这样连接表潜在地产生数量非常大的行,因为可能得到的行数为每个表中行数之积。在这样的情形下,通常要使用WHERE子句设定条件来将结果集减少为易于管理的大小,这样的连接即为等值连接。 例: 查找XSCJ数据库中所有学生选过的课程名和课程号。 SELECT DISTINCT KC.课程名,XS_KC.课程号    FROM KC, XS_KC  WHERE KC.课程号=XS_KC.课程号; 2). JOIN连接 语法格式如下:   表名1 inner join 表名2 [join_condition]  | 表名1{ left | right } [outer]JOIN表名2 join_condition  | 表名1 natural [ {RIGHT |LEFT} [OUTER] ] JOIN表名2  | 表名1 cross join 表名2 [join_condition]   | 表名1 straight_join表名2 [ON condition_exp] 其中,join_condition 代表:  ON 连接条件 | using(column_list) 使用JOIN关键字的连接主要分为三种: A.内连接(指定了inner关键字的连接是内连接)。     内连接是系统默认的,可以省略INNER关键字。使用内连接后,FROM子句中ON条件主要用来连接表,其他并不属于连接表的条件可以使用WHERE子句来指定。 作为特例,可以将一个表与它自身进行连接,称为自连接。若要在一个表中查找具有相同列值的行,则可以使用自连接。使用自连接时需为表指定两个别名,且对所有列的引用均要用别名限定。 例:查找XSCJ数据库中课程不同、成绩相同的学生的学号、课程号和成绩。 SELECT a.学号,a.课程号,b.课程号,a.成绩  FROM XS_KC AS a  JOIN  XS_KC AS b    ON a.成绩=b.成绩 AND a.学号=b.学号 ANDa.课程号!=b.课程号; 如果要连接的表中有列名相同,并且连接的条件就是列名相等,那么ON条件也可以换成USING子句。

USING(column_list)子句用于为一系列的列进行命名。这些列必须同时在两个表中存在。其中column_list为两表中相同的列名。 例: 查找KC表中所有学生选过的课程名。 SELECT 课程名  FROM KC INNER JOIN XS_KC  USING (课程号); 说明:查询的结果为XS_KC表中所有出现的课程号对应的课程名。 B.外连接(指定了OUTER关键字的连接为外连接。) 外连接包括: ●   左外连接(LEFT OUTER JOIN):结果表中除了匹配行外,还包括左表有的但右表中不匹配的行,对于这样的行,从右表被选择的列设置为NULL。 ●   右外连接(RIGHT OUTERJOIN):结果表中除了匹配行外,还包括右表有的但左表中不匹配的行,对于这样的行,从左表被选择的列设置为NULL。 ●   自然连接(NATURAL JOIN):自然连接还有自然左外连接(NATURAL LEFT OUTER JOIN)和自然右外连接(NATURALRIGHT OUTER JOIN)。NATURAL JOIN的语义定义与使用了ON条件的INNER JOIN相同。 其中的OUTER关键字均可省略。 例: 查找所有学生情况及他们选修的课程号,若学生未选修任何课,也要包括其情况。 SELECT XS.* , 课程号     FROM XS LEFT OUTER JOIN XS_KC ON XS.学号 =XS_KC.学号; 说明:若本例不使用LEFT OUTER JOIN,则结果中不会包含未选任何课程的学生信息。使用了左外连接后,本例结果中返回的行中有未选任何课程的学生信息,相应行的课程号字段值为NULL。    例: 使用自然连接实现例4.22中相同的结果。 SELECT DISTINCT 课程名, XS_KC.课程号      FROM KC NATURAL JOIN XS_KC; 说明:SELECT语句中只选取一个用来连接表的列时,可以使用自然连接代替内连接。用这种方法,可以用自然左外连接来替换左外连接,自然右外连接替换右外连接。(用的不多,容易出错,因为是让系统自动找相同的条件,找不到时会报错) 注意:外连接只能对两个表进行。 C.交叉连接(指定了CROSS JOIN关键字的连接是交叉连接。) 在不包含连接条件,交叉连接实际上是将两个表进行笛卡儿积运算,结果表是由第一个表的每行与第二个表的每一行拼接后形成的表,因此结果表的行数等于两个表行数之积。 在MySQL中,CROSS JOIN从语法上来说与INNER JOIN等同,两者可以互换。 例: 列出学生所有可能的选课情况。   SELECT 学号, 姓名, 课程号, 课程名      FROM XS CROSS JOIN KC; 另外,STRAIGHT_JOIN连接用法和INNERJOIN连接基本相同。不同的是,STRAIGHT_JOIN后不可以使用USING子句替代ON条件。 例: 使用STRAIGHT_JOIN连接实现例4.22中相同的结果。 SELECT  DISTINCT 课程名, XS_KC.课程号     FROM KC STRAIGHT_JOIN XS_KC    ON  (KC.课程号=XS_KC.课程号); 4.几种连接的举例比较: 要求:查询每个学生的姓名,专业名,课程名,成绩 数据源:xs:姓名,专业名;  kc:课程名 ;   xs_kc  :成绩 连接条件:xs.学号=xs_kc.学号 and  kc.课程号=xs_kc.课程号 (1) 全连接(等值连接)  例1: select 姓名,专业名,课程名,成绩  from xs,kc,xs_kc where xs.学号=xs_kc.学号 and kc.课程号=xs_kc.课程号;  例2: select 姓名,专业名,课程名,成绩 fromxs,kc,xs_kc where xs.学号=xs_kc.学号 and kc.课程号=xs_kc.课程号 and 课程名='计算机基础' and 成绩>=80 order by 成绩 desc; (2) 内连接 例1: select xs.学号,姓名,课程号,成绩 from xs inner join xs_kc on xs.学号=xs_kc.学号; 例2: select 姓名,专业名,课程名,成绩 from xs inner join xs_kc on xs.学号=xs_kc.学号 inner join kc on xs_kc.课程号=kc.课程号 where 课程名='计算机基础' and 成绩>=80; 5.连接多表(如果是三张表) 1).Join连接: from  表1 inner join 表2 on 条件1                 inner join 表3 on 条件2      2).全连接: from  表1,表2,表3 where条件1   and  条件2 3).给表加别名:from  表名 as 别名 注意:如果给表加了别名,以后的使用必须用别名,不能再使用原表名   作者 tianyazaiheruan bitsCN.com

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
在 React Query 中實作資料庫查詢的錯誤處理機制 在 React Query 中實作資料庫查詢的錯誤處理機制 Sep 28, 2023 pm 02:40 PM

在ReactQuery中實作資料庫查詢的錯誤處理機制ReactQuery是一個用於管理和快取資料的函式庫,它在前端領域越來越受歡迎。在應用程式中,我們經常需要與資料庫進行交互,而資料庫查詢可能會出現各種錯誤。因此,實現一個有效的錯誤處理機制對於確保應用程式的穩定性和使用者體驗至關重要。第一步是安裝ReactQuery。使用以下命令將其新增至項目:n

Laravel中間件:為應用程式新增資料庫查詢和效能監控 Laravel中間件:為應用程式新增資料庫查詢和效能監控 Jul 28, 2023 pm 02:53 PM

Laravel中間件:為應用程式新增資料庫查詢和效能監控導言:在開發網頁應用程式時,資料查詢和效能監控是非常重要的。 Laravel提供了一種方便的方式來處理這些需求,即中間件。中間件是在請求和回應之間進行處理的技術,它可以在請求到達控制器之前或回應返回給使用者之後執行一些邏輯。本文將介紹如何使用Laravel中間件來實現資料庫查詢和效能監控。一、創建中間

Java開發中如何解決資料庫查詢數量溢位問題 Java開發中如何解決資料庫查詢數量溢位問題 Jun 29, 2023 pm 06:46 PM

Java開發中如何解決資料庫查詢數量溢出問題標題:Java開發中如何解決資料庫查詢數量溢出問題摘要:隨著互聯網的發展和資料量的逐漸增大,資料庫查詢的數量也越來越大。在Java開發中,由於記憶體的限制,可能會遇到資料庫查詢數量溢出的問題。本文將介紹幾種解決這個問題的方法。正文:優化資料庫查詢語句首先,我們可以從最佳化資料庫查詢語句的角度來解決這個問題。我們可以使用

PHP資料庫查詢技巧:如何使用mysqli_query函數執行SQL查詢 PHP資料庫查詢技巧:如何使用mysqli_query函數執行SQL查詢 Jul 29, 2023 pm 04:42 PM

PHP資料庫查詢技巧:如何使用mysqli_query函數執行SQL查詢在開發PHP應用程式時,與資料庫的互動是非常重要的部分。對於查詢操作,PHP提供了一些內建的函數來執行SQL語句。本文將重點放在mysqli_query函數的使用方法,幫助開發者更好地進行資料庫查詢操作。一、mysqli_query函數介紹mysqli_query函數是PHP的內建函

如何使用 PHP 查詢資料庫並顯示結果 如何使用 PHP 查詢資料庫並顯示結果 May 02, 2024 pm 02:15 PM

使用PHP查詢資料庫並顯示結果的步驟:連接資料庫;查詢資料庫;顯示結果,遍歷查詢結果的行並輸出特定列資料。

如何實作MySQL中查看表格的資料的語句? 如何實作MySQL中查看表格的資料的語句? Nov 08, 2023 pm 01:40 PM

標題:MySQL中查看表格的資料的語句及具體程式碼範例MySQL是一種開源的關係型資料庫管理系統,它被廣泛應用於各種規模的應用程式。在MySQL中,檢視表格的資料是一個非常基礎的操作,以下將介紹如何透過具體的語句和程式碼範例來實現這項操作。首先,我們將介紹透過MySQL命令列工具查看表格的資料的語句及具體程式碼範例。假設我們有一個名為「employees」的表,以下是通

PHP高效能:如何最佳化資料庫查詢 PHP高效能:如何最佳化資料庫查詢 Jun 04, 2023 am 08:40 AM

在當前網路時代,隨著資料的爆炸性成長,資料庫成為了一個服務的核心。資料庫的效能和速度更是直接影響了網站及其應用程式的使用者體驗和可用性,因此如何優化資料庫查詢是開發人員需要著重研究的問題。而在PHP語言中,透過對資料庫查詢語句的最佳化,可以提高程式的效能,減少伺服器的負擔,提高服務的穩定性。本文將從以下幾個方面,介紹如何最佳化資料庫查詢:一、使用索引在進行查詢時

PHP中如何進行全文檢索? PHP中如何進行全文檢索? May 13, 2023 am 08:00 AM

隨著網路技術的不斷發展,資料量的爆炸性成長和各種文字資料的廣泛應用,全文檢索成為了非常重要的技術。全文檢索是一種能夠快速、準確地找到文字資料的方法,廣泛應用於搜尋引擎、論壇、部落格、電商網站等應用程式場景。在PHP程式設計中,如何實現全文檢索呢?一、什麼是全文檢索?在傳統的關係型資料庫中,我們通常會使用SQL語句進行模糊查詢,但是當資料量較大時,這種查詢方法會

See all articles