MySQL
1. 什么是数据库?
存储数据一般用文件就可以了,但是为什么还要有数据库这个概念呢?这就不得不说文件存储的几个缺点了。文件的安全性是个问题,而且还不利于查询和对数据的管理,不利于存放海量数据,文件在程序中控制也是非常的不方便,基于以上问题,这才设计出了更加利于管理数据的东西–数据库,能够更有效的管理数据,它是高效的存储和处理数据的介质。同时,数据库的水平也是衡量一个程序员水平的重要指标。
2. 主流数据库
(1)SQL Sever 微软的产品,适合中大型项目使用;
(2)Oracle 甲骨文产品,适合大型项目,复杂的业务逻辑,但并发一般不如MySQL;
(3)MySQL 世界上最受欢迎的数据库,属于甲骨文,并发性好,但不适合做复杂的业务,主要用于电商、SNS、论坛。对简单的SQL处理效果比较好;
(4)PostgreSQL 加州大学伯克利分校计算机系开发的关系型数据库,不管是私用、商用还是学术研究使用都可以免费使用、修改和分发的;
(5)SQLlite 是一款轻型数据库,它的设计目标是嵌入式,而且现在已经有很多嵌入式产品中使用了它,占用的资源非常低,在嵌入式设备中,可能只需要几百K内存就足够;
(6)H2 是一个java开发的嵌入式数据库,它本身只是一个库类,可以直接嵌入到应用项目中。
3. 基本使用
3.1 使用案例
创建数据库
create database helloworld;
使用数据库
use helloworld;
创建数据库表
create table student(
id int,
name varchar(32),
gender varchar(2)
);
表中插入数据
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
查询表中数据
select * from student;
3.2 MySQL架构
MySQL是一个可移植的数据库,几乎能在当前所有操作系统上运行,各种系统在底层实现方面各有不同,但是MySQL基本上能保证在各个平台上的物理体系结构的一致性。
(1)MyISAM 是默认存储引擎。它基于更老的ISAM代码,但有很多有用的扩展(注意MySQL 5.1不支持ISAM)。每个MyISAM在磁盘上存储成三个文件,每个文件的名字均以表的名字开始,扩展名指出文件类型。
(2)InnoDB 是MySQL数据库引擎之一,为MySQL AB 发布binary的标准之一。InnoDB由Innobase Oy公司开发,2006年5月被甲骨文公司并购。与传统的ISAM和MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务功能,类似于PostgreSQL。目前InnoDB采用双轨制授权,一是GPL授权,二是专用软件授权。
(3)Memory 表默认创建index是hash索引,虽然memory也支持btree索引,但需要指定。要是在程序中大量使用等值查询一类的SQL语句,出现大量的范围查找还是指定btree比较好。InnoDB表也支持把数据和索引完全加载到内存中,但是相比之下,memory占用的内存要小一些,并且memory全表扫描效率略高于innodb,当然并不能说innodb就不如memory,只是在读和全表扫描上。在使用memory引擎时最好不要存太大的数据,因为实在费内存,memory中char和varchar没有太大的区别。
3.3 SQL分类
(1)DDL 数据定义语言,用来维护存储数据的结构。如:create, drop, alter
(2)DML 数据操纵语言,用来对数据进行操作。如:insert, delete, update
(3)DQL 数据查询语言,属DML,对数据进行查询。如:select
(4)DCL 数据控制语言,负责权限管理和事务。如:grant, revoke, commit
3.4 查看存储引擎
show engines;
- Storage Limits 存储限制;
- Transactions(commit, rollback, etc.) 处理,汇报;
- Locking granularity 锁定粒度
- Geospatial support 地理空间支助
- index Caches 索引缓存
- Encrypted data 加密数据
- Compressed data 压缩数据
- Storage cost 存储费用
- Full text search index 全文搜索索引
- Data Caches 数据缓存
- Bulk insert speed 批量插入速度
- Cluster database support 组群数据库支持
- Replication support 复制支持
- Foreign key support 外键支持
- Backup / Point-in-time recovery 备份/实时点恢复
- Query cache support 查询缓存支持
- Update Statistics for Data Dictionary 更新数据字典的统计数据

被折叠的 条评论
为什么被折叠?



