数据库
DBMS
数据库管理系统
关系型数据库
概念
把世界看作是由实体和联系组成的,而关系型数据库是将数据库表作为实体,以数据库表的组件和外键的关联关系描述联系的一种数据库结构
一对一关系
一条主表记录对应一条从表记录,同时一条从表记录也对一条主表记录
一对多关系
一条主表记录对应多条从表记录,一条从表记录对应一条主表记录
多对多关系
一条主表记录对应多条从表记录,一条从表记路对应对多条主表记录
SQL 结构化查询语言
DDL 数据定义语言
创建 修改 删除数据库的内部数据结构
DQL 数据查询语言
用于数据库数据的查询
DML数据操作语言
用于数据库中数据的修改包括添加 删除 修改
DCL 数据控制语言
控制数据库访问权限
数据库的完整性
可靠性+完整性=数据完整
完整性分类
1)实体完整性
保证一行数据时有效的
主键约束
主键不能为空,也不能重复,一个表中只能有一个主键
唯一约束
给定的列的所有的值必须唯一,该列在表中每一行的值必须唯一,他和主键约束的区别在于该列可以为空,并且可以在一张表中多个列设置唯一约束
2)域完整性
保证一列数据是有效的
实现方法
非空约束
Not Null
默认约束
Default
检查约束
Check(MySQL不支持)
3)引用完整性
保证引用的编号是有效的
两个表之间如果存在外键约束,那么删除主标记录,由于有外键约束存在,无法删除有从表引用的主表记录
级联删除
将主表记录对应的从表记录先做删除,在删除主记录
外键设空
将主表记录对应的从表记录外键设置为null,在删除主表记录
4)用户自定义完整性
自定义完整性规则
开闭原则
软件实体应该面向修改关闭,面向扩展开放,七实现核心就是抽象.将相同的代码抽象出来,便于代码的重用,这就是闭,将不同的代码也抽象出来.便于修改,这就是开.
JDBC(java数据库连接)
一种用于执行SQL语句的javaAPI,它由一组用java语言编写的类和接口组成
jdbc是java连接数据库的一套规范,在该规范中定义了一系列的接口,由数据库的厂商提供接口的实现类,由开发者根据接口,调用实现类的方法,这样开发者就可以屏蔽不同数据库的差异,无论连接什么数据库,对数据库做什么样的操作,都是一套API
操作步骤
1) 加载驱动,建立连接
2)执行SQL语句
3)关闭连接
dao模式
建立实体类和数据库表做映射,也即是那个表对应哪个类,那和属性对应哪个列.二jdbc操作的目的就是,完成对象数据和关系数据的转换.
Statement 和 PreparedStatement 区别
1)Statement 为 PreparedStatement 的父接口
2)Statement 在执行SQL语句只能以字符串方式设置值,由于每次值都不一样,所以在执行SQ语句时,都会将SQL语句重新编译,效率较低.而PreparedStaement提供占位符方式设置值,SQL语句执行效率高
3)Statement 在执行SQL语句时,鱼鱼采用拼字符串方式设置,所以容易造成SQL注入.而PreparedStatement使用占位符方式设置值,无论什么值都不会造成SQL注入
SQL注入
:在执行SQL语句时,如果以拼接字符串方式设置值,那么如果在值中有SQL语句的关键字或非法字符,节能会造成执行结果错误或者不正确
关键字
create
INSERT
TABLE
DATABASE
SELECT
DELETE
VALUES
UPDATE
LIMIT
SET
语法
case when
删除
delete
删除后可以恢复,但效率低
truncate
删除数据后不能恢复,效率高,不会删除日记记录
聚合函数
COUNT
统计行的数量
SUM
获取单个列的合计值
AVG
计算某个列的平均值
MIN
计算列的最大值
MAX
计算列的最小值
数据分组
HAVING
运行在分组后,只能做聚合函数的过滤
WHERE
运行在分组前,不能执行任何聚合函数
SQL语句执行顺序
1)执行FROM
2)WHERE条件过滤
3)GROUP BY 分组
4)SELECT 投影列
5)HAVING 条件过滤
6)ORDER BY 排序
内联接
使用比较运算符根据每个表共有的列的值匹配两个表中的行
外联接
不管有没有匹配,被定义了外联接的表数据都要出现在结构中
ALTER TABLE t_man ADD CONSTRAINT fk_2 FOREGIN KEY (manid) REFERENCES t_man(id)
DBMS
数据库管理系统
关系型数据库
概念
把世界看作是由实体和联系组成的,而关系型数据库是将数据库表作为实体,以数据库表的组件和外键的关联关系描述联系的一种数据库结构
一对一关系
一条主表记录对应一条从表记录,同时一条从表记录也对一条主表记录
一对多关系
一条主表记录对应多条从表记录,一条从表记录对应一条主表记录
多对多关系
一条主表记录对应多条从表记录,一条从表记路对应对多条主表记录
SQL 结构化查询语言
DDL 数据定义语言
创建 修改 删除数据库的内部数据结构
DQL 数据查询语言
用于数据库数据的查询
DML数据操作语言
用于数据库中数据的修改包括添加 删除 修改
DCL 数据控制语言
控制数据库访问权限
数据库的完整性
可靠性+完整性=数据完整
完整性分类
1)实体完整性
保证一行数据时有效的
主键约束
主键不能为空,也不能重复,一个表中只能有一个主键
唯一约束
给定的列的所有的值必须唯一,该列在表中每一行的值必须唯一,他和主键约束的区别在于该列可以为空,并且可以在一张表中多个列设置唯一约束
2)域完整性
保证一列数据是有效的
实现方法
非空约束
Not Null
默认约束
Default
检查约束
Check(MySQL不支持)
3)引用完整性
保证引用的编号是有效的
两个表之间如果存在外键约束,那么删除主标记录,由于有外键约束存在,无法删除有从表引用的主表记录
级联删除
将主表记录对应的从表记录先做删除,在删除主记录
外键设空
将主表记录对应的从表记录外键设置为null,在删除主表记录
4)用户自定义完整性
自定义完整性规则
开闭原则
软件实体应该面向修改关闭,面向扩展开放,七实现核心就是抽象.将相同的代码抽象出来,便于代码的重用,这就是闭,将不同的代码也抽象出来.便于修改,这就是开.
JDBC(java数据库连接)
一种用于执行SQL语句的javaAPI,它由一组用java语言编写的类和接口组成
jdbc是java连接数据库的一套规范,在该规范中定义了一系列的接口,由数据库的厂商提供接口的实现类,由开发者根据接口,调用实现类的方法,这样开发者就可以屏蔽不同数据库的差异,无论连接什么数据库,对数据库做什么样的操作,都是一套API
操作步骤
1) 加载驱动,建立连接
2)执行SQL语句
3)关闭连接
dao模式
建立实体类和数据库表做映射,也即是那个表对应哪个类,那和属性对应哪个列.二jdbc操作的目的就是,完成对象数据和关系数据的转换.
Statement 和 PreparedStatement 区别
1)Statement 为 PreparedStatement 的父接口
2)Statement 在执行SQL语句只能以字符串方式设置值,由于每次值都不一样,所以在执行SQ语句时,都会将SQL语句重新编译,效率较低.而PreparedStaement提供占位符方式设置值,SQL语句执行效率高
3)Statement 在执行SQL语句时,鱼鱼采用拼字符串方式设置,所以容易造成SQL注入.而PreparedStatement使用占位符方式设置值,无论什么值都不会造成SQL注入
SQL注入
:在执行SQL语句时,如果以拼接字符串方式设置值,那么如果在值中有SQL语句的关键字或非法字符,节能会造成执行结果错误或者不正确
关键字
create
INSERT
TABLE
DATABASE
SELECT
DELETE
VALUES
UPDATE
LIMIT
SET
语法
case when
删除
delete
删除后可以恢复,但效率低
truncate
删除数据后不能恢复,效率高,不会删除日记记录
聚合函数
COUNT
统计行的数量
SUM
获取单个列的合计值
AVG
计算某个列的平均值
MIN
计算列的最大值
MAX
计算列的最小值
数据分组
HAVING
运行在分组后,只能做聚合函数的过滤
WHERE
运行在分组前,不能执行任何聚合函数
SQL语句执行顺序
1)执行FROM
2)WHERE条件过滤
3)GROUP BY 分组
4)SELECT 投影列
5)HAVING 条件过滤
6)ORDER BY 排序
内联接
使用比较运算符根据每个表共有的列的值匹配两个表中的行
外联接
不管有没有匹配,被定义了外联接的表数据都要出现在结构中
ALTER TABLE t_man ADD CONSTRAINT fk_2 FOREGIN KEY (manid) REFERENCES t_man(id)