mysql多表查詢實例(mysql多對多查詢)

本文目錄一覽:

mysql多表查詢並創建視圖

MySQL在多個數據表上創建視圖

在MySQL中,使用CREATE VIEW語句也可以在兩個或兩個以上的數據表上創建視圖。

實例

在department表和worker表上創建一個名為worker_view1的視圖。

1. 創建視圖的代碼如下:

CREATE ALGORITHM=MERGE VIEW

worker_view1(name,department,sex,age,location)

AS SELECT name,department.d_name,sex,birthday,address

FROM worker,department WHERE worker.d_id=department.d_id

WITH LOCAL CHECK OPTION;

在DOS提示符窗口中查看MySQL在多個數據表上創建視圖的操作效果。如下圖所示:

在DOS提示符窗口中查看MySQL在多個數據表上創建視圖的操作效果

從上圖中可以看出,代碼的執行結果顯示視圖創建成功。

2. 使用DESC語句查詢虛擬表的結構。如下圖所示:

使用DESC語句查詢虛擬表的結構

從上圖中可以看出,視圖worker_view1的屬性分別為name、department、sex、age和location。

視圖指定的屬性列表對應着兩個不同的表的屬性列(字段)。

視圖的屬性名與屬性列表中的屬性名相同。

該實例中的SELECT語句查詢出了department表的d_name字段,還有worker表的name、sex、birthday和address。其中,department表的d_name字段對應視圖的department字段;worker表的birthday字段對應視圖的age字段。

同時,視圖worker_view1的ALGORITHM的值指定為MERGE。還增加了WITH LOCAL CHECK OPTION約束。

本示例說明,視圖可以將多個表上的操作簡潔的表示出來。

提示

同時在多個表上創建視圖是非常有用的。比如,系統中有student表、department表、score表和grade表,分別存儲學生的信息、院系信息、課程信息和成績信息。可以在這4個表上創建一個視圖,用來顯示學生姓名、學號、班級、院系、所選課程和課程成績。

mysql複雜查詢–多表查詢

多表查詢是指基於兩個和兩個以上的表或是視圖的查詢.在實際應用中,查詢單個表可能不能滿足你的需求,(如顯示sales部門位置和其員工的姓名),這種情況下需要使用到(dept表和emp表)

自連接是指在同一張表的連接查詢

select * from emp where empno=(select mgr from emp where ename=’ford’);

子查詢是指嵌入在其它sql查詢語句中的select語句,也叫嵌套查詢

單行子查詢是 指只返回一行數據的子查詢語句

select * from emp where deptno=(select deptno from emp where ename=’smith’);

多行子查詢指返回多行數據的子查詢 使用關鍵字 in

如果我們的一個子查詢,返回的 結果是多列,就叫做列子查詢

合併多個select語句的結果,可以使用集合操作符 union,union all

MYSQL多表聯合查詢 (4表)

select * from 表1 inner join 表2 on 關聯條件

select * from 表1 left outer join 表2 on 關聯條件

select * from 表1 right outer join 表2 on 關聯條件

select * from 表1 cross join 表2 on 關聯條件

MYSQL查詢

查詢平均成績大於70分的同學的學號和平均成績

SELECT s.id,AVG(sc.score) FROM student s,studentcourse sc WHERE s.id=sc.student_id GROUP BY s.id HAVING  AVG(sc.score)70;

查詢所有同學的學號、姓名、選課數、總成績

SELECT id,NAME

FROM student

WHERE id NOT IN (SELECT student_id

FROM studentcourse

WHERE course_id IN (SELECT course.id

FROM teacher,course

WHERE teacher.id=course.teacher_id

AND teacher.name=’關羽’));

查詢學生信息和平均成績

SELECT s.id,s.name,s.city,s.age, c.name,sc.score,t.name

FROM student s,studentcourse sc,course c,teacher t

WHERE s.id=sc.student_id AND c.id=sc.course_id AND c.teacher_id=t.id GROUP BY s.id; 

原創文章,作者:MM9P2,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/130905.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
MM9P2的頭像MM9P2
上一篇 2024-10-03 23:27
下一篇 2024-10-03 23:27

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python生成隨機數的應用和實例

    本文將向您介紹如何使用Python生成50個60到100之間的隨機數,並將列舉使用隨機數的幾個實際應用場景。 一、生成隨機數的代碼示例 import random # 生成50個6…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • 如何在dolphinscheduler中運行chunjun任務實例

    本文將從多個方面對dolphinscheduler運行chunjun任務實例進行詳細的闡述,包括準備工作、chunjun任務配置、運行結果等方面。 一、準備工作 在運行chunju…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

    編程 2025-04-27
  • Python存為JSON的方法及實例

    本文將從以下多個方面對Python存為JSON做詳細的闡述。 一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易於人閱…

    編程 2025-04-27
  • 如何使用MySQL字段去重

    本文將從多個方面為您詳細介紹如何使用MySQL字段去重並給出相應的代碼示例。 一、SELECT DISTINCT語句去重 MySQL提供了SELECT DISTINCT語句,通過在…

    編程 2025-04-27

發表回復

登錄後才能評論