MySql_Day4—去重distinct—连接查询(内、外连接、多张表连接)
MySql_Day4—去重distinct—连接查询(内、外连接、多张表连接)
1.distinct关键字去除重复记录——distinct只能出现在所有字段的最前面
select distinct job from emp;
select distinct deptno,job from emp;
统计岗位的数量?
select count(distinct job) from emp;
2.连接查询
2.1.连接查询的分类
SQL92:一些老的DBA可能还在使用这种语法。DBA:DataBase Administrator,数据库管理员
SQL92语法:
……
A,B
where
……
SQL99:比较新的语法
SQL99语法:
……
A
join
B
on
连接条件
where
……
区分内外连接:
——>join前,有无left、right。
内外连接的区别:
外连接:在2张表匹配不上时,会填充NULL
内连接:在2张表匹配不上时,就不显示了
关于表的别名:
select e.ename,d.dname from emp e,dept d;
表的别名有什么好处?
1、执行效率高。
2、可读性好。
2.2.内连接之等值连接
找出每个员工,显示员工名和部门名——emp与dept表联动
SQL99语法:select e.ename , d.dname from emp e join dept d on e.deptno=d.deptno;
SQL92语法:select e.ename , d.dname from emp e join dept d where e.deptno=d.deptno;
2.3.内连接之非等值连接
特点是:连接条件中的关系是非等量关系。
找出每个员工的工资等级,要求显示员工名、工资、工资等级
select e.ename,e.sal,s.grade from emp e join salgrade s on (e.sal>=s.losal and e.sal<=hisal);
或 select e.ename,e.sal,s.grade from emp e join salgrade s on (e.sal between s.losal and hisal);
2.4.自连接——必须借用“别名”
特点是:一张表看做两张表。自己连接自己。
找出每个员工的上级领导,要求显示员工名和对应的领导名。
select a.ename as '员工',b.ename as '领导' from emp a (inner可以省略) join emp b on a.mgr=b.empno;
2.5.外连接——分主、副表
外连接最重要的特点是:主表的数据无条件的全部查询出来。
找出每个员工的上级领导,要求显示员工名和对应的领导名。
select a.ename as '员工',b.ename as '领导' from emp a left (outer可以省略) join emp b on a.mgr=b.empno;
找出哪个部门没有员工?
select d.* from emp e right join dept d on e.deptno=d.deptno where e.empno is null;
2.6.——3张表的连接
A先和B连接,再和C连接
....
A
join
B
join
C
on
...
找出每一个员工的部门名称、工资等级、以及上级领导。
select
e.ename,d.dname,s.grade,e2.ename
from
emp e
join
dept d
on
e.deptno=d.deptno//匹配部门名称
join
salgrade s
on
e.sal between s.losal and s.hisal //匹配工资等级
left join
emp e2
on
e.mgr=e2.empno;//匹配领导名
MySql_Day4—去重distinct—连接查询(内、外连接、多张表连接)相关教程
MySQL5.5安装出现CMake错误找不到CMakelists.txt原因
MySQL5.5安装出现CMake错误找不到CMakelists.txt原因 为什么80%的码农都做不了架构师? 今天虚拟机上测试安装 CentOS6.3 + PHP5.4.8 + MySQL5.5.28,结果捣鼓了半天 MySQL都没装上,老是CMake目录下找不到那个 lists 文件,郁闷的不行,最后发现问题所在,总
MySQL 基础
MySQL 基础 事务就是满足 ACID 特性的一组操作,可以用 commit 提交一个事务,也可以用 rollback 回滚事务。 AUTOCOMMIT MySQL 默认 自动提交模式。也就是说,如果不显式使用 START TRANSACTION 语句来开始一个事务,那么每个查询都会被当做一个事务自动提交
Mysql之replication初探
Mysql之replication初探 MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场合。与之对应的另一个技术是同步的MySQL Cluster,但因为比较复杂,使用者较少。 下图是MySQL官方给出
How-to: 使用 highcharts + MySQL 构建自己的简易网站监控系统
How-to: 使用 highcharts + MySQL 构建自己的简易网站监控系统 出自我的个人博客: http://www.suzf.net/thread-1001-345.html Highcharts 是一个用纯JavaScript编写的一个图表库。 Highcharts 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表 H
mysql主键非空约束怎么设置
mysql中可以通过在“CREATE TABLE”语句中,使用“字段名 数据类型 PRIMARY KEY [默认值]”语句来设置主键约束,使用“字段名 数据类型 NOT NULL”语句来设置非空约束。 mysql主键约束 主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频
腾讯T3大牛总结的500页MySQL实战笔记意外爆火P8看了直呼内行
腾讯T3大牛总结的500页MySQL实战笔记意外爆火,P8看了直呼内行 前几天逛知乎的时候看到一个话题: MySQL没前途了吗? 最近几年,似乎总有一种声音在说,MySQL可能不太行了,原因无非是这么几条,MySQL功能不如PG强大,原生没有分库分表不如TIDB,OLAP性能差
MySQL学习第7天—JDBC
MySQL学习第7天—JDBC 文章目录 一、JDBC 二、第一个JDBC程序 1. 创建测试数据库 2. 导入数据库驱动 3. JDBC程序 4. 步骤总结 1、加载驱动 2、连接数据库 DriverManager 3、获得执行SQL的对象 Statement 4、获得返回的结果集 5、释放连接 5. 总结 三、stateme
MySQL5.7安装文档
MySQL5.7安装文档 步骤一:软件的卸载准备 学习网络编程时,TCP/IP协议程序有服务器端和客户端。mysql这个数据库管理软件是使用TCP/IP协议。我们现在要卸载的是mysql的服务器端,它没有界面。 【计算】–右键–【管理】–【服务】–【mysql的服务】–【停止】