数据库基础和ORM

本文介绍了数据库的基础知识,包括数据库的分类、关系型数据库Oracle和MySQL的发展历程、NoSQL的出现及其应用场景。接着深入讲解了MySQL的使用,如SQL语句、DCL、DDL、数据库设计以及事务处理。此外,还探讨了数据仓库、游标、存储过程和触发器,最后提到了ORM(对象关系映射)的概念和原则。
摘要由CSDN通过智能技术生成

一、数据库

1、概念
计算机的发明:为了做科学计算,需要大量的数据输入和输出IO;
数据库:按照数据结构来组织、存储、管理数据的仓库;便于检索、快速定位、增删改查;
存储在内存、磁盘都可以,是否掉电丢失是另一回事;不管使用什么存储介质,数据库的数据模型才是其核心和基础;
功能:数据持久化的方案,有组织的存储并管理起来,保证掉电不丢失

2、诞生历程
为了实现输入输出,最先是打孔卡片、灯泡明灭,然后是磁带(顺序读取),1956年IBM磁盘驱动器(支持随机访问);
随着硬件存储技术的发展,大量的数据需要存储和管理,数据库管理系统DBMS诞生;不管使用什么存储介质,数据库的数据模型才是其核心和基础;
信息化基于硬件的发展,让存储不再成为瓶颈;

3、分类
按照数据模型分类:层次数据库,网状数据库,关系型数据库

1)层次数据库
以树型结构表示实体及其之间的联系;从根结点开始,关系只支持一对多;代表数据库IBM IMS;
弊端:因为树不允许交叉,数据存在大量冗余;

2)网状数据库
不是树型结构,是图,也是网,能描述一对多,多对多;
可以表示实体间多种复杂关系,这是层次数据模型无法做到的;比如一个结点可以有多个父结点,结点之间支持多对多关联;

3)关系型数据库
使用行、列组成的二维表来组织数据和关系,表中的行既可以描述数据实体,也可以描述实体间的关系(加的某一列);不需要关心存储的物理细节,专心于数据的逻辑/关系构建,即如何把业务数据转描述成关系、即如何把业务模型设计成关系模型;关系模型有严格的数学理论基础,1970年IBM的研究员E.F.Codd发表了关系模型的论文;

行Row:又称为记录Record,元祖
列Column:又称为字段Field,维度(数据分析领域)
基于关系模型构建的数据库系统统称为RDBMS,代表的有IBM DB2,Oracle甲骨文的Oracle和MySQL,微软的MS SQL;

4、Oracle甲骨文的发展
拉里·艾莉森(Larry Ellison)阅读了IBM的关系型数据库的论文,开发了Oracle1.0,直到1992年Oracle7才逐渐稳定下来,2001年商务9i版本才被广泛应用;
2009年4月,甲骨文(Oracle)公司宣布收购了SUN(计算机系统)公司,2010年1月成功收购;SUN公司有主机、操作系统和研发能力,拥有Java版权、MySQL;
2013年,甲骨文超过IBM,称为继微软之后全球第二大软件公司;

5、MySQL发展
1985年几个瑞典人开发了MyISAM的前身;
2000年,MySQL采用GPL协议开源,MySQL4.0开始支持MyISAM、InnoDB存储引擎;
2005年,MySQL5.0是里程碑版本;
2008年,MySQL被SUN公司收购;
2009年1月,在Oracle收购MySQL之前,从MySQL 5.5 开始一条新的GPL分支,起名MariaDB;

MySQL:引擎是插件化的,可以支持多种引擎;
MyISAM:不支持事务,插入、查询速度快;
InnoDB:支持事务,行级锁,MySQL5.5起的默认引擎;以前是表级锁,数据库是个server,是并发的,表级锁很影响并发效率;

6、NoSQL
NoSQL是对非SQL、非传统关系型数据库的统称;
2009年后,一般指非关系型、非分布式、不提供ACID的数据库设计模式;如Facebook、Twitter、微博都用到了NoSQL,如Redis,跟他们的业务相关,实时性、分布式、因人而异的在线分析,关系型数据库比较难解决;

随着互联网时代的到来,数据爆发式增长,数据库技术也要适应新的业务需求;
随着移动互联网时代、物联网时代的到来,数据规模更加庞大,大数据技术中NoSQL也同样重要;
很多业务是关系型数据库+NoSQL结合使用;

ACID:数据库事务正确执行的四个基本要素的缩写;包含原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability);
一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求;

7、数据库热度

1)关系型数据库
Oracle:需要单独学的关系型数据库
建模模型和排名第二第三的MySQL、Microsoft SQL Server不太一样;
入门级传统关系型数据库:MySQL、MariaDB,关系型数据库得通一种;
DB2:IBM的,依然有很大市场;商业收费,可以不太关注;
SQLite:小型关系型数据库非常好用,C++写的,开源、效率很好,支持事务,想临时在手机、本地持久化一些数据开以考虑使用,开以关注;
Hive:也叫蜂窝、数据仓库,可以存储海量数据,主要用来做仓库、进行数据分析,而不是增删改查;
虽然归类到关系型数据库,但实质是NoSQL、大数据领域的数据仓库,可以存海量数据;支持数据查询、分析的唯一语言 - SQL语句;
PostgreSQL:关系型数据库,国内用的不太多;
Microsoft Access:关系型数据库,但是是桌面级,SQL语句也有点非标,不用太关注;

2)NoSQL
NoSQL - 文档型(Document store)、键值对型(key-value store)、列存储型(Wide column store)

MongoDB,是文档型数据库,存储的数据类型是海量,类似于Json(嵌套key-value)存储
Redis: KEY—VALUE STORE,二进制存储结构,本质上是key-value,value类型很多,好处在于时间复杂度O(1),而且Redis是内存数据库,基于内存、非常快,也有自己的持久化策略;Redis还可以做第三方消息存储队列,基于内存、速度非常快;在实时计算方面应用也很突出;
Cassandra:宽列存储数据库Wide col

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值