java.lang 基础类、常用类的包
java.util 集合框架
java.io 流操作
java.sql 数据库操作
java.net 网络操作
java.awt和javax.swing GUI组件

对象序列化
在传输对象时,由于对象的数据庞大,无法直接传输。所以,在传输之前,先将对象打散成字节序列,以利于传输。这个过程,称为序列化过程。
在字节序列到达目的地以后,有需要将字节序列还原成对象,这个过程,称为反序列化过程。

transient修饰符用于修饰属性,表示在序列化对象时,该属性的值不做传输。

关系型数据库:关系型数据库是源于关系模型,关系模型认为,世界由实体和实体之间的联系组成。关系型数据库是一种以表作为实体,以主键和外键关系做联系的一种数据库结构。

主键:在关系型数据库表中,用一个唯一的标识符来标识每一行,这个标识符就是主键(不可以重复,不能为空)
外键:在关系数据库中,外键是用来表达表和表之间关联关系的列。外键加入从表当中。

一对一:一条主表记录对应一条从表记录,同时一条从表记录对应一条主表记录
一对多:一条主表记录对应多条从表记录,同时一条从表记录对应一条主表记录
多对多:一条主表记录对应多条从表记录,同时一条从表记录对应多条主表记录

关系型数据库只是一个保存数的容器,大多数数据库依靠一个称为数据库管理系统(DBMS)的软件来管理数据库中的数据

SQL是结构化查询语言的英文缩写,是一种用于管理关系型数据库,并与数据库中的数据进行通讯的计算机语言。
SQL语言一共分为四类:
数据定义语言(DDL):创建、修改、删除数据库的内部数据结构
数据查询语言(DQL):用于数据库中数据的查询
数据操作语言(DML):用于数据库中数据的修改、包括添加、删除、修改等
数据控制语言(DCL):控制数据库访问权限

子查询返回的是单行单列,外查询才能使用>,<,>=,<=,!=
子查询返回的是多行单列,外查询只能使用in、not in

非相关子查询:在子查询中,子查询只需要执行一次,子查询结果不再变化。子查询结果供主查询使用,这种查询方式称为非相关子查询。

数据完整性:可靠性+准确性
防止垃圾数据的产生,从而影响数据库的执行效率

实体完整性
保证每行所代表的实体能互相区别,不能存在两条一模一样的记录
实体完整性的实现方式:
主键约束:主键是表中的一到多个列,主键列不能为空,也不能重复,一个表中只能有一个主键。
唯一约束:是指给定列的所有值必须唯一,该列在表中每一行的值必须唯一,他和主键约束的区别在于该列可以为空,并且可以在一张表中给多个列设置唯一约束。

适合做主键的列必须满足的四个条件
1、值不能为空
2、值必须唯一
3、不能有业务含义
4、值不能发生变动

域完整性实现方式
非空约束:指定列的值不能插入null
默认约束:添加记录是,如果该列的值不做插入,那么以默认值插入
检查约束:检查插入列数据的有效值

引用完整性:
从表外键中出现的数据,必须在主表中的主键列中出现。
引用完整性的实现方式:外键约束

外键和外键约束,是不同的概念
外键是用来表示表与表之间联系的,是表中的一个列
外键约束是指在外键列上一个约束,该外键列的值必须是主表列中出现的值,强制外键列引用的数据是正确的。如果违反该约束,则不允许该条数据的修改。

删除主表记录
当两个表之间建立了关联关系,并且在从表中的外键添加了外键约束时,如果主表记录有从表记录引用,那么主表记录无法删除。
有外键约束的情况下,删除主表记录有两种方式:
一、级联删除:先删除主表记录对应的从表记录,然后在删除主表记录。
二、外键置空:先将主表记录对应的从表记录,外键设置为null,然后再删除主表记录

内联接和外联接的区别。
内联接查询时,只能查询两个表之间有对应记录的数据,所以可能会损失一部分数据。
外联接查询时,可以包含一个表之中所有符合条件的数据,无论该数据是否有对应的记录。