1.数据库

1.1 定义

数据库是按照数据结构来组合、存储和管理数据的软件。

1.2 数据库模型

数据库有层次模型、网状模型、关系模型三种模型。

2 关系数据库

关系数据库是建立在关系模型上的数据库,也是应用最广泛的主流数据库。
主流的关系数据库:

  • 商业:Oracle,SQL Server,DB2,Sybase
  • 开源:MySQL,PostgreSQL
  • 桌面:Access

3 关系模型

关系数据库所使用的模式是关系模型。
一个关系表就是一个二维的表格,每一行为一条记录。
如班级信息用classes表来存储,学生信息用students表来存储,每一条记录都要通过唯一的id(主键)来表示唯一性。
主键只在一个表中保证唯一就可以了。
表和表之间用关系模型关联起来。

3.1 一对多


一个班包含多个学生。students通过class_id(对应classes的id)查找班级。
查找一班的学生,获取class的id为1,获取students表中class_id为1的学生即可。
查找小明的班级,获取其class_id,再去classes表中查找id为1的记录。
students中class_id为外键:作用是关联其他表的主键,实现一对多的关系。

3.2 一对一


一对一的关系也是由外键实现的。classes表增加teacher_id的字段。要查找二班班主任,就通过teacher_id找到teachers表中的记录。

3.3 多对多


一个学生有多门课程的成绩,而一门课程有多个学生的成绩。学生表students和课程表courses就是多对多的关系。多对多是2个一对多的关系组合起来的。在成绩表中有外键student_id关联到学生表,外键course_id关联到课程表
既可以查询某个学生全部课程的成绩,也可以查询某个课程全部学生的成绩,或某个学生某门课程的成绩

4 总结:

关系数据库是目前使用最广泛的数据库

  • 建立在关系模型上
  • 基本结构是表
  • 主键用于唯一标识记录
  • 外间用于引用其他表的主键
  • 通过外键关联实现一对多/一对一/多对多的关系

5安装mysql

廖雪峰Java15JDBC编程-1关系数据库基础-1关系数据库简介的更多相关文章

  1. 廖雪峰Java15JDBC编程-2SQL入门-1SQL介绍

    1.SQL:结构化查询语言 Structured Query Language 针对关系数据库设计 各种数据库基本一致 允许用户通过SQL查询数据而不关心数据库底层存储结构 1.1 SQL使用: 可以 ...

  2. 廖雪峰Java15JDBC编程-3JDBC接口-5JDBC连接池

    1. JDBC连接池 1.1 JDBC连接池简介 线程池可以复用一个线程,这样大量的小任务通过线程池的线程执行,就可以避免反复创建线程带来的开销. 同样JDBC可以复用一个JDBC连接 JDBC的连接 ...

  3. 廖雪峰Java15JDBC编程-3JDBC接口-4JDBC事务

    1 数据库事务:Transaction 1.1 定义 若干SQL语句构成的一个操作序列 要么全部执行成功 要么全部执行不成功 1.2 数据库事务具有ACID特性: Atomicity:原子性 一个事务 ...

  4. 廖雪峰Java15JDBC编程-3JDBC接口-3JDBC更新

    使用update语句的时候,需要通过JDBC实现update语句的执行,这个时候仍然通过PreparedStatement对象来使用,直接传入update语句,然后通过setObject传入占位符的值 ...

  5. 廖雪峰Java15JDBC编程-3JDBC接口-2JDBC查询

    我们可以使用JDBC查询来执行select语句. 1. Statement try(Connection conn = DriverManager.getConnection(JDBC_URL, JD ...

  6. 廖雪峰Java15JDBC编程-3JDBC接口-1JDBC简介

    JDBC:Java DataBase Connectivity Java程序访问数据库的标准接口 使用Java程序访问数据库的时候,Java代码并不是直接通过TCP连接去访问数据库,而是通过JDBC接 ...

  7. 廖雪峰Java15JDBC编程-2SQL入门-2insert/select/update/delete

    1. INSERT用于向数据库的表中插入1条记录 insert into 表名 (字段1,字段2,...) values (数据1,数据2,数据3...) 示例 -- 如果表存在,就删除 drop t ...

  8. 廖雪峰Java6IO编程-1IO基础-1IO简介

    1.IO简介 IO是指Input/Output,即输入和输出: Input指从外部读取数据到内存,例如从磁盘读取,从网络读取. * 为什么要把数据读到内存才能处理这些数据呢? * 因为代码是在内存中运 ...

  9. 廖雪峰JavaScript学习笔记(基础及数据类型、变量)

    先睹为快 alert('我要学JavaScript!'); Run: 基本语法: 1.每个语句以;结束,不强制 2.语句块用{...} 3.//单行注释,/*...*/ 多行注释 数据类型: 1.不区 ...

随机推荐

  1. C++实现的B树

    参考资料:按第一个参考资料构建,代码基本上来自于第二个参考资料 https://www.cnblogs.com/guohai-stronger/p/9225057.html https://www.c ...

  2. 隐藏tomcat页面异常显示的版本信息

    1.正常情况下,tomcat遇到404或500会返回版本信息: 2.有时我们不需要暴露版本信息,像这样: 3.只需要修改apache-tomcat-7.0.59的lib目录下的catalina.jar ...

  3. Caused by: java.sql.SQLSyntaxErrorException: ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 BINARY

    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvo ...

  4. AtCoder ABC 128E Roadwork

    题目链接:https://atcoder.jp/contests/abc128/tasks/abc128_e 题目大意 在一条路上(这条路可以看做坐标轴 x 轴从 0 开始方向为正无穷方向的射线),有 ...

  5. Python生成Windows可执行exe文件

    环境 python3.6.5 pyinstaller3.5 windows 10 下载地址 python:https://www.python.org/ftp/python/3.6.5/python- ...

  6. 在Ubuntu中安装MySQL (转载)

    MySQL在Linux Ubuntu中安装 本文使用的Linux是Ubuntu 12.04.2 LTS 64bit的系统,安装MySQL数据库软件包可以通过apt-get实现. 在Linux Ubun ...

  7. Spring源码分析(一):从哪里开始看spring源码(系列文章基于Spring5.0)

    概述 对于大多数第一次看spring源码的人来说,都会感觉不知从哪开始看起,因为spring项目源码由多个子项目组成,如spring-beans,spring-context,spring-core, ...

  8. 22-Ubuntu-文件和目录命令-移动文件和目录-mv

    mv 可以用来移动文件或目录,也可以给文件或目录重命名. 选项 含义 -i 覆盖文件前提示 1.移动文件和目录 1-1移动文件 例: 将当前目录下的123.txt文件移动到~/桌面/b/e目录下 mv ...

  9. Android代号、版本及API级别之间的对应关系

    参考链接:Codenames, Tags, and Build Numbers  |  Android Open Source Project

  10. 从虚拟地址,到物理地址(开PAE)

    学了好久好久,但是好久好久都没有用过,今天突然要用,都快忘了怎么玩了, 这里记录一下吧. 如何检测PAE r cr4 第5位如果是1,则开了PAE,否则没开 切入目标进程 查找一个自己关注的字符串s ...