聯(lián)合查詢(xún)
基本語(yǔ)法:
select 語(yǔ)句1
union [union 選項(xiàng)]
select 語(yǔ)句2……
union 選項(xiàng)(默認(rèn)去重)
all:保留所有记舆,不管重復(fù)
distinct:去重,默認(rèn)的
意義
提高查詢(xún)效率呼巴,減少帶寬
分表:水平分表:10記錄? 兩個(gè)表5+5
垂直分表:一對(duì)一? ?常用表泽腮;不常用表
子查詢(xún)
一個(gè)select語(yǔ)句包含另一個(gè)select語(yǔ)句
按位置分類(lèi)
from子查詢(xún)
where子查詢(xún)
exists子查詢(xún)
按結(jié)果分類(lèi)
標(biāo)量子查詢(xún)? :一行一列的結(jié)果
列子查詢(xún) :一列多行的結(jié)果(一排記錄)
行子查詢(xún) :多列一行;多行多列
查詢(xún)年齡最大且身高最高
行子查詢(xún)(最佳)
示例
select * from my_student where
(age,height)稱(chēng)為行元素(別忘加括號(hào))
(age,height)=(select max(age),max(height) from my_student);
表子查詢(xún) :多行多列
示例
select * from my_student group by c_id order by height desc;--不符合要求(每個(gè)班取第一個(gè)人在排序)
插入學(xué)生
insert into my_student values(null,'bc20200006','小航','女',25,185,4);
-- 查找每個(gè)班身高最高的學(xué)生 數(shù)據(jù)源要加limit才能查到想要的數(shù)據(jù)
select * from(select * from my_student order by height desc limit 9999999) as student
group by c_id; -- 每個(gè)班選出第一個(gè)學(xué)生而已
視圖
view:是一種有結(jié)構(gòu)衣赶,但是沒(méi)結(jié)果的虛擬表
創(chuàng)建視圖
基本語(yǔ)法:create view 視圖名字 as select 語(yǔ)句;
創(chuàng)建單表視圖:基表只有一個(gè)
創(chuàng)建多表視圖:基表來(lái)源至少兩個(gè)
視圖:?jiǎn)伪砗投啾?/b>
create view my_v1 as
select * from my_student;
create view my_v2 as
select * from my_class;
create view my_v3 as
select * from my_student as a left join my_class as
c on s.c_id=c.id;-- 錯(cuò)誤诊赊,id重復(fù)
多表
create view my_v3 as
select s.*,c.c_name,c.room from my_student as s
join my_class as c on s.c_id=c.id;
查看視圖
show tables [like] / desc 視圖名 / show create table 視圖名;
-- c查看視圖創(chuàng)建語(yǔ)句
show create view my_v3\G(\G橫向查看)
修改視圖
alter view 視圖名字 as 新的select語(yǔ)句;
alter view my_v1 as
select id,name,age,sex,height,c_id from my_student;
刪除視圖
drop view 視圖名字;
drop view my_v4;
算法
視圖算法
系統(tǒng)對(duì)視圖以及外部查詢(xún)視圖的select語(yǔ)句的一種解析方式
視圖算法分三種
undefined:未定義(默認(rèn)的)
temptable:臨時(shí)表算法
merge:合并算法
算法指定:在創(chuàng)建視圖的時(shí)候create algorithm=指定算法 view 視圖名字 as select語(yǔ)句;