MySQL :MySQL基本概念
MySQL :MySQL基本概念
- (一)数据库概念
- 1.主流数据库
- 2.mysql和mysqld的区别
- (二) 基本使用操作
- 登录数据库
- 使用数据库
- (三) 服务器、数据库、表关系
- (四)MySQL架构
- (五)SQL语句分类
- (六) 存储引擎
登录mysql
(一)数据库概念
数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合
普通文件也可以存储数据为什么要使用数据库呢?
文件保存数据有以下几个缺点:
文件的安全性问题
文件不利于数据查询和管理
文件不利于存储海量数据
文件在程序中控制不方便
为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。
数据库具备简单、高效、可靠管理数据的特性,可以轻而易举的对数据进行操作;数据库由两部分组成:客户端 Client、服务器 Server,是一种 基于 CS 模式的网络服务,用户只需要使用 客户端 向 服务器 发出 SQL 语句,等待结果即可,这是非常方便的。
数据库存储介质:
- 磁盘
MySQL 数据库是将数据存储在 磁盘 中,称为 磁盘数据库
磁盘数据库 将数据存储在 磁盘 中,在 持久化保存 上有明显优势,但 IO 次数势必会增多,为了提高自己的存储效率,磁盘数据库 拥有自己的缓存机制,即 高效 IO - 内存
将数据存储在 内存 中,称为 内存数据库 / 主存数据库,比如 Redis 就是这种存储模式
内存数据库 中的数据存储在 内存 中,最大的优点就是 数据读写非常快,可以大大提高操作效率;内存数据库 并非完全不使用磁盘,比如数据库的启动信息、初始数据就得存储在磁盘中,其他涉及操作的数据存储在 内存 中,直接进行运算,为了防止数据丢失,内存数据库 通常会定期将数据转存到磁盘中,确保持久化存储
磁盘数据库和内存数据库都是数据库管理系统的存储方式,它们各自有自己的特点和适用场景
1.主流数据库
- SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
- Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
- MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
- PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
- SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
- H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
2.mysql和mysqld的区别
可以看到这里有两个mysql 那么这都是什么呢??
mysql和mysqld在不同的文件中,mysql在/usr/bin/mysql 而 mysqld在/usr/sbin/mysqld中。
mysqld发现其实是个守护进程,其实这个mysqld(d表示deamon)是个数据库的服务器端,这个mysql是个数据库的客户端,所以我们平常学习到的mysql就是个基于C(mysql)S(mysqld)模式下的一种网络服务。
一般的文件确实提供了数据的存储功能,但是文件并没有提供良好的数据内容管理能力,所以数据库就是对数据内容存储的一套解决方案,当用户给到了字段或者要求,数据库服务器直接拿出结果给用户即可。换而言之,就是用户提出需求(在mysql客户端),mysqld(服务端)根据这些内容自己生成对应的解决方案返回给用户。
(二) 基本使用操作
登录数据库
mysql -u 用户 -p -h IP地址 -P 端口
如果是直接在云服器中登录,可以不指定 -h 和 -P。
mysql -u root -p
使用数据库
- 查看MySQL系统中的数据库。
//查看数据库
mysql> show databases;
上面的数据库内容是数据库系统自带的。
- 创造一个数据库
mysql> create database 数据库名;
MySQL 运行所产生的数据都存储在 /var/lib/mysql
目录中,当我们新建一个数据库后,实际就是在 mysql 目录中新建了一个目录(文件夹)
- 使用数据库
使用数据库,MySQL 中会有很多数据库,在进行 建表、查询 等操作前,需要先指明使用哪一个数据库进行操作。
mysql> use 数据库名字;
- 创建数据库表
create table student(
name varchar(32),
age int,
gender varchar(2)
);
- 向表中插入数据,以及查询表中信息
实际上创建表的本质也是在创建文件,进入 HelloWorld 目录,可以看到这个目录下确实多了一个名为 student 的相关文件。
(三) 服务器、数据库、表关系
- 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
- 数据库服务器、数据库和表的关系如下:
为什么是在这个路径下??
因为我们在 mysql的配置文件上 加上了数据库数据的默认存放处。
(四)MySQL架构
MySQL 是一个可移植的数据库,可以在几乎所有操作系统上运行,但主要在 Linux 类似的服务器后端中运行得益于优秀的分层设计,MySQL 能保证在各个平台运行时,物理体系结构的一致性,具体分层如下:
- 第一层:解决安全和连接管理
- 第二层:词法、语法分析以及 SQL 语句优化
- 第三层:完成数据的存储方案
(五)SQL语句分类
- DDL【data definition language】 数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter - DML【data manipulation language】 数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update- DML中又单独分了一个DQL,数据查询语言,代表指令: select
- DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit
(六) 存储引擎
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL
的核心就是 插件式存储引擎,支持多种存储引擎。
查看引擎也可以用 show engines \G
;
存储引擎有很多,主要记住两个就行了:InnoDB 和 MyISAM,这两个数据库几乎覆盖了 80% 的业务场景。
- InnoDB 适合需要事务支持、数据完整性和高并发性能的应用
- MyISAM 可能适用于只读数据、全文搜索或特定用途的应用