一,数据库概述html
1,数据库(Database,简称DB)web
数据库技术是计算机应用领域中很是重要的技术,它产生于20世纪60年代末,是数据管理的最新技术,也是软件技术的一个重要分支。redis
简单的说,数据库就是一个存放数据的仓库,这个仓库是按照必定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的,咱们能够经过数据库提供的多种方法来管理数据库里的数据。更简单的形象理解,数据库和咱们生活中存放杂物的仓库性质同样,区别只是存放的东西不一样。sql
2,数据库表(table)mongodb
数据表是关系数据库中一个很是重要的对象,是其它对象的基础,也是一系列二维数组的集合,用来存储、操做数据的逻辑结构。根据信息的分类状况。
一个数据库中可能包含若干个数据表,每张表是由行和列组成,记录一条数据,数据表就增长一行,每一列是由字段名和字段数据集合组成,列被称之为字段,
每一列还有本身的多个属性,例如是否容许为空、默认值、长度、类型、存储编码、注释等.例如
3,数据(data)数据库
存储在表中的信息就叫作数据.json
4,数据库系统有3个主要的组成部分数组
1.数据库(Database System):用于存储数据的地方。缓存
2.数据库管理系统(Database Management System,DBMS):用户管理数据库的软件。安全
3.数据库应用程序(Database Application):为了提升数据库系统的处理能力所使用的管理数据库的软件补充。
5,数据库的发展史(五个阶段)
1.文件系统 数据库系统的萌芽阶段,经过文件来存取数据. 文件系统是数据库系统的萌芽阶段,出如今上世纪五六十年代,能够提供简单的数据存取功能,但没法提供完整、统一的数据管理功能,例如复杂查询等。因此在管理较少、较简单的数据或者只是用来存取简单数据,没有复杂操做的状况下,会使用文件系统
2.层次型数据库 数据库系统真正开始阶段,数据的存储形式相似树形结构,因此也叫树型数据库.
3.网状数据库 数据的存储形式相似网状结构. 从二十世纪六十年代开始,第一代数据库系统(层次模型数据库系统、网状模型数据库系统)相继问世,它们为统一管理和共享数据提供了有力的支撑 在这个阶段,网状模型数据库因为它的复杂、专用性,没有被普遍使用。而在层次模型数据库中,IBM公司的IMS(Information Management System,信息管理系统)层次模型数据库系统则获得了极大的发展,一度成为最大的数据库管理系统,拥有巨大的客户群 4.关系型数据库 二十世纪七十年代初,关系型数据库系统开始走上历史舞台,并一直保持着蓬勃的生命力.关系型数据库系统使用结构化查询语言(Structured Query Language,SQL)做为数据库定义语言DDL和数据库操做语言DML 5.面向对象数据库 把面向对象的方法和数据库技术结合起来,可使数据库系统的分析、设计最大程度地与人们对客观世界的认识相一致,而且可以有效的为面向对象程序提供更好的数据库支撑
二,数据库的特色
在当今的互联网中,最经常使用的数据库模型主要是两种,即关系型数据库和非关系型数据库。
1 关系型数据库介绍
(1) 关系型数据库 : 是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。
(2) 目前主流的关系型数据库:MySQL、Oracle 、 Sql server、DB2 。。。
Oracle 是世界上使用最普遍的数据库,上世纪末随着网络浪潮的到来,Oracle推出9i这个版本,i表示internet,全面支持网络引用。10g,g是grid网格,是Oracle公司为迎接“网格计算”时代的来临而提供的数据库解决方案。
MySQL是一个开源的、免费的关系型数据库,。因为其体积小、速度快、整体拥有成本低,尤为是开放源码这一特色,通常中小型网站的开发都选择MySQL做为网站数据库。
SQL Server 微软公司的关系型数据库,通常.NET平台会将其做为首选.
DB2是IBM出品的一系列关系型数据库管理系统,分别在不一样的操做系统平台上服务。
2 非关系型数据库介绍
(1)非关系型数据库诞生背景
非关系型数据库也被成为NoSQL数据库,NOSQL的本意是“Not Only SQL”.而不是“No SQL”的意思,所以,NoSQL的产生并非要完全地否认非关系型数据库,而是做为传统关系型数据库的一个有效补充。NOSQL数据库在特定的场景下能够发挥出不可思议的高效率和高性能。
随着互联网Web2.0网站的兴起,传统的关系型数据库在应付web2,0网站,特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS类型的web2.0纯动态网站已经显得力不从心,暴露了不少难以克服的问题。
例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,因而出现了大批针对特定场景,以高性能和使用便利为目的功能特异化的数据库产品。NOSQL(非关系型)类的数据就是在这样的情景下诞生并获得了很是迅速的发展
(2) NOSQL非关系型数据库小结:
一、NOSQL不是否认关系数据库,而是做为关系数据库的一个重要补充
二、NOSQL为了高性能、高并发而生,可是要求对数据一致性要求不能高
三、NOSQL典型产品memcached (纯内存,k-v),redis(持久化缓存,k-v),mongodb(文档的数据库,xml-json)
MySQL 数据库:是互联网领域里一款最重要的,深受广大用户欢迎的开源关系型数据库软件之1、由瑞典MySQL AB公司开发与维护。2008年。MySQL AB公司被SUN公司收购,2009年,SUN公司又被传统数据数据库领域大佬甲骨文(oracle)公司收购,所以,MySQL数据库软件目前属于Oracle公司,成为传统数据库领域老大的又一个数据库产品,甲骨文公司收购MySQL后,使得自身在商业数据库与开源软件领域市场占有份额都跃居第一的位置,这样的格局,引发了不少人的担心,这种担心直接致使后来的Mysql分支数据库MariaDB的诞生于发展。
MySQL 发展历史
为何选择MySQL数据库?
(1) MySQL性能卓越、服务稳定,不多出现异常宕机
(2) MySQL开放源代码且无版权制约,自主性及使用成本低
(3) MySQL历史悠久,社区及用户活跃,遇到问题能够解决
(4) MySQL软件体积小,安装使用简单,而且易于维护,安装及维护成本低
(5) MySQL品牌口碑效应,使得企业无需考虑就直接用
(6) MySQL支持多用操做系统,提供多种API接口,支持多用开发语言,特别对流行的语言有很好的支持
MariaDB 介绍 :
出如今2009年. MAriaDB数据库管理系统是MySQL数据库的一个分支,主要由开源社区维护,采用GPL受权许可。开发这个MariaDB的缘由之一是:甲骨文公司收购了MySQL后,MySQL有闭源的潜在风险,所以MySQL开源社区采用分支的方式来避开这个风险。点击查看详情
MariaDB默认的存储引擎是Maria,不是MyISAM。Maria能够支持事务,可是默认状况下没有打开事务支持,由于事务支持对性能会有影响。能够经过如下语句,转换为支持事务的Maria引擎。ALTER TABLE `tablename` ENGINE=MARIA TRANSACTIONAL=1;
五,什么是SQL?
上面我们介绍过数据库的组成部分,其中数据库管理系统能够接收一些命令,对数据文件进行添加、删除、修改、查询等操做。那么这些命令就是 SQL .
SQL:(Structured Query Language)是结构化查询语言缩写。是一门专门与数据库管理系统打交道的语言。
SQL语言:是关系型数据库的标准语言, 其主要用于存取数据,查询数据,更新数据和管理数据库系统等操做。
具体能够把SQL分为4个部分:
数据控制语言 ( DCL): 主要用于控制用户的访问权限。其中GRANT语句用于给用户增长权限,REVOKE语句用于收回用户的权限
数据定义语言(DDL):DROP、CREATE、ALTER等语句;数据库定义语言。主要用于定义数据库,表,视图,索引和触发器等。CREATE语句主要用于建立数据库,建立表,建立视图。ALTER语句主要用于修改表的定义,修改视图的定义。DROP语句主要用于删除数据库,删除表和删除视图等。
数据操做语言(DML):INSERT、UPDATE、DELETE语句;数据库操做语言。主要用于插入数据,更新数据,删除数据。INSERT语句用于插入数据,UPDATE语句用于更新数据,DELETE语句用于删除数据.
数据查询语言(DQL):SELECT语句。主要用于查询数据。
#1. 操做文件夹 增:create database db1 charset utf8; 查:show databases; 改:alter database db1 charset latin1; 删除: drop database db1; #2. 操做文件 先切换到文件夹下:use db1 增:create table t1(id int,name char); 查:show tables 改:alter table t1 modify name char(3); alter table t1 change name name1 char(2); 删:drop table t1; #3. 操做文件中的内容/记录 增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3'); 查:select * from t1; 改:update t1 set name='sb' where id=2; 删:delete from t1 where id=1; 清空表: delete from t1; #若是有自增id,新增的数据,仍然是以删除前的最后同样做为起始。 truncate table t1;数据量大,删除速度比上一条快,且直接从零开始, auto_increment 表示:自增 primary key 表示:约束(不能重复且不能为空);加速查找
六,数据库存储引擎