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. java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

    :: - [localhost-startStop-] INFO - Root WebApplicationContext: initialization started -- :: - [local ...

  2. BackgroundWorker study

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. CodeForces 1152F1 Neko Rules the Catniverse (Small Version)

    题目链接:http://codeforces.com/problemset/problem/1152/F1 题目大意 有 n 个星球,给定限制 m,从 x 星球走到 y 星球的条件是,$1 \leq ...

  4. assignment of day nine

    一.简述定义函数的三种方式 1.空函数:用于占位 2.有参函数:有参数的函数 3.无参函数:没有参数的函数 二.简述函数的返回值 1.如果函数没有返回值,默认返回None 2.函数可以通过return ...

  5. 一点响应式Web设计与实现思路

    摘要: 是否还在为你的应用程序适配PC端,移动端,平板而苦苦思索呢,是否在寻找如何一套代码适配多终端方式呢,是否希望快速上手实现你的跨终端应用程序呢,是的话,那就看过来吧,本文阐述响应式UI设计相关理 ...

  6. 【转】Windows(server2008)下使用VisualSVN Server搭建SVN服务器

    参考文献 1.Windows下使用VisualSVN Server搭建SVN服务器(百度经验)  挺好就是没有配图已验证可用 2.在Windows Server 2008上部署SVN代码管理器 把第二 ...

  7. jquery选择器中中>和空格的区别

    空格:$('parent childchild')表示获取parent下的所有的childchild节点 大于号:$('parent > childchild')表示获取parent下的所有下一 ...

  8. Xshell 排版错乱问题

  9. Ubuntu-WPS无法输入中文

    WPS无法输入中文 原因:环境变量未正确设置 $ vi /usr/bin/wps,添加以下内容: #!/bin/bash export XMODIFIERS="@im=fcitx" ...

  10. SpringCloud及其五大常用组件之Eureka和Zuul

    1.springcloud简介 SpringCloud是Spring旗下的项目之一,它是微服务架构的一种实现方式. 官网地址:http://projects.spring.io/spring-clou ...