MySQL中sql查询语句-------外键查询
⼀.为了便于说明,先创建两张相关联的表
DROP TABLE IF EXISTS dept;
CREATE TABLE dept(
deptno int(11) NOT NULL,
2022html标签属性大全
dname varchar(20) default NULL,
loc varchar(20) default NULL,
PRIMARY KEY (deptno)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS emp;
CREATE TABLE emp(
异步通信传输单位
empno int(11) NOT NULL,
ename varchar(20) default NULL,
job varchar(20) default NULL,
mgr int(11) default NULL,
hibernate varchar(20) default NULL,
sal float default NULL,
comm float default NULL,
deptno int(11) default NULL,
PRIMARY KEY (empno)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
⼆. 给创建的两个表添加内容
INSERT INTO dept VALUES ('1', '销售部', '武汉');
INSERT INTO dept VALUES ('2', '研发部', '北京');
INSERT INTO dept VALUES ('3', '教学部', '上海');
INSERT INTO dept VALUES ('4', '市场部', '天津');
INSERT INTO emp VALUES ('101', '张三', '销售', '102', '2018-1-1', '5000', '10000', '1');
mysql语句多表查询INSERT INTO emp VALUES ('102', '张4', '销售', '112', '2018-1-1', '5400', '10400', '1');
INSERT INTO emp VALUES ('103', '张2', '销售', '102', '2018-1-1', '5500', '10500', '1');
INSERT INTO emp VALUES ('104', '张1', '市场', '112', '2018-1-1', '5600', '70000', '4');
INSERT INTO emp VALUES ('105', '张5', '市场', '104', '2018-1-1', '5700', '10200', '4');
INSERT INTO emp VALUES ('106', '张6', '市场', '104', '2018-1-1', '5800', '60000', '4');
INSERT INTO emp VALUES ('107', '张7', '市场', '104', '2018-1-1', '6000', '10000', '4');
INSERT INTO emp VALUES ('108', '张8', '教学', '112', '2018-1-1', '5650', '10000', '3');
INSERT INTO emp VALUES ('109', '张9', '教学', '108', '2018-1-1', '4000', '50000', '3');
INSERT INTO emp VALUES ('110', '张99', '研发', '112', '2018-1-1', '3000', '40000', '2');
INSERT INTO emp VALUES ('111', '张88', '研发', '110', '2018-1-1', '2000', '30000', '2');
INSERT INTO emp VALUES ('112', '张总', '研发', null, '2018-1-1', '1000', '20000', '2');
vagrant歌曲中文三.联合查询
1.查询的内容涉及到那⼏个表,就在from后⾯写上涉及到的所有表的名称
select ename,dname from emp,dept
这样查询的结果是两张表的数据相乘,结果是⼀个笛卡尔积,那么有没有⼀个限制条件可以将我们需要的内容筛选出来呢?
2.等值连接
仔细观察,其实两张表相关联的部分在于都存在⼀个字段deptno,表emp中每⼀个主键对应⼀个外键deptno,这个deptno⼜是表dept中的主键,所以在后⾯加上where条件限制,就可以筛选出我们需要的数据,后⾯可以and加上多个条件进⼀步筛选查询
select ename,dname from emp,dept
where emp.deptno = dept.deptno;
3.内联 inner join 其中inner 可以省略
select ename,dname from emp
inner join dept
on dept.deptno = emp.deptno;
4.取别名 可以简化代码长度当
其中需要注意的⼀点是: 当查询的内容两张表都存在时,需要指明是那⼀张表的字段
select e.deptno,ename,dname from emp as e
powershell pythoninner join dept
on dept.deptno = e.deptno;
5.⼦查询 最符合我们思维逻辑的查询,类似与java中的嵌套
1).查询张三所在的部门名称
select dname from dept where deptno=
(select deptno from emp where ename = '张三');
2).查询⼯资⾼于3000的员⼯的部门名称
select dname from dept where deptno in
(select deptno from emp where sal>3000);
w3school离线手册下载教程最后只得注意的地⽅,当要查询的条件是null的时候,需要⽤到 is null,或者 is not null,不要⽤ =null,=”等,其中null值可”不相等

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。