《學習》5連線查詢(高階查詢)

2021-09-07 17:26:29 字數 1957 閱讀 4753

create table t(

tid int unsigned not null auto_increment,

tname varchar(30),

primary key (tid)

)engine=myisam auto_increment=1 default charset =utf8;

insert into t values(null,'***'),(null,'趙老師'),(null,'張老師');

select * from t;

create table s(

sid int unsigned not null auto_increment,

sname varchar(10)not null,

sgender enum ('男','女','人妖'),

sdept varchar(20) not null default '電腦科學',

sscore int unsigned,

tid int unsigned,

primary key(sid)

)engine=myisam auto_increment=1601 default charset =utf8;

insert into s values(null,'張三','男','美術',80,1),(null,'張三丰','人妖','英語',45,2);

insert into s values(null,'李麗','女','美術',90,3),(null,'黃瑤','女','財經',99,3);

insert into s(sname,sgender,sscore) values('趙磊','男',50),('周磊','人妖',68);

drop table job;

select * from s;

-- 多表查詢(不推薦使用)

select s.`sid`,s.`sname`,t.`tname`

from s,t

where s.tid = t.tid;

-- 連線查詢 join left join right join

select s.`sid` 學號,s.`sname` 姓名,s.`sdept` 專業,if(t.`tname` is null,'沒安排老師',t.`tname`) 老師

from s left join t on s.`tid`=t.`tid`;

create table job(

jid int unsigned not null auto_increment primary key,

jname varchar(20) not null,

jgender enum('男','女'),

jpjid int

)engine=myisam auto_increment=1 default charset =utf8;

insert into job values(null,'張三','男',null);

insert into job values(null,'李四','男',1);

insert into job values(null,'王五','女',1);

insert into job values(null,'趙六','男',3);

select * from job;

desc job;

-- 查詢每個員工的編號姓名及領導的名字

-- 自連線查詢

select j1.`jid` 編號,j1.`jname` 姓名,j2.`jname` 領導姓名

from job j1,job j2

where j1.jpjid=j2.jid

select j1.`jid` 編號,j1.`jname` 姓名,if(j2.`jname` is null,'總經理',j2.`jname`) 領導姓名

from job j1 left join job j2

on j1.jpjid=j2.jid

MySQL5 連線查詢

連線查詢可以實現多個表的查詢,一次取出多個表中的資料。連線查詢可分為四種 內連線,外連線,交叉連線,自然連線。如果連線查詢的不同表有同名字段,必須加表名或表名的別名來區分。資料庫的預設查詢方式,inner可以省略不寫。從左表取出記錄後,去匹配右表中的記錄,如果滿足條件則記錄保留,否則捨棄。語法 左表...

13 連線查詢

假設 a 表中有3條記錄,b表中有 4 條記錄 那麼,語句select from a,b 會將a,b兩張表的資料交叉拼接起來,形成 3 4 12 條記錄的結果集,此結果集叫做笛卡爾積。ora 00918 未明確定義列 改進辦法 明確列的所屬 select empno,ename,emp.deptno...

004 連線查詢

再大多數的情況下,我們都需要進行連線查詢.笛卡爾積的產生 這個就是多表查詢的的最初結果集,那麼以後我們需要作的就是從結果集中篩選出需要的結果集.篩選的方式不同,導致sql的效率不同.篩選的方式就是加入連線標準.等值連線 select 字段 from 表1 表2 where 連線條件.eg 查詢員工名...