数据库介绍
关系型数据库
(1)关系型数据库介绍html
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(既二维格式表)。例如宏福教育某一期的学生关系就是一个二元关系,在关系型数据库中,对数据的操做几乎所有创建在一个或多个关系表上,经过对这些关联表格分类,合并,链接或选取等运算来实现数据的管理。mysql
关系型数据库诞生距今已经有40多年了,从理论产生发展到现实产品,例如:你们最多见的mysql和oracle数据库,oracle在数据库领域里上升到了霸主的地位,造成每一年高达数百亿美圆的庞大产业市场,而mysql也是不容忽视的数据库,以致于被oracle中心收购了。web
(2)关系型数据库表之间的关系列举sql
非关系型数据库(nosql)
非关系型数据库也称之为nosql数据库,请注意,nosql的本意是“not only SQL”,指的是非关系型数据库,而不是“no SQL”的意思,所以nosql的产生并非要完全否认关系型数据库,而是做为传统关系型数据库的一个有效补充,NoSQL数据库在特定的场景下能够发挥出不可思议的高效率和高性能。mongodb
随着互联网的兴起,超大规模和高并发量的微博,微信,SNS类型的web2.0纯动态网站已经显得力不从心,暴露了不少难以克服的问题,例如:传统的关系型数据库IO瓶颈,性能瓶颈都难以有效突破,因而开始出现了大批针对特定场景,以高性能和使用便利为目的的功能特异化的数据库产品,NoSQL类的数据库就是在这样的情景中诞生并获得了很是迅速的发展数据库
NoSQL是非关系型数据库的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面,NoSQL数据存储不须要固定的表结构,一般也不存在链接操做,在大数据存取上具有关系型数据库没法比拟的性能优点,该术语(NoSQL)在2009年初获得了普遍的认同vim
google的BigTable与Amazon的Dynamo是很是成功的商业NoSQL,一些开源的NoSQL体系,如centos
Redis, mongodb也逐渐的愈来愈受到各大中小型企业的欢迎和追捧微信
1、关系型数据库
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
优势:数据结构
- 易于维护:都是使用表结构,格式一致;
- 使用方便:SQL语言通用,可用于复杂查询;
- 复杂操做:支持SQL,可用于一个表以及多个表之间很是复杂的查询。
缺点:
- 读写性能比较差,尤为是海量数据的高效率读写;
- 固定的表结构,灵活度稍欠;
- 高并发读写需求,传统关系型数据库来讲,硬盘I/O是一个很大的瓶颈。
2、非关系型数据库
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,能够是文档或者键值对等。
优势:
- 格式灵活:存储数据的格式能够是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景普遍,而关系型数据库则只支持基础类型。
- 速度快:nosql可使用硬盘或者随机存储器做为载体,而关系型数据库只能使用硬盘;
- 高扩展性;
- 成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
- 不提供sql支持,学习和使用成本较高;
- 无事务处理;
- 数据结构相对复杂,复杂查询方面稍欠。
常见的数据库
非关系型数据库(nosql):mongodb,redias
关系型数据库:oracle,db2,sqlserver,mysql,mariadb
Mariadb发源
MySQL之父Widenius先生离开了Sun以后,以为依靠Sun/Oracle来发展MySQL,实在很不靠谱,因而决定另开分支,这个分支的名字叫作MariaDB。
RDBMS
Relational Database Management System
- sql语句主要分为:
- DQL:数据查询语言,用于对数据进行查询,如select
- DML:数据库操做语言,对数据库进行增删改查,如:insert,update,delete
- TPL:事物处理语言,对事物进行处理,包括begin,transaction,commit,rollback
- DCL:数据控制语言,如grant,revoke
- DDL:数据定义语言:进行数据库,表的管理等,如create,drop
- CCL:指针控制语言,经过控制指针完成表的操做,如declare cursor
- sql是一门特殊的语言,专门用来操做关系型数据库
- 不区分大小写
mariadb安装 [mariadb] name = MariaDB baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/ gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1 忘记mysql的root密码 vim /etc/my.conf.d/server.conf 添加skip-grant-tables mysql -uroot | mysql -u root -p 查看数据库 show databases; #查看建立数据库状态 show create database testdb; #使用哪一个库 use testdb 修改数据库 create database test03 #建立数据库 create database testdb character set utf8; #删除数据库 drop database testdb; #修改数据库默认字符集 alter database 库名 default character set utf8; #查看当前用户 select user(); #给aaa添加查询,建立,更新,删除的权限(在任意主机上) grant select,create,update,delete on test03.grade to aaa@'%';
#给aaa赋予test03数据库的grade表最高权限(在任意主机上) grant all privileges on test03.grade to aaa@'%'; #查看aaa用户的权限(root用户) show grants for 'aaa'; #收回aaa在任意数据库的任意表的最高权限 revoke all on *.* from aaa@'%'; #查看本身权限
show grants