Mysql起步之路三

2021-08-20 13:12:51 字數 3080 閱讀 4581

特殊形式的查詢:

1、 子查詢:select 欄位名稱,… from tb1_name where col_name=(select  col_name from tb2_name);

——內層語句的查詢結果可以作為外層語句的查詢條件            

a)      由in引發的子查詢

select * from emp where depid [not]in (select id from dep);

b)      由比較運算子引發的子查詢:select 欄位名稱,… from tb1_name where col_name>=[<=…](select                      col_name  from  tb2_name);

c)      由exists引發的子查詢(內層查詢語句不返回記錄,而返回boolean值):

select 欄位名稱,… from tb1_name where exists (select  col_name  from  tb2_name);——內層查詢語 句為 真,則查詢外層語句,反之不查詢

select * from emp where exists select depname from dep where id=10;

d)      any  some all的子查詢

運算子\關鍵字

anysome

all最小值

最小值最大值

最大值最大值

最小值任意值

任意值任意值

eg: select * from stu where score>= any(select score from level);----大於等於內層查詢的最小值

select * from stu wherescore>= all(select score from level);----大於等於內層查詢的最大值

e)      insert… select:

insert user1(name) select namefrom user;

f)       create… select:

create table user1(

id tinyint unsigned auto_increment key,

name varchar(20) unique

)engine=innodb charset=utf8 select id,name from emp;

g)      insert tb_name set col_name=(select…);

insert user2 set name=(select name from user where id=1);

2、 聯合查詢

a)        union:會去掉表中的重覆記錄

select 欄位名稱… from tb1_name

union

select 欄位名稱… from tb2_name;

b)        union all:簡單的合併

select 欄位名稱… from tb1_name

union on

select 欄位名稱… from tb2_name;

3、 自身連線查詢:無限級分類

//無限級分類表設計

create table cate(

id smallint unsigned auto_increment key,

catename varchar(40) not null unique,

pid smallint unsigned not null default 0 comment '父id'

)engine=innodb charset=utf8;

insert cate(catename) values('服裝'),

('數碼'),

('玩具');

insert cate(catename, pid)values('**',1),

('**',1),

('內衣',1);

insert cate(catename, pid)values('電視',2),

('冰箱',2),

('洗衣機',2);

insert cate(catename, pid)values('愛馬仕',3),

('lv',3),

('gucci',3);

insert cate(catename, pid)values('夾克',4),

('襯衫',4),

('褲子',4);

insert cate(catename, pid) values('液晶電視',10),

('等離子電視',10),

('背投電視',10);

//查詢各個分類的父分類

select s.id, s.catename asscatename, p.catename as pcatename from cate as s

left join cate as p

on s.pid=p.id;

//查詢父分類下有哪些子分類

select p.id, p.catename as pcatename, s.catename as scatename from cate as s

right join cate as p

on s.pid=p.id;

//統計各分類下的條數

select p.id, p.catename as pcatename, count(s.catename) from cate as s

right join cate as p

on s.pid=p.id

group by p.catename

order by id;

//統計各分類下的條數,及顯示詳細資訊

select group_concat(s.id),group_concat(s.catename) as scatenames, count(s.catename), p.catename as pcatename from cate as s

left join cate as p

on s.pid=p.id

group by p.catename;

理想與現實 我的起步之路

2004年7月初,在北京順利申請到了國家發明專利後,心裡美滋滋地回到長沙,多年的夢終於實現了,感覺一塊石頭總算落了地,但輕鬆過後,我開始冷靜考慮,專利畢竟是理論上的,在工程實現上能行嗎?當時心裡真沒底,如同有人曾設想在喜馬拉雅山脈中間開隧道,讓青藏高原變成美麗江南一樣,想法是美好的,實際是不可能的。...

MySQL學習之路(三) 基礎查詢

特點 查詢列表可以是 表中的字段 常量值 表示式 函式 查詢到的結果是乙個虛擬的 select 列名 from 表名select 列名1,列名2,列名3,from 表名select from 表名select 常量select 10210 select zczc select 2020 19sele...

Mysql學習之路04 三大正規化

第一正規化 原子性。表的元組不可再拆分成更小的元組。第二正規化 非主鍵必須完全依賴主鍵,而不是僅僅依賴主鍵的一部分。舉個例子,美國銷售軍火的時候,對每一樣 根據國家或地區的不同而給出不同的 建個表看看 create table weapon price wp id unsigned int notn...