数据库连接JOIN

1,连接类型及差异

INNER JOIN:结果集只有配对成功的数据,即不包含左表或右表为空的情况;

OUTER JOIN:

LEFT JOIN:结果包含左表的所有记录,右表不能成功匹配的显示NULL

RIGHT JOIN:结果包含表右的所有记录,左表不能成功匹配的显示NULL

FULL OUTER JOIN:这种连接会合并LEFT JOIN 和 RIGHT JOIN的结果,不论是否匹配,都会放到结果集中。

2,反规范化

反规范化是一种数据库优化技术,在一个或多个表中加入冗余数据。在传统的规范化数据库中,力求冗余最小,比如,course和teacher表中,每个course对应,允许yi个teacherID,但不存储teacherName,如果要获取所有course的teacherName,需要连接两个表。如果表很大的话,需要花费很长时间。因此,在反规范时允许一定的冗余。,

反规范化的优点:连接操作少,检索更快;需要查找的表少,检索简单;缺点:更新和插入开销大;更新和插入的代码更复杂;数据可能不一致;冗余意味着更大的存储空间

时间: 2024-08-07 18:02:00

数据库连接JOIN的相关文章

实现一个微型数据库

自己写一个简单的数据库,原理大概有下面几点: 一.数据以文本形式保存 将所要保存的数据写入文本文件,这个文本文件就是数据库. 为了方便读取,数据必须分为记录,每一条记录的长度规定为等长. 举例:假定每条记录的长度是800字节,那么第5条记录的開始位置就在3200字节. 大多数的时候我们不知道某一条记录在第几个位置,仅仅知道主键的值.这时为了读取数据,能够一条条比对记录.可是这样做的效率太低.实际应用中,数据库往往採用B树格式存储数据. 二.关于B树 要理解B树先须要理解二叉查找树 说二叉查找树是

ThreadLocal,LinkedBlockingQueue,线程池 获取数据库连接2改进

package com.ctl.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Random; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import com.ctl.util.ConfigU

C3P0属性设置和数据库连接池的获取

在C3p0构建时,有驱动相关信息及数据库连接池相关的属性设置,及连接的获取,今天我们先来看一下,驱动相关信息及数据库连接池相关的属性设置,在连接的获取. 从下面几句开始, Java代码   cpDSource = new ComboPooledDataSource(); //设置DriverManagerDataSource驱动相关信息 cpDSource.setDriverClass(props.getProperty("driver")); cpDSource.setJdbcUrl

mybatis性能优化之降低数据库连接

做性能优化的最重要的功能就是降低数据库的交互.非常多程序猿一般在开发的时候仅仅考虑简单的实现功能,无论业务简单复杂,仅仅要实现即可. mybatis有个重要的功能就是考虑在联合查询时技巧: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.

java多线程同步以及线程间通信详解&amp;消费者生产者模式&amp;死锁&amp;Thread.join()(多线程编程之二)

本篇我们将讨论以下知识点: 1.线程同步问题的产生 什么是线程同步问题,我们先来看一段卖票系统的代码,然后再分析这个问题: [java] view plain copy print? package com.zejian.test; /** * @author zejian * @time 2016年3月12日 下午2:55:42 * @decrition 模拟卖票线程 */ public class Ticket implements Runnable { //当前拥有的票数 private 

Django模型开发 --python数据库连接

在Django中,视图负责处理一些业务逻辑,然后返回响应结果.在当代Web应用中,业务逻辑经常牵涉到与数据库的交互,在后台连接数据库服务器,从中取出一些数据,然后在Web页面用漂亮的格式展示这些数据.这个网站也可能会向访问者提供修改数据库数据的方法. 在这一篇博文中,我们将以MySQL数据库为例,先看看不使用Django模型的数据库查询方法,然后开始学习Django的模型. 1. 不使用模型的数据库查询方法 假如我们不采用Django的模型,如何从数据库中获取数据呢?通常的做法就是在视图(Vie

配置数据库连接及数据库操作

主外键说明: 主键:是表中一行的一个唯一标识,通过主键我们可以快速的查询一条数据! 主键特性:唯一(unique),not null,可以被引用! 表的关联: 1.一对一 CREATE TABLE `husband` ( `id` INT(11) PRIMARY KEY AUTO_INCREMENT, `hname` VARCHAR(50) ) DROP TABLE wife;  SELECT * FROM wife CREATE TABLE `wife` ( `id` INT(11) PRIM

Hibernate5-多对1(n:1)-fetch=&quot;join&quot;

1.创建项目,项目名称hibernatedemo26,目录结构如图所示 2.在项目中创建lib目录存储jar文件,目录结构如图所示 3.在src目录中创建实体类Forum,包名(com.mycompany.demo.bean),如图所示 4.实体类Forum的内容如下 package com.mycompany.demo.bean; import java.util.Set; public class Forum { private int fid; private String name; p

厚溥教育1718部数据库连接作业答案,分装一个操作数据库而无需写SQL语句的函数

<?php header("Content-type:text/html;charset=utf8"); //PHP操作数据库的函数 function phpsql($dbconfig,$type,$field='',$data=array(),$condition=array(),$join=array()){ //判断存不存在数据库连接主机 if(!isset($dbconfig['host'])){ return "数据库连接主机不存在"; } //判断