MySQL数据库基础

开始了解MySQL之前我们首先需要认识什么是数据库:

数据库(DataBase,即 RDBMS 里的 DB)是一个用来存储和管理数据的仓库。它的存储空间很大,并且有一定的数据存放规则。通过由行和列组成的二维表(类似 Excel 工作表)来管理数据。数据库中可以同时存储多个表。

数据表(Data Table)用来管理数据的二维表,在关系数据库中简称为表(Table),每个表由多个行(Row)和列(Column)组成。表的列(垂直方向)称为字段,是具有相同数据类型的数据集合。表的行(水平方向)称为记录(Record),相当于一条数据。记录可以包含多项信息,表中的每一列都对应于其中的某一项。

关系(Relational,即 RDBMS 里的 R)关系型数据库与非关系型数据库,MySQL即为关系型数据库的代表。关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织;非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

了解完数据库,我们需要再了解到什么是SQL:

SQL(Structured Query Language,结构化查询语言)是用来操作关系型数据库的语言,使用 SQL 可以对数据库和表进行添加、删除、修改和查询等操作。需要注意的是,SQL 语句要以分号结尾,且不区分大小写

一.MySQL简介

1.MySQL概述

MySQL是一个开源的数据库,且具有很好的跨平台性,在常见的Windows、Linux、Mac Os等操作系统上都可以运行,而SQL Server只能在Windows平台上运行。MySQL适用于Web网站系统和日志记录系统。

2.MySQL客户端-服务器架构

客户端-服务器(Client/Server)结构简称 C/S 结构,是一种网络架构,通常在该网络架构下的软件分为客户端和服务器。

服务器是整个应用系统资源的存储和管理中心,多个客户端分别各自处理相应的功能,共同实现完整的应用。在客户/服务器结构中,客户端用户的请求被传送到数据库服务器,数据库服务器进行处理后,将结果返回给用户,从而减少网络数据的传输量。

数据库管理系统按照架构可分为两类:一类是基于共享文件系统的数据库管理系统,另一类是基于客户端-服务器的数据库管理系统,而MySQL则属于后者。

3.MySQL内部基础结构

MySQL 由连接池、SQL 接口、解析器、优化器、缓存、存储引擎等组成,可以分为三层,即 MySQL Server 层、存储引擎层和文件系统层。MySQL Server 层又包括连接层和 SQL 层。

Ⅰ.连接层:即从客户端连接到服务器,验证客户端版本是否适配、用户名与密码是或否匹配和并发访问的处理

Ⅱ.SQL层:SQL 层是 MySQL 的核心,MySQL 的核心服务都是在这层实现的。

权限判断: 可以审核用户有没有访问某个库、某个表,或者表里某行数据的权限
查询缓存:通过 Query Cache(查询缓存) 进行操作,如果数据在 Query Cache 中,则直接返回结果给客户端,不必再进行查询解析、优化和执行等过程。
查询解析器:针对 SQL 语句进行解析,判断语法是否正确。
预处理器:对解析器无法解析的语义进行处理。
查询优化器:对 SQL 进行改写和相应的优化,并生成最优的执行计划,就可以调用程序的 API 接口,通过存储引擎层访问数据。

Ⅲ.储存引擎层:主要负责 MySQL 中数据的存储和提取

关系数据库中,数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)

Ⅳ.文件系统层:将数据库的数据存储在操作系统的文件系统之上,并完成与存储引擎的交互

二.MySQL数据库基本操作

1.查看数据库:

SHOW DATABASES [LIKE '数据库名'];

2.创建数据库:

CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>]
[[DEFAULT] COLLATE <校对规则名>];

ps:

<数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。
IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。
[DEFAULT] CHARACTER SET:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。
[DEFAULT] COLLATE:指定字符集的默认校对规则。

3.删除数据库:DROP DATABASE [ IF EXISTS ] <数据库名>

4.使用数据库:USE DatabaseName;

三.MySQL中的数据类型

 ps:

Char类型会自动用隐藏空格补齐长度,超过的字段截取出对应的长度进行存储

Varchar类型有多少就存多少,无需补齐;超出部分和Char一样舍去

四.MySQL常用语法

select * //查询所有字段
-- select name //指定字段名,可用逗号连接多个
from dataname //指定数据表名,可用逗号连接多个
where conditions;//筛选条件 可用and/or连接  可用>、<、= 、BETWEEN ANd等比较运算符 可连接like/not like
like conditions;//模糊匹配 %表示多个字符 _表示单个字符
limit //三种用法
//1.指定初始位置:指定查询结果从哪条记录开始显示,显示多少条记录 LIMIT 3,5
//2.不指定初始位置:记录从第一条记录开始显示。显示记录的条数由 LIMIT 关键字指定 LIMIT 4
//3.与 OFFSET 组合使用:从指定位置开始,向下条数据 LIMIT 2 OFFSET 3 由第三条数据开始,不包含第三条,向下取两条
distinct //与select共同使用,通过在 SELECT 语句中加入 DISTINCT 关键字,去除重复的记录
order by //排序 desc:降序 asc:升序 默认升序
group by //分组 注意:需要与select共同使用,有where时必须在where之后,有order by时必须在其之前
        //可与聚合函数 sum() max() min()avg()平均值count()计数 共同使用 聚合函数需在select之后
having //与GROUP BY 子句一起使用,用来过滤 GROUP BY 子句返回的分组结果集 和其他语句共同使用时
       //需要注意顺序:where --> group by --> having --> order by
update //修改数据,通常和 WHERE 子句一起使用,where设置条件
       //如果不使用 WHERE 子句,那么表中所有的记录都将被修改
 //实例: UPDATE website//表名
      //SET name = 'stack-overflow'//更新内容
      //WHERE id = 5;//更新位置
delect //删除数据,和 WHERE 子句一起使用,where设置条件
       //如果不使用 WHERE 子句,那么表中所有的记录都将被删除

五,表连接查询

join关键词:用以连接两个数据表,基本结构如下:

SELECT table1.column1, table2.column2...
FROM table1
JOIN table2
ON table1.common_column1 = table2.common_column2;

两个表中有同名的字段时,在字段名前加上表名以点号.分隔

on与where的区别:根据 ON 生成一张临时表,然后再根据 WHERE 对临时表进行筛选

left join: =左侧全集加入

right join:=右侧全集加入

union关键词:用于合并两个或者多个 SELECT 语句的结果集

union:滤掉两个结果集中重复的记录

union all:对结果集进行简单的合并

使用注意事项:
每个select语句必须持有形同数量和数据类型的字段
不同select语句的字段名不需要相同,SQL会将第一个select语句的字段名作为结果集的字段名

向上攀爬的痛苦,终会在登顶时烟消云散

——ZQY

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟0917

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值