关系型数据库
2016-05-29 17:42
302 查看
关系型数据库
定义:关系模型把世界看作是由实体和联系组成的,而关系型数据库是将数据库表作为实体,以数据库表的主键和外键的关联关系描述联系的一种数据库结构;一对一:一条主表记录对应一条从表记录,同时一条从表记录对于一条主表记录;
一对多:一条主表记录对应多条从表记录,同时一条从表记录只对应一条主表记录;
多对多:一条主表记录对应多条从表记录,同时一条从表记录对应多条主表记录;
数据库管理系统DBMS
database management systemRDMS;
分类:本地数据管理系统;数据库服务器管理系统;
结构化查询语言 SQL
Structured Query Language定义:是一种用于管理关系型数据库,并与数据库中的数据进行通讯的计算机语言;
DDL数据定义语言,创建,修改,删除数据库的内部数据结构
DQL数据查询语言,用于数据库中数据查询
DML数据操作语言,用于数据库中数据的增删改等
DCL数据控制语言,控制数据的访问权限;
MYSQL数据类型
整型: int;浮点型:float,double ,decimal(10,2);
字符型:char(20),varchar(20);
date: date;
建表
primary key 定义当前列为主键,主键特点,非空,不能重复;AUTO_INCREMENT 设置当前列为自动增长列,有DBMS为该例分配值,确保该例的值不重复;
case when
case whentruncate table
delete 会记录日志,意味着删除后可以恢复,但是效率低;truncate 不会记录日志,不能恢复,效率高;
having 和 where的区别
where运行在分组前,因此不能执行聚合函数,having 是运行在分组之后,只能用作聚合函数的过滤;执行顺序
fromwhere过滤
group by 分组
select 投影例
having 过滤
order by 排序
结论
在分组查询中,能够查询的字段,只能是分组字段和聚合函数;可靠性+准确性=数据完整
数据完整:为了防止垃圾数据的产生,影响数据库的执行效率;分类;实体完整性,保证一行数据是有效的,同行代表实体互不同,能区别;
实现方法:主键约束,primary key ,主键是表中的一个到多个例,不能重复,不能为空,一个表中只有一个主键;唯一约束:给定例的所有值必须唯一,该例在表中的每一行的值必须唯一;
分类:域完整性,保证一例数据是有效的;
实现方法:非空约束,not null ;默认约束 default ;检查约束 check,MySQL不支持;
分类:引用完整性,保证引用的编号是有效的;外键中出现的数据,主键中必须出现;
分类:用户自定义完整性,保证自定义规则;
两个表之间如果存在外键约束,那么删除主表记录时,由于外键约束存在,无法删除有从表记录引用的主表记录
级联删除:将主表记录对应的从表记录先删除,再删除主表记录外键设为空:将主表记录对应的从表记录设置为null,在删除主表记录
外键与外键约束的区别
外键是指从表的某列与主表某列存在依附关系外键约束是指在外键关联主键上强制加上的一个约束,如果违反约束,则不允许修改
注意:没有建立外键约束不等于没有外键;
between
>= <=开闭原则:
软件实体应该面向修改关闭,面向扩展开放,其实现核心就是抽象,将相同的代码抽象出来,便于代码重用,这就是闭,便于功能的扩展,这就是开三层架构
持久层 :完成数据库操作。采用DAO模式,建立实体类和数据库进行映射,也就是那个类对应那个表,那个属性对应那个例。而持久层的目的就是完成关系数据和对象数据的转换;业务层 :完成业务处理。采用事物脚本模式。将一个业务中所有的业务操作封装成一个方法;保证该方法中所有数据库更新操作同时成功,或同时失败;
表现层 : 完成数据的展示,采用MVC模式;
Model:模型,实体类;完成数据的封装和传输;
Version:视图,也就是GUI窗体,完成数据的展示;
Control:控制,也就是事件,完成业务方法的调用和业务流程的控制;
层与层之间采用接口做耦合,这样,当一个层的组件发生更改或替换时,不会影响别的层组件的使用;
用户—》 表现层–接口–》业务层–接口–》持久层—》DB
相关文章推荐
- MySQL学习15:子查询(二)
- 机房收费系统整体观看
- Windows下Redis作为Mysql的缓存服务器-读写分离
- mongodb的安装
- mysql 去安全隐患 mysql_secure_installation
- JSP使用过滤器防止SQL注入
- hive本地mysql
- Oracle shared server配置
- 9.6. MySQL中保留字的处理
- mybatis多个参数传值
- MySQL启动本地连接服务
- CentOS 7 安装 PHP 7.0以及memcache和redis扩展
- Incorrect key file for table '/tmp/#sql_882_0.MYI'; try to repair it
- PLSQL Developer win7 64位 安装方法
- SQLite语句练习题
- NoSql之初识HBase
- 转:ORACLE的JDBC连接方式:OCI和THIN
- 只有oracle中有rownum
- 牛腩——SQLhelper
- mysql源码编译安装 mysql-5.5.30.tar.gz