| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 九万五千一的MySQL续集2 -> 正文阅读 |
|
[大数据]九万五千一的MySQL续集2 |
关于查询结果的去重在需要去除的句段中加distinct select distinct job from emp;//distinct关键字去除重复记录 distinct只能加在所有字段的最前面 连接查询 在实际开发中,一般都不是从单表中查询数据,一般是多张表联合查询取出最终结果。 一般是一个业务都会对应多张表,比如学生和班级就得设置两张表 如果储存到一张表当中,就会导致数据的冗杂 连接查询的分类 包括 sql92,sql99(比较新的语法) 根据表的连接方式来划分,包括: 内连接: 等值连接 非等值连接 自连接 外连接: 左连接 右连接 连接查询原理和笛卡尔积原理 select ename,dname from emp,dept; 笛卡尔积现象:当两张表进行连接查询,没有任何条件限制,最终查询结果是两张记录条数结果的成绩 关于表的别名: select e.ename,d.dname from emp emp e,dept d; 执行效率高,可读性好 避免笛卡尔积现象,加条件进行过滤,不会节省效率,但是会减少条数的显示 这里怎么写呢 select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno;//以后不用; 内连接之等值连接 案例:查询每个员工的部门名称,要求显示员工名和部门名 sql99: select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno; 语法: 。。。 A join B on 连接条件 where 非等值连接:连接条件中的关系是非等量关系。 找出每个员工的工资等级,显示员工名,工资,工资等级 select e.ename,e.sal,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal; 自链接:最大的特点是:一张表看作两张表,自己连接自己 找出每个员工的上级领导,要求显示员工名和对应的领导名、 把一张表中,员工和领导都能看成公司的员工,所有就可以分成员工表a和领导表b 员工的编号=领导的编号 select a.ename as '员工名' ,b.ename as '领导名' from emp a inner join emp b on a.mgr=b.empno; 外连接: 假设a和b表进行连接,使用外连接的话,ab两张表中有一张表是主表,一张表是副表,主要查询 主表当中的数据,捎带着查询副表,当副表中的数据没有和主表中的数据匹配上,副表自动模拟出null与之匹配 外连接的分类: 左连接:左边的表是主表 右连接:右边的表是主表 左连接和右连接可以互换 案例:找出每个员工的上级领导 emp a 员工表 emp b 领导表 外连接:左 select a.ename '员工',b.ename '领导' from emp a left outer join(左外) emp b on a.mgr=b.empno; 右连接 select a.ename '员工',b.ename '领导' from emp a right outer join(左外) emp b on a.mgr=b.empno; 三张表怎么连接查询 先把a,b进行连接,连接之后a在和c连接 select a.ename '员工',el.ename '领导',s.grade,d.dname from emp a join dept d on e.deptno=d.deptno join salgrade s on e.sal between s.losal and s.hisal left join emp el on e.mgr=el,empno; 子查询 子查询select语句中嵌套select语句,被嵌套的select语句是子查询 select 。。。(select) from 。。。(select) where 。。。(select) where子句中的查询 select *from emp where sal>avg(sal);//错误的写法,where后面不能直接使用分组函数 第一步:找出平均薪资 select avg(sal) from emp; 第二部 :where过滤 select * from emp where sal>2073.214; from后面嵌套子查询 案例:找出每个部门平均薪水的薪资等级 第一步,找出每个部门平均薪水 select deptno ,avg(sal) from emp group by deptno; 把查询出来的表格当作一个新表t 让t表和salgrade表连接 select t.*,s.grade from (select deptno ,avg(sal) from emp group by deptno) t join salgrade s on t.avgsal between s.losal and s.hissal; union(可以将查询结果相加) 案例:找出工作岗位是salesman和manager的员工 第一种:select enamel,job from emp where job=‘’manager‘ or job=’salesman‘; 第二种:select ename ,job from emp where job in(’manager‘,’salesman‘); 第三种union: 将两张不相干的表中的数据拼接在一起显示 select ename from emp union select dname from dept; |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 13:09:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |