MySQL 5 1 資料查詢 子查詢

2021-10-04 19:28:40 字數 3973 閱讀 1662

子查詢,巢狀查詢,nested query,是巢狀在外層查詢where語句中的查詢,子查詢為主查詢返回其所需的資料,或者對外查詢中的查詢結果作進一步限制。

select..

.from

table

where

#主查詢,外層查詢

(select..

from

table

where..

.);#子查詢,內層查詢

內層查詢返回列col_name的值,外層查詢意義相同的列col_name和子查詢的返回值做比較。使用關係運算子時,返回值至多乙個,使用in時,返回值可以有多個。

select..

.from

table

where col_name 關係運算子 |in|

notin

(select col_name from

table

where..

.);關係運算子:=、<、>、<=、>=、!=

示例:

查詢和潘多拉老師在乙個學院的教師資訊

select

*from teacher

where department_id =

(select department_id from teacher where teacher_name=

'潘多拉'

)查詢哪些同學至少有一門功課在95分以上

select student_id,student_name from student where student_id in

(select

distinct student_id from choose where score=95)

;查詢所有成績都在85分以上的同學

select student_id,student_name from student

where student_id notin(

select

distinct student_id from choose where score<

85)

any和some同義,在進行比較運算時只要子查詢的查詢結果有一行能使結果為true,則結果就為true;而all則要求子查詢中的所有行都使結果為true時,結果才為true.

select

from

table

where col_name 關係運算子 [

any|

some

|all](

select col_name from

table

where..

.);

查詢有成績大於等於'201710201102'同學的所有成績的同學資訊

select

distinct a.student_id,a.student_name

from student a inner

join choose b on a.student_id=b.student_id

where b.score>=

all(

select choose.score from choose where choose.student_id=

'201710201102');

select

distinct a.student_id,a.student_name

from student a inner

join choose b on a.student_id=b.student_id

where b.score>=

(select

max(choose.score)

from choose where choose.student_id=

'201710201102'

);

exists用來檢查子查詢是否有查詢結果返回,只要返回一行,exists的結果即為true,外查詢語句將進行查詢;反之結果為false,此時外層語句將不進行查詢。

select

from

table

where

[exists

|not

exists](

select col_name from

table

where..

.);

查詢還沒有教師的學院資訊

select

*from department where

department_id notin(

select

distinct department_id from teacher)

;查詢教師表中所有的學院id,然後對比部門表中所有的id,即可得到沒有教師的學院資訊

select

*from department

where

notexists

(select

distinct department_id from teacher where department.department_id=teacher.department_id)

;

在create

table命令中,使用select查詢可以把現有表的結構和資料複製到新錶,但不複製索引。

。只複製結構

create

table newtable [as]

select..

.from..

.limit

0。複製結構和資料

create

table newtable [as]

select..

.from..

.limit

offset

, count

示例

create

table newteacher as

select

*from teacher limit0,

0只複製teacher表的結構到新錶

create

table newdepartment as

select

*from department;

複製department表的結構與資料

create

table student2017 as

select

*from student where

left

(student_id,4)

='2017'

;將學生表中所有2017級的學生資訊複製到新錶

在insert、delete和update語句中使用select查詢,可實現資料的新增、刪除和更新。

❖ insert

into tablea select

from tableb where..

;❖ delete

from

table

where (select子查詢);

❖ update tablea set fileda =

(select fieldb from tableb where..

.)where……;

示例

insert

into newteacher

select

*from teacher where professional=

'教授'

;將教師表中所有職稱為教授的教師資訊複製到新錶。

update newdepartment set department_name =

'繼續教育學院'

where department_id=

'102'

;修改指定id的部門名稱

SQL資料查詢 子查詢 多表查詢

user info表 user info表 create table user info id int 2 primary key,user name varchar 12 unique password varchar 15 not null real name varchar 8 not nul...

MySQL資料查詢

1.基本查詢語句 select語句是最常用的查詢語句,它的使用方式有些複雜,但功能卻相當強大。select selection list 要查詢的內容,選擇哪些列 from資料表名 制定資料表 where primary constraint 查詢時需要滿足的條件,行必須滿足條件 2.單錶查詢 單錶...

mysql資料查詢之子查詢

子查詢概念 sub query select select 1 標量子查詢 where 之後寫 確定某乙個值 select from student where c id select idfrom class where grade pm3.1 2 列子查詢 where 之後 寫 in,是一列的所...