数据库复习笔记(一)

一、什么是数据库?

数据库是存放数据的仓库,它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据,即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等,除了文本类型的数据,图像、音乐、声音都是数据。

数据库是一个按数据结构来存储和管理数据的计算机软件系统,数据库的概念实际包括两层意思:

1.数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理数据,“数据”和“库”两个概念结合成为数据库

2.数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据

二、数据库的分类

数据库的分类个人理解分为两大类:关系型数据库和非关系型数据库

关系型数据库:是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。

主流的关系型数据库有Oracle、DB2、MySQL、Microsoft SQL Server、Microsoft Access等多个种类,每种数据库的语法、功能和特性也有所不同,有所相同。

非关系型的数据库(NoSQL):随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

主流的非关系型数据库有:NoSql、Cloudant、MongoDb、redis、HBase

三、两大数据库的区别

1.关系型数据库

优点:

①.容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更 容易理解

②.使用方便:通用的SQL语言使得操作关系型数据库非常方便

③.易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据 不一致的概率

④.支持SQL,可用于复杂的查询

缺点:

①.为了维护一致性所付出的巨大代价就是其读写性能比较差
②.固定的表结构
③.高并发读写需求
④.海量数据的高效率读写

2.非关系型数据库

优点:

①.无需经过SQL层的解析,读写性能很高
②.基于键值对,数据没有耦合性,容易扩展
③.存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型

缺点:

①.不提供SQL支持,学习和使用成本较高
②.无事务处理,附加功能bi和报表等支持也不好

四、数据库常见语言分类

SQL:标准语言,全拼:Structure Query Language,专门针对数据库进行操作的一门语言

1.DQL

DQL:数据库查询语言,全拼:Data Query Language

包含关键字:Select……From……

2.DDL

DDL:数据库定义语言,全拼:Data Definition Language,专门针对数据库中对象进行操作

包含关键字:Create(创建)、Alter(修改)、Drop(删除)、Truncate(删数据)、Rename(更改名)

这里说的对象一般是指:表(Table)、视图(View)、索引(Index)、序列(Sequence)、同义词(Synonym)

3.DML

DML:数据库操作语言,全拼:Data Manipulation Language,专门针对数据库中数据进行操作

包含关键字:Insert(插入)、update(更新)、delete(删除)

4.DCL

DCL:数据库控制语言,全拼:Data Control Language,专门针对数据库中权限进行操作

包含关键字:Grant(赋权)、Revoke(回收)

5.TCL

TCL:事务控制语言,全拼:Transaction Control Language

包含关键字:Commit(提交)、Rollback(回滚)、Savepoint(保存点)

但是在网上查阅相关文档发现,TCL和DCL进行了Merge,归并到DCL里了

五、三大删除的区分

Drop:删除表内容和结构,没有备份表之前要慎用,Drop将表所占用的空间全释放掉

Truncate:删除表的内容,表的结构存在,可以释放空间,没有备份表之前要慎用,Truncate table则是一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器,执行速度快。当表被Truncate 后,这个表和索引所占用的空间会恢复到初始大小。

Delete:删除表的内容,表的结构还存在,不释放空间,可以回滚恢复,Delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作,Delete操作不会减少表或索引所占用的空间

速度优先级别:Drop>Truncate>Delete;Truncate 和Delete只删除数据, Drop则删除整个表(结构和数据);如果想删除部分数据用Delete,注意带上where子句,回滚段要足够大; 如果想删除表,当然用Drop; 如果想保留表而将所有数据删除,如果和事务无关,用truncate即可; 如果和事务有关,或者想触发trigger,还是用Delete;

Example:

现有一张数据表,名为:test

Drop:Drop test, 删除表test,并释放空间,将test删除的一干二净
Truncate:Truncate test, 删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在
Delete:(1)删除制定数据:删除表test中年龄等于30且国家为US的数据:delete from test where age=30 and country =‘US’
(2)删除整个表:仅删除表test内的所有内容,保留表的定义,不释放空间:delete from test 或delete * from test

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2019-2024 Carrol Chen
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信