登录选项的认识(连接服务器)
mysql -h 127.0.0.1 -P 3306 -u root -p
- -h 指明登录部署了mysql服务的主机
- -P 指明我们要访问的端口号
- -u 指明登录的用户
- -p 指明需要输入的密码
细节:
- 目前采用免密码登录(前面更改过配置文件),后续必须设置密码
- 密码输入的时候,是不会回显的
什么是数据库?
mysql是数据库服务的客户端
mysqld是数据库服务的服务器端
总结:
- mysql是基于C(mysql)S(mysqld)模式的一种网络服务
- mysql是一套提供数据存取服务的网络程序
- 数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据
磁盘文件的缺点(引出数据库文件的产生原因):
- 磁盘文件的安全性问题
- 磁盘文件不利于数据查询和管理
- 磁盘文件不利于存储海量数据
- 磁盘文件在程序中控制不方便
总结:
一般的文件确实提供了数据的存储功能,但是这种普通文件没有提供非常好的数据管理能力(用户角度)
数据库本质:对数据内容存储的一套解决方案(你给我要求,我返还给你结果)
数据库水平是衡量一个程序员水平的重要指标
见一见数据库
创建数据库
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;
总结:
- 建立数据库,本质上就是在Linux中建立一个目录
- 在数据库中建立表,本质就是在Linux中建立一个文件
- 数据库本质上是文件,只不过这些文件并不由程序员直接操作,而是由数据库服务器端(mysqld)帮助程序员操作
主流数据库
- MySQL 世界上最受欢迎的数据库,并发性好,不适合做复杂的任务
- Oracle 善于处理复杂的业务逻辑,适合大型项目,并发性一般来说不如MySQL
服务器、数据库和表之间的关系
- 安装数据库服务器,是指在机器上安装了一个数据库管理系统程序(可以管理多个数据库)
- 一般而言,开发人员会针对每一个应用创建一个数据库
- 一般会在数据库中创建多个表,以保存程序的数据
MySQL server 架构
- MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行
- 各种操作系统在底层实现方面各有不同,但是MySQL基本能够保证在各个平台上的物理体系结构的一致性
连接层:提供多个线程用于客户端和服务器交互,包含连接池与线程池
连接池:MySQL可以有多个客户端进行连接,为了解决TCP连接频繁创建销毁引起的性能损耗,所以建立了TCP连接池,采用长连接模式复用TCP连接
线程池:MySQL采用多线程的方式运行,MySQL Server也会分配一个线程来处理后面的流程,像TCP连接池一样,为了避免开销,也会创建一个线程池
SQL接口:接收SQL指令,返回查询结果
缓存缓冲区:使用键值对的方式缓存查询的结果(由于命中率太低在8的版本中被废弃)
解析器:对SQL语法进行分析,让程序读懂SQL。将SQL语句分解,验证权限,创建为语法树,如果SQL语法错误,也是在这一步给的提示。流程如下:词法分析->语法分析->分析机->抽象语法树
优化器:对SQL的执行进行优化,进行查询时,根据索引和SQL的情况,选择最合适的查询策略,这个模块是最复杂的模块
可插拔存储引擎: 存储引擎(InnoDB,MyISAM等)用于规范数据如何被高效安全的读写。可插拔主要体现在针对库或者表可以进行引擎切换,结合日志模块 (老生常谈的Bin、Relay、Redo、Undo、Error、General、Slow这些)生成相关日志
文件系统:这是操作系统层的东西,数据不是无脑存储到磁盘上的,需要文件系统的约束,它提供了对存储设备的访问、分配、保护和检索文件的方法,文件系统诸如NTFS,EXFAT,FAT32,NFS、NAS,EXT2、EXT3
SQL分类
- DDL 数据定义语言,维护存储数据的结构,如create、drop、alter
- DML 数据操纵语言,对数据进行操作,如insert、delete、update
- DQL 数据查询语言,从DML中分出,如select
- DCL 数据控制语言,负责权限管理和事务,如grant、revoke、commit
存储引擎
- 定义:数据库管理系统如何存储数据,如何为存储的数据建立索引,如何更新、查询数据等技术的实现方法
- MySQL的核心就是插件式存储引擎,支持多种存储引擎
show engines;