数据库基础
关于数据库
- 为了解决数据存储的安全性,方便数据的管理和查询,可以存储海量数据,从而设计出数据库。
- 数据库的引出就是为了更方便的对数据进行管理,它能更有效的管理数据
数据库存储的介质- 磁盘
- 内存
主流数据库
- SQL Sever:微软产品,.Net程序员的最爱,适合中大型项目
- Oracle:甲骨文产品,安全性好,适合大型项目,复杂的业务逻辑
- MySQL:并发性好,但不适合做复杂的业务,关系型数据库
- PostgreSQL:加州大学伯克利分校计算机系开发的关系型数据库
- SQLite:一种轻型数据库,适合嵌入式,它的占用资源非常低,在嵌入式设备中,可能就只需要几百K的内存
- H2:一个用于Java开发的嵌入式数据库,其本身就是一个类库
基本使用
连接服务器:
在window下以管理员身份运行cmd然后执行如下命令:
mysql -h 127.0.0.1 -P 3306 -u root -p;
一般情况下可以简写成:mysql -u root -p;
缺少 -h 127.0.0.1 默认连接的是本地
缺少 -P 3306 默认是连接3306端口号
数据库基本使用语法
-
show databases; //查看数据库
-
create databases 库名; //创建数据库
-
use 库名; //使用数据库
-
show tables; //查看所有表
-
create table student(表名称)( id int; //id为int类型,可以作为索引 name varchar, gender varchar(6) );
-
select * from 表名称; //查询表中数据,* 代表所有字段
-
insert into student(表名称) (id,name,gender) values (1,'Dyson','男'); //插入数据
SQL分类
DDL数据定义语言,用来维护数据的结构
- 代表指令:creat,drop(删除),alter(修改)
DML数据操纵语言,用来对数据进行操作
- 代表指令:insert,delete,updata
- DML中又单独分了一个DQL,数据查询语言,代表指令:select
DCL数据控制语言,主要负责权限管理的事物
- 代表指令:grant(同意),revoke(取消),commit(提交)
存储引擎
关于存储引擎(MySQL在V5.1之前默认存储引擎是MyISAM;在此之后的默认存储引擎是InnoDB)
- 数据库管理系统如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方法。
- MySQl的核心就是插件式存储引擎,支持多种存储引擎
查看存储引擎
-
show engines
常用的存储引擎介绍
- MyISAM是MySQLV5.1之前默认存储引擎。全表锁,拥有较高的执行速度一个写请求会阻塞另外相同表格的所有读写请求,并发性能差,占用空间相对较小,不支持事务,不支持外键
小Tips:什么是事务?
- 在计算机术语中是指访问可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系型数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。举例来讲:A汇100块钱给B,A减少100,B增加100,这就相当于一个事务,在这个过程当中只有有任何的错误,该事务的所有操作都要被撤销。MyISAM不支持事物就意味着当有错误出现时,不能自动的撤销事物而是需要通过程序来进行撤销操作。InnoDB是支持事物的。
小Tips:主键,外键,引索之间的关系及其作用定义
主键 | 外键 | 引索 | |
---|---|---|---|
定义: | 唯一标识一条记录,不能有重复的,不允许为空 | 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 | 该字段没有重复值,但可以有一个空值 |
作用: | 用来保证数据完整性 | 用来和其他表建立联系用的 | 是提高查询排序的速度 |
个数: | 主键只能有一个 | 一个表可以有多个外键 | 一个表可以有多个惟一索引 |
- InnoDB是MySQL默认存引擎。行级锁 ,并发能力强,占用空间是MyISAM的2.5倍,不支持全局索引(5.6开始支持),支持事务。相比MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
- MEMORY(HEAP):全表锁,使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件。MEMORY类型的表访问非常快,因为它的数据是存放在内存中的,并且默认使用HASH引索。但是一单服务器关闭,表中的数据就会丢失。
- MERGE是一组MyISAM表的组合,这些MyISAM表必须结构完全相同。MERGE表本身没有数据,对MERGE类型的表进行查询,更新,删除等操作,就是在内部对MyISAM表进行的。
- BDB提供数据安全。BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。MySQL AB与Sleepycat紧密合作工作以保持MySQL/BDB接口的质量在高水平。即使Berkeley DB其本身是非常能经受考验和非常可靠的。MySQL接口仍然被认为是第三等质量的。
- ARCHIVE存储引擎被用来无索引地,非常小地覆盖存储的大量数据。
- CSV存储引擎把数据以逗号分隔的格式存储在文本文件中。