一文汇总数据库基础知识点!(建议收藏)
听说微信搜索《Java 鱼仔》会变更强哦!
本文收录于JavaStarter ,里面有我完整的 Java 系列文章,学习或面试都可以看看哦
(一)概述
在考研的时候,我有一门专业课是数据库,因此当时我对数据库的基础知识掌握的还算比较扎实,上周我再翻开当时考研时翻了无数遍的数据库书籍的时候,发现好多内容都忘掉了。刚好也决定开始写数据库相关的文章,就有了下面的内容。
(二)基本概念
DB:数据库 DB 是长期存储在计算机内、有组织的、统一管理的相关数据的集合。
DBMS:数据库管理系统是位于用户与 OS 之间的一层数据管理软件,它为用户或应用程序提供了访问 DB 的方法。
DBS:数据库系统 DBS 是实现有组织动态地存储大量关联数据,方便多用户访问的计算机硬件、软件和数据资源组成的系统,即采用数据库技术的计算机系统。
联系的元数:与一个联系有关的实体集的个数称为联系的元数。
概念模型:表达用户需求观点的 DB 全局逻辑结构的模型。
逻辑模型:表达计算机实现观点的 DB 全局逻辑结构的模型。逻辑模型主要有层次、网状、关系和对象模型 4 种。
外部模型:表达用户使用观点的 DB 局部逻辑结构的模型。
内部模型:表达 DB 物理结构的模型。
DDL:定义 DB 三级结构的语言
DML:对数据库进行查询操作的语言
DD:数据字典,存放三级结构定义的 DB,对数据库的操作都要通过 DD 才能实现
主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失。
外键:一个表中存在的另外一个表的主键称为此表的外键。
触发器:一个通过事件来触发而被执行的特殊的存储过程,比如对一个表数据的操作会触发另一个表的数据操作。
存储过程:是一个预编译的 SQL 语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。
视图:是一种虚拟的表,可以有选择性地展示部分数据,试图通常是有一个表或者多个表的行或列的子集。对视图的修改会影响基本表
临时表: 只在当前连接可见的表,关闭连接后会自动清除表空间。
内连接: 只连接匹配的行
左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行
右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行
全外连接: 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
交叉连接: 生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配。
(三)数据库的范式
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,越高的范式数据冗余度越低。
实际开发中涉及到的范式有三种:第一范式、第二范式、第三范式
3.1 第一范式
如果数据库中的每一列属性都是不可分解的原子值,那么说明这个数据库满足第一范式。
3.2 第二范式
第二范式在第一范式的基础上,消除了非主属性对主属性的部分函数依赖。简单来讲,就是表中的每一列都要和主键有关。而不能只与主键的某一部分相关
以这样一个数据为例,同一个订单会有多个商品,所以主键是订单 id 和商品 id,但是商品名称仅依赖于商品 id,不满足表中的每一列都要和主键有关,而不能只与主键的某一部分相关,因此只是第一范式。
修改成下表这样就满足了第二范式。
3.3 第三范式
第三范式在第二范式的基础上,消除了非主属性对主属性的传递函数依赖,简单来讲,就是每一列数据都和主键直接相关,而不能间接相关。
比如一张学生表:
上面的所有属性均依赖于学号,满足第二范式,简单来讲就是通过学号能确定后面的所有属性,但是班主任性别是通过班主任姓名带出来的,就存在了学号->班主任姓名->班主任性别的传递依赖,因此不满足第三范式。
要想满足第三范式,就要消除传递依赖。
可以改成:
(四)sql 的基本操作
4.1 数据库基本操作
4.2 用户
创建用户时:
用户名:创建的用户名称
IP 地址:指定用户可以从哪个服务器登陆,本地用户 localhost,任意远程机用“%”
密码:该用户登陆的密码
4.3 权限
权限:用户的操作权限,如 SELECT,INSERT,UPDATE 等,如果要授予所的权限则使用 ALL
例如:
通过下面的命令让指定用户可以给其他用户授权
4.4 对表的操作
4.5 对数据的操作
基础增删改查:
其他条件:
版权声明: 本文为 InfoQ 作者【Java鱼仔】的原创文章。
原文链接:【http://xie.infoq.cn/article/7aa92f2bfdc961f8f2d9f26d1】。文章转载请联系作者。
评论