关联关系

创建表时,表与表之间存在的业务关系
外键: 用来建立关系的字段称为外键
有哪些关系:

  1. 一对一:有AB两张表,A表的一条数据对应B表的一条,同时B表的1条也对应A表的一条,称为一对一关系。
  • 如何创建一对一的两张表:在从表(userinfo)中添加外键指向主表(user)的主键。

     create table user(id int primary key auto_increment,username varchar(10),password varchar(10))charset=utf8;create table userinfo(uid int,nick varchar(10),email varchar(20))charset=utf8;insert into user values(null,'libai','123456');insert into userinfo values(1,'刺客','xxx@163.com');
    
  1. 一对多:有AB两张表,A表的一条数据对应B表的多条,同时B表的1条对应A表的一条,称为一对多关系。
  • 如何创建一对多的两张表: 外键添加在多的表中

     create table team(id int primary key auto_increment,name varchar(10))charset=utf8;create table player(id int primary key auto_increment,name varchar(10),tid int)charset=utf8;insert into team values(null,'北京队');insert into player values(null,'林书豪',1),(null,'王老五',1);
    
  1. 多对多:有AB两张表,A表的一条数据对应B表的多条,同时B表的1条对应A表的多条,称为多对多关系。
  • 如何创建多对多的两张表: 创建单独的关系表

    create table student(id int primary key auto_increment,name varchar(10))charset=utf8;create table teacher(id int primary key auto_increment,name varchar(10))charset=utf8;create table t_s(tid int,sid int);insert into student values(1,'小明'),(2,'小红'),(3,'小绿');insert into teacher values(1,'苍老师'),(2,'传奇哥');insert into t_s values(1,1),(1,2),(1,3),(2,1);
    

关联查询

关联查询: 查询存在关联关系的多张表的查询方式

三种关联查询的方式:1. 等值连接 2. 内连接 3. 外连接

  1. 等值连接

      格式:  select * from A,B where 关联关系 and 其它条件 1. 查询工资高于2000的员工的姓名和对应的部门名select e.ename,d.dnamefrom emp e,dept d where e.deptno=d.deptno and e.sal>2000;
    
  2. 内连接

       格式: select * from A join B on 关联关系 where 其它条件1. 查询工资高于2000的员工的姓名和对应的部门名select e.ename,d.* from emp e join dept d on e.deptno=d.deptno where e.sal>2000;- 等值连接和内连接查询到的数据是一样的,都是两张表的交集数据2. 查询每个球队名和对应的球员名select t.name,p.namefrom team t join player pon p.tid=t.id;3. 查询1号部门工资低于3000的员工姓名,工资,部门地址select e.ename,e.sal,d.locfrom emp e join dept d on e.deptno=d.deptnowhere e.deptno=1 and e.sal<3000;
    
  3. 外连接:
    等值连接和内连接查询的是两张表的交集数据,而外连接查询的是一张表的全部数据和另外一张表的交集数据

       格式: select * from A left/right join B on 关联关系 where 条件;insert into emp (empno,ename,sal) values(100,'灭霸',10000);1. 查询所有员工姓名和对应的部门名select e.ename,d.dnamefrom emp e left  join dept don e.deptno=d.deptno;2. 查询所有部门名称,地址和对应的员工姓名,工资select d.dname,d.loc,e.ename,e.salfrom emp e right join dept don e.deptno=d.deptno;
    

关联查询总结:

如果查询的是多张表的数据,则使用关联查询, 查询的是两张表的交集数据使用等值连接或内连接(推荐),如果查询的是一张表的全部和另外一张表的交集数据则使用外连接.

各个关键字的顺序

select * from A join B on 关联关系 where普通字段条件 group by 字段名 having聚合函数条件 order by 字段名 limit 跳过条数,请求条数;

JDBC

什么是JDBC

​ JavaDataBaseConnectivity:Java数据库连接,是Sun公司提供的一套和数据库进行连接的API(Application Program Interface应用程序编程接口), 作用:通过Java语言和数据库软件进行连接

为什么使用JDBC

在工作中Java程序员有可能连接多种不同的数据库,为了避免Java程序员每一种数据库都学习一套新的方法,Sun公司定了一套方法的声明(JDBC),把方法名固定,不管连接的是什么数据库方法名是一样的,各个数据库厂商根据方法名写方法的实现类(驱动),这样Java程序员只需要掌握JDBC中方法的调用,即可访问任何数据库,而且安装JDBC规范所写的代码就算是换数据库代码一行都不用改.

如何使用JDBC

  1. 创建Maven工程

  2. 在pom.xml文件中添加以下jar包的坐标信息

    mysql mysql-connector-java 5.1.6

  3. 创建Demo01.java 在main方法中写以下代码

     //1. 注册驱动:告诉编译器使用的是什么数据库  异常抛出//Class.forName("com.mysql.jdbc.Driver");//2. 获取数据库连接 导包:java.sqlConnection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/newdb3?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true","root", "root");System.out.println(conn);//3. 创建执行SQL语句的对象Statement s = conn.createStatement();//4. 执行SQLString sql = "create table jdbct1(id int,name varchar(10))";s.execute(sql); //5. 关闭资源     conn.close();System.out.println("执行完成!");

执行SQL语句的对象Statement

  • execute(sql) 可以执行任意SQL语句,但是推荐执行数据库和表相关的SQL(DDL数据定义语言)
  • int row = executeUpdate(sql); 此方法执行增insert删delete改update的SQL ,方法的返回值为生效的行数
  • ResultSet rs = executeQuery(sql); 此方法执行查询的SQL语句,返回值是结果集对象,里面装着查询回来的结果.

数据库学习day_03:关联关系/ 关联查询/ JDBC相关推荐

  1. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. es父子结构查询_elasticsearch 学习之父子关联查询 parent/child

    parent-child 关系 关联关系,可以为两个完全分开的文档,可以将一种文档类型以一对多的关系关联到另一个上 优点: 1.parent文档的更新不需要重新为子文档重建索引 2.对子文档进行添加, ...

  3. resultset mysql_MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ [正文] 一.ResultSet接口的介绍: 对数据库的查询操作,一般需要返回查询结果,在程序中,JDBC为我们提供了ResultSet接口来专门处理查 ...

  4. 数据库学习(MySQL):JDBC的简单增删改查实现

    本文为原创,转载请注明出处: https://www.cnblogs.com/Tom-shushu/p/9171896.html 这里我们先在数据库建立一个userinfo表: CREATE TABL ...

  5. 【SQLite数据库学习】 连表查询

    目录 一:数据分析 二:数据设计 三:数据库可视化操作 四:数据库命令行操作 一:数据分析 如下图,以视频播放器的ER图来进行数据分析 二:数据设计 新建表 表中添加数据 命令操作 如下 CREATE ...

  6. Mysql 数据库学习记录之空值查询

    关键字:NULL 本文是关于mysql的空值查询,即某一列为空值,即值为NULL. 语法: SELECT        *        FROM        数据库表名      WHERE   ...

  7. 数据库学习(十)— 查询演练

    查询演练的数据表以及相应数据创建  drop table if exists goods; create table goods (id int unsigned primary key auto_i ...

  8. Oracle/MySQL数据库的表间关联查询_多表关联查询的SQL语句详解

    文章目录 内连接 inner join 示例 外连接 outer join left outer join 左外连接 示例 right outer join 右外连接 示例 full outer jo ...

  9. MySQL中的关联查询

    MySQL中的关联查询 (1)Question:关联是什么 关联是SQL语言中使用SELECT操作表的一种操作机制,用来联系两个或者多个表.SELECT是SQL中的查询语句,用于查询数据库中的数据.将 ...

最新文章

  1. 怎么样让自己更加从容的面对生活
  2. 知识图谱实体链接:一份“由浅入深”的综述
  3. JPA规范:一对多、一对一、多对多的双向关联与级联操作以及JPA联合主键
  4. Cocopods的升级错误解决
  5. 用maven建立一个工程2
  6. Bootstrap3 插件的原理
  7. 009.共享目录下VS编写的程序在linux下打开出现中文乱码
  8. matlab学习笔记(4)
  9. vue-quasar-admin 一个包含通用权限控制的后台管理系统
  10. 基于jedis.setnx(key, value)实现分布式锁
  11. 一、瞰景Smart3D软件介绍
  12. 怎样用java抽签小程序,可以作弊的抽签小程序,急求java抽签小程序
  13. 傲梅分区助手克隆Linux硬盘,傲梅分区助手如何复制磁盘?分区助手克隆磁盘的具体教程...
  14. 电脑系统pe去广告及恶意软件安装
  15. pop3邮箱怎么设置收发服务器端口,pop3设置(如何设置邮箱服务器?IMAP、POP3有何区别?)...
  16. 使用GLAD加载OpenGL的库
  17. android 单词本代码,android 背单词app源码(MVP架构)
  18. 2022年全球与中国磁阻随机存储器(MRAM)市场现状及未来发展趋势
  19. 企业微信开发之获取media_id的值
  20. C++ 读取TXT文件中的数据 每一行空格符相隔的数据单独取出

热门文章

  1. 关于 OneAPM Cloud Test DNS 监控的几个重要问题
  2. 去除警告,打电话,发信息,应用程序之间跳转,打印沙盒路径,字符串名字转换方法,包装导航控制器等的代码...
  3. bzoj 1877: [SDOI2009]晨跑 (网络流)
  4. 十天学Linux内核之第二天---进程
  5. android用于打开各种文件的intent
  6. IIS6.0上某些文件类型不能下载
  7. 初识WAP开发时..
  8. [异常处理]class kafka.common.UnknownTopicOrPartitionException (kafka.server.ReplicaFetcherThread)
  9. 解决使用mybatis分页插件PageHelper的一个报错问题
  10. Spark SQL中出现 CROSS JOIN 问题解决