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

关联关系

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

  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.dname
    
         from 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.name
    
          from team t join player p
    
          on p.tid=t.id;
    
       3. 查询1号部门工资低于3000的员工姓名,工资,部门地址
       
          select e.ename,e.sal,d.loc
       
          from emp e join dept d on e.deptno=d.deptno
       
          where 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.dname
    
          from emp e left  join dept d
    
          on e.deptno=d.deptno;
    
       2. 查询所有部门名称,地址和对应的员工姓名,工资
    
          select d.dname,d.loc,e.ename,e.sal
    
          from emp e right join dept d
    
          on 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.sql
       		Connection 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. 执行SQL
       		String 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语句,返回值是结果集对象,里面装着查询回来的结果.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值