小丸子总结数据库基本知识
来源:互联网 发布:小鸡炖蘑菇 知乎 编辑:程序博客网 时间:2024/04/24 13:52
复习一波~
一. 数据库基本原理
0.DBMS,DBS.DB
- DBMS:数据库管理系统
- DBS:数据库系统(包括DBMS和DB)
- DB:数据库
1.数据模型
- 数据结构
- 数据操作
- 数据的约束条件
2.概念模型
现实世界到机器世界的恶一个中间层次。
数据库设计人员用来设计数据库的有力工具。
数据库设计可以使用:E-R图。
3.层次模型
4.数据库系统的三级模式结构
- 外模式(用户模式) -> 视图( view )
- 模式 (逻辑模式) -> 数据库中全体数据的逻辑结构和特征
- 内模式(存储模式) -> 数据的物理结构和存储方式
5.数据库系统的两层映像
- 外模式/模式
- 模式/内模式
两层映像保证了数据库系统的较高的逻辑独立性和物理独立性。
6.什么是数据与程序的物理独立性?什么是数据与程序的逻辑独立性?
- 数据与程序的物理独立性:模式改变的时候,外模式不变。
- 数据与程序的逻辑独立性:数据的存储结构变了,但是模式不变。
7.范式
- 1NF:属性具有原子性,不可再分
- 2NF:记录要有唯一标识,即实体的唯一性。要有主键
- 3NF:任何字段不能由其他字段派生
- BNF:任何非主属性不能对主键子集依赖
数据库的三范式是:
第一范式( 1NF ): 字段具有 原子性 , 不可再分 。所有关系型数据库系统都满足第一范式)数据库表中的字段都是单一属性的,不可再分。例如,姓名字段,其中的姓和名必须作为一个整体,无法区分哪部分是姓,哪部分是名,如果要区分出姓和名,必须设计成两个独立的字段。
第二范式( 2NF ): 第二范式( 2NF )是在 第一范式( 1NF )的基础上 建立起来的,即满足第二范式( 2NF )必须先满足第一范式( 1NF )。要求 数据库表中的每个实例或行必须可以被惟一地区分 。通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为 主关键字或主键 。
第二范式( 2NF )要求 实体的属性完全依赖于主关键字 。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。
第三范式的要求如下: 满足第三范式( 3NF ) 必须先满足第二范式( 2NF ) 。简而言之,第三范式( 3NF )要求一个数据库表中 不包含 已在其它表中 已包含的非主关键字信息 。所以第三范式具有如下特征:
1 ,每一列只有一个值
2 ,每一行都能区分。
3 ,每一个表都 不包含其他表已经包含 的非主关键字信息。
例如,帖子表中只能出现发帖人的 id ,而不能出现发帖人的 id ,还同时出现发帖人姓名,否则,只要出现同一发帖人 id 的所有记录,它们中的姓名部分都必须严格保持一致,这就是 数据冗余 。
设有关系模式R(A,B,C,D),其数据依赖集:F=((A,B)->C,C->D),则关系模式R的规范化程度最高达到————。
答:2NF
因为3NF要求不存在传递依赖。所有非主属性直接依赖于码。
8.事务的4个基本特性
-(atomic) 原子性:事务中包含的操作被看作一个逻辑单元。要么全部成功,要么全部失败。
- (consistency)一致性:操作完成时,数据必须处于一致的状态,数据的完整性约束没有被破坏,事务在回滚到事务开始前的状态,就像事务没有发生过一样。
- (isolation)隔离性:事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性 和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。
- (durability)持久性:事务结束后,事务处理的结果必须得到固化。
9.事务操作
- 创建事务:start transaction 或 begin
- 回滚:rollback
- 提交:commit
二. sql语言
1. sql语言分类
- DDL:数据定义语言(create,drop,alter,declare)
- DML:数据操纵语言(delete,update,insert)
- DCL:数据控制语言(grant,revoke,commit,rollback)
- DQL:数据库查询语言:(select)
(1)创建数据库
create database dbname
(2)删除数据库
drop database dbname
(3)创建新表
create table tname
创建一个学生表student,它由学号Sno,姓名Sname,性别Ssex,年龄Sage,所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。
create table student (Sno char(10) NOT NULL UNIQUE,Sname char(20) UNIQUE,Ssex char(2),Sage int,Sdept char(20))
(4)根据旧表创建新表
create table tname like oldtable
(5)删除新表
drop table tname
(6)增加一个列 删除一列 修改一列
alter tablename add colunm colname coltype
alter tablename drop column colname
alter tablename alter colume colname coltype
(7)添加主键 删除主键
添加:
alter tablename add primary key(colname)
删除:
alter tablename drop primary key(colname)
(8)创建索引 删除索引
create index indexname on tablename
drop index indexname on tablename
(9)创建视图 删除视图
create view viewname as select statement
drop view viewname
(10)选择,插入,更新,查找,排序,总数,求和,平均,最大,最小
选择:select * from tablename where
插入:insert into tablename(fields1,fields2) values(value1,value2)
更新:update tablename set fileds=value1 where
查找:select * from tablename like '%value%'
排序:select * from tablename order by fields
总数:select count * as totalcount from tablename
求和:select sum(fileds) as sumvalue from tablename
平均:select avg(fields) as avgvalue from tablename
最大:select max(fields) as maxvalue from tablename
最小:select min(fields) ad minvalue from tablename
(11) union
连接两个结果表,并去除重复项。
如果union和all一起使用的话,不会去除重复项。
(12) except
在结果表一中但不再结果表2中,生成一个新的结果表。去除重复行。
如果except与all一起使用,不会去除重复项。
(13)interset
既在结果表一,又在结果表二中的结果,产生一个新结果表。去除重复行。
如果interset与all一起使用的时候,不去出重复项。
(14)left outer join
连个表连接,结果包括两个表连接成功的项和左表的项。
同理,right outer join
两个表连接,结果包括两个表连接成功的项和右表的项。
同理,full outer join
两个表连接,结果包括两个表连接成功的项,和两个表各自的记录。
(15)sql自查询语句
单行子查询:
select * from buycar where id=(select id from clothes where )
多行子查询:
select * from bugcar where id in (select id from clothes where)
Student表和enrolls表中,查询成绩在80分以上的的学号和姓名。
select id,name form Student where id in(select id from enrolls where grades>=80)
多列子查询:
select a,b,c from buycar where id in (select id from clothes where)
内联视图子查询:
select * from(select a,b,c from clothes)
在having子句中使用子查询:
select * from buycar group by id having avg(money)>100
查询Student表中每个系有三个以上的学生的所在系。
select dept from student group by dept having count(*)>=3
记录数查询
select count(money) from buycar
* between and*
select * from buycar where money between 20 an 80
单表查询时,去掉重复行
select distinct name from student
(16)grant 授权
grant insert on table studentto person1
(17)收回特权
revoke inserton table studentfrom person1
三. 常见的数据库
关系型数据库:mysql,db2,postgresql
非关系型数据库:mongodb
- 小丸子总结数据库基本知识
- 小丸子总结排序算法
- 小丸子
- 小丸子总结几个es6新特性
- 小丸子总结angularjs的一些问题
- 小丸子总结jquery的一些问题
- 小丸子总结node.js的一些问题
- 小丸子baidu前端校招一面总结
- 小丸子时钟 是什么
- Zigbee网络基本知识小总结
- 美食地图-十八番章鱼小丸子
- python基本知识、数据库、网络、编程等总结
- 数据库基本知识
- 数据库基本知识
- 数据库基本知识
- 数据库基本知识
- 数据库基本知识
- 数据库基本知识
- 模态框的编写与应用
- NOIP 2014 寻找道路
- TQ210——S5PV210中断体系
- The content of element type "package" must match "(result-types?,interceptors?,default-intercept .
- 到今年比赛完的训练计划
- 小丸子总结数据库基本知识
- TVS管的参数理解与选型
- MIT 6.00 1x Lecture 5 Recursion 递归 学习笔记
- AD9各种布线方法总结
- 自动生成MVC中的Service层、Dao层及Model层
- nyoj1057最大数(三)
- 局部变量、全局变量、堆、堆栈、静态和全局
- TYVJ 1541 八数码
- HTML