一、数据库概念
DBMS:数据库管理系统
二、数据库种类
(一)、关系型数据库
特性:
- 基于单一关系模型,结构化存储,有完整性约束
- 通过二维表建立数据之间的联系
- 采用结构化查询语言(SQL)做数据读写
- 操作保存数据(事务)的一致性
优点:
- 易于维护
- 使用方便
- 便于理解
- 支持SQL:用于复杂查询
缺点
- 数据读写必须经过sql解析,大量数据、高并发下读写性能不足
- 为保证数据一致性,需要加锁,影响并发操作
- 无法适应非结构化的存储
- 大量数据集中到一台服务区处理,使服务器不堪重负
- “阻抗失谐”,即数据库中存储的对象与实际的对象实体有一定的差别
- 扩展困难
- 数据库庞大,价格昂贵
常见的关系型数据库
Oracle、SQL Server、Sybase、DB2、Access、MySql
(二)、非关系型数据库
特点
- 非结构化的存储。
- 基于多维关系模型。
- 部署容易,开源免费,成本低
优点
- 处理高并发、大批量数据的能力强
- 支持分布式集群,负载均衡,性能高
- 解决“阻抗失谐”问题
- 内存级数据库,查询速度快
- 存储格式多,支持key-value形式、文档形式、图片形式
- 没有多表连接查询机制的限制,扩展性高
缺点
- 技术起步晚,维护工具以及技术资料有限
- 不支持sql工业标准
- 没有join等复杂的连接操作
- 事务处理能力弱
- 没有完整性约束,对于复杂业务场景支持较差
常见的非关系型数据库
NoSql、Cloudant、MongoDb、redis、HBase
三、基本sql语句操作
(一)、针对库(database)
增
create database 库名 charset 编码形式;
查
show databases; # 查看所有数据库
show create database 数据库名; #查看指定数据库
改
alter database 数据库名 charset gbk; # 只能更改数据编码,不能改数据库名
删
drop database 数据库名;
(二)、针对表(table)
应该在具体某一个库下面操作表,所以需先切换到指定数据库
use 数据库名;
增
create table 表名(id int,name char);
查
show tables; # 显示选定数据库下所有表名
show create table 表名; # 显示指定表名
desc(describe)表名; # 显示表结构
改
alter table 原表名 modify 新表名 字段类型(宽度); # 更改表名和字段类型(宽度)
删
drop table 表名;
(三)、针对数据(data)
增
insert into t1 values(1,'moon'),(2,'hysen'),(3,'pinking');
查
select 字段名 from 表名;
改
update 表名 set 字段名=新值 where 字段名=原值;
删
delete from 表名 where 字段名=值;
四、存储引擎
不同的应用软件处理不同类型的数据MySQL5.5版本及以上默认的存储引擎是innodb,以下是myisam
innodb:支持行锁表锁,外键,事物,安全性更高,较myisam数据更安全
myisam:仅仅支持表锁不支持行锁,查询速度较innodb更快
memory:内存引擎,将所有的数据直接放在内存,一旦断电数据全部消失
blackhole:一切存入其中的数据都会消失
create table 表名(id int,name char(16)) engine=innodb; # 指定存储引擎