MySQL 从入门到入魔 (03)
子查询(嵌套查询)
查询工资高于 1 号部门平均工资的员工信息
把上面两条合并成一条
查询拿最高工资的员工信息
查询工资高于 2 号部门最低工资的员工信息
查询和孙悟空相同工作的其他员工信息
查询拿最低工资员工的同事们的信息(同事指同一部门的员工)
查询白骨精的部门信息(需要用到 dept 部门表)
查询所有员工的部门信息(部门只有 1,2,3 但是部门表里面有 1,2,3,4 只根据员工表中出现的部门编号去查询部门信息)
先查询员工表中出现的部门编号
关联关系
创建表时,表与表之间存在的业务关系称为关联关系
外键: 用于建立关系的字段称为外键
有哪些关系:
一对一:有 AB 两张表,A 表中 1 条数据对应 B 表中的 1 条数据,同时 B 表中 1 条数据也对应 A 表中的一条数据.称为一对一关系
应用场景: 将原属于一张表的数据拆分成两张表进行数据保存时,使用 1 对 1 的关系.
如何建立一对一的关系? (将一张表拆成两张表(主表和从表))在从表中添加外键指向主表的主键
一对多:有 AB 两张表,A 表中 1 条数据对应 B 表中的多条数据,同时 B 表中 1 条数据对应 A 表中的一条数据.称为一对多关系
应用场景: 比如员工表和部门表的关系
如何建立关系?一对多关系中存在两张表,一个表是 1(部门表),一个表是多(员工表),在多的表中添加外键指向另外一张表的主键
多对多:有 AB 两张表,A 表中 1 条数据对应 B 表中的多条数据,同时 B 表中 1 条数据也对应 A 表中的多条数据.称为多对多关系
应用场景: 比如老师表和学生表
如何建立关系?需要通过一个中间关系表建立关系,在关系表中添加两个外键分别指向两个主表的主键
关联查询
关联查询是查询存在关联关系多张表的查询方式
三种关联查询的方式: 1. 等值连接 2.内连接 3.外连接
关联查询必须写关联关系,如果不写会得到两个表结果的乘积,这个乘积称为笛卡尔积,笛卡尔积是一个错误的查询结果,由于工作中数据量巨大笛卡尔积有可能会导致内存溢出.
等值连接
格式: select 字段信息 from A,B where 关联关系 and 其它条件
举例:
查询工资高于 2000 的员工的姓名,工资和对应的部门名
内连接
格式: select 字段信息 from A join B on 关联关系 where 其它条件
举例:
查询工资高于 2000 的员工的姓名,工资和对应的部门名
等值连接和内连接查询到的都是两张表的交集数据,但是内连接代码结构更直观推荐使用
外连接
外连接查询的是一张表的全部和另外一张表的交集数据
格式: select 字段信息 from A left/right join B on 关联关系 where 其它条件
举例:
查询所有部门名和对应的员工姓名
查询所有员工的姓名和部门所在地
由于员工表里面全部是交集数据所以先插入一条数据
JDBC
JavaDataBaseConnectivity Java 数据库连接,JDBC 是 sun 公司提供的一套通过 Java 语言和数据库进行连接的相关 API(Application Program Interface)
为什么使用 JDBC: 在工作中 Java 语言有可能连接多种不同的数据库,为了避免 Java 程序员每一种数据库都学习套新的方法,Sun 公司定了一套方法的声明(JDBC),各个数据库厂商根据此接口写实现类(驱动),这样 Java 程序员只需要学习 JDBC 中方法的调用即可访问任何数据库,如果严格按照 JDBC 标准所写的代码就算将来换数据库,代码不需要改变.
如何使用 JDBC
创建 maven 工程
在 pom.xml 中添加以下 mysql 的相关坐标
创建 Demo01.java 添加以下代码
Statement 执行 SQL 语句的对象
execute(sql) 用于执行数据库相关和表相关的操作
executeUpdate(sql) 用于执行增删改
executeQuery(sql) 用于执行查询
版权声明: 本文为 InfoQ 作者【海拥(haiyong.site)】的原创文章。
原文链接:【http://xie.infoq.cn/article/8df54342a879d5e2721c905df】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论