MySQL数据库基础

登录选项的认识(连接服务器)

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值