数据库
一、什么DB和DBMS(了解)
1、DB数据库
1.1、定义
全称Data Base,是长期存储在计算机内,有组织的,统一管理的相关数据的集合
2、DBMS(数据库管理系统)
2.1、定义
全称DataBase Management System数据库管理系统,是指数据库系统中对数据进行管理的软件系统,它是数据库系统的核心组成部分。可以通过DBMS对DB进行定义、查询、更新及各种控制数据库管理系统(DBMS)是与用户,其他应用程序和数据库本身来捕获和分析数据进行交互的计算机软件应用程序
二、主流数据库分类(掌握)
1、关系型数据库
1.1、定义
是一种建立在关系模型(数学模型)上的数据库
关系型数据库以行和列的形式存储数据,行和列组成二维表,表与表之间的数据记录有关系,很多二维表又组成一个数据库,
1.2、关系模型
- 什么是关系模型
所谓的关系模型只的是建立在关系上的模型,由三个方面 - 组成
- 数据结构:数据存储的形式,二维表(行和列);
- 操作指令集合:所有的 SQL 语句;
- 完整性约束:表内数据约束(字段与字段)和表与表之间的约束(外键)
1.3、分类
- 大型数据库
IBM DB2、Oracle、Sybase - 中型数据库:
MySQL、SQL Server、PostgreSQL - 小型数据库:
Access、SQLite3等
2、非关系型(NOSQL)
2.1、概要
随着web2.0的快速发展,非关系型、分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性。NoSQL概念在2009年被提了出来。NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受。(“NoSQL”一词最早于1998年被用于一个轻量级的关系数据库的名字)NoSQL被我们用得最多的当数key-value存储,当然还有其他的文档型的、列存储、图型数据库、xml数据库等。在NoSQL概念提出之前,这些数据库就被用于各种系统当中,但是却很少用于web互联网应用。
2.2、分类
分类 | 举例 | 典型应用场景 | 数据模型 | 优点 | 缺点 |
---|---|---|---|---|---|
键值(key-value) | Redis ,Memcached | 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 | Key 指向 Value 的键值对,通常用hash table来实现 | 查找速度快 | 数据无结构化,通常只被当作字符串或者二进制数据 |
列存储数据库 | HBase | 分布式的文件系统 | 以列簇式存储,将同一列数据存在一起 | 查找速度快,可扩展性强,更容易进行分布式扩展 | 功能相对局限 |
文档型数据库 | MongoDb | Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) | Key-Value对应的键值对,Value为结构化数据 | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 | 查询性能不高,而且缺乏统一的查询语法。 |
2.3、应用场景
- 对数据库高并发读写的需求
- 对海量数据的高效率存储和访问的需求
- 对数据库的高可扩展性和高可用性的需求
2.4、对比
1、优点:
- 成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
- 查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
- 存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
- 扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。
2、缺点:
- 维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
- 不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。
- 不提供关系型数据库对事物的处理(或者比较弱)。
三、SQL
1、什么是SQL
全名是结构化查询语言(Structured Query Language),是一种ANSI(美国国家标准化组织)的标准计算机语言 SQL 语句是一种特殊的编程语言,是面向数据库的语言 使我们有能力访问数据库
2、为什么会有SQL?
在70年代末的时候,世界上就已经存在七八十种数据库,而每一种数据库都有属于自己的一套数据库操作命令。这样就显得让开发者从A数据库过度到B数据库增加了难度,甚至要重新学习一套新的操作命令。
就在那个时候,IBM公司开发出了SQL数据库操作命令标准,而Oracle数据库是世界最早支持SQL标准的数据库。从那之后,大多数公司都支持SQL语法,大部分都是在各自原有的操作命令的基础上,再兼容一套SQL语法。直到现在,基本上所有的关系型数据库都支持SQL语法
3、SQL能做什么
- 面向数据库执行的查询,可以从数据库取回数据库
- 可以向数据库中插入新的记录
- 可以更新数据库中的记录
- 可以从数据库中删除记录
- 可以创建新的数据库
- 可以在数据库中创建新表
- 可在数据库中创建视图等
4、分类
2.1、DDL(重点)
- 定义
全称(Data Definition Language 数据定义语句): 用于定义数据的结构,比 创建、修改或者删除数据库对象
注意:DDL只是对我们的表的属性(列名)进行操作,不会对具体的数据进行操作(也就是行) - 主要操作
CREATE:可以创建数据库和数据库的一些对象
DROP:可以删除数据表、索引、触发程序、条件约束以及数据表的权限等
ALTER:修改数据表定义及属性 - 主要操作对象
表 用户 视图,索引
2.2、DML(重点)
- 定义
全称(Data Manipulation Language 数据操控语句)主要是用于操作数据库对象中包含的数据 - 主要操作
select:查询数据库数据
insert:向数据库表中插入一条记录
update:用于修改已经存在的表中记录的内容
delete:用于删除表中的一条或多条记录,也可以删除数据库表中的所有记录(危险操作,开发中慎用,一般都是假删除,假删除是指在表中添加一个字段(列)作为标识,然后查询时多写一个条件来去除该记录) - 操作对象
行数据(记录)
2.4、TCL
全称(Transaction Control Language)翻译成中文 事务控制语言,事务是访问并可能更新数据库各种数据项的一个程序执行单元,负责对事物的操作主要操作命令有CREATE,COMMIT,ROLLBACK
2.3、DCL
Data Control Language,数据控制语言,主要是负责(用户)权限管理,代表指令为
grant
和revoke
等
四、基本命令
1、通过命令行连接数据库
- 语法格式
mysql -h[IP地址] -P[端口] -u用户名 -p密码
- 示例
# 本地连接数据库 mysql -u root -p # 远程连接数据库 mysql -47.106.89.6 -P3306 -uroot -proot
2、常用的操作数据库的命令
- 查看所有数据库
show databases;
- 创建数据库
# create database 数据库名 character set 字符集 # 创建数据库jx 并指定数据库中数据的编码 create database jx character set utf8;
- 使用数据库
# use 数据库名 use jx;
- 显示数据库中所有表
show tables;
- 查看表结构
desc 表名
3、图形工具
- MySql 官方 MySQL Workbench
- Navicat(收费,推荐企业开发中常用)
网友评论