MySQL的认识与基本操作

MySQL的认识与基本操作

一、认识数据库与 MySQL

1.数据库的定义

数据库是一个组织和保存数据的应用程序,其底层使用了合适的数据结构进行组织,以便进行增删改查操作。数据库把数据保存在磁盘中,实现了数据的持久化,程序重新加载时可从数据库读取以前的数据,避免数据丢失。

2.为什么使用数据库

使用数据库的主要目的是对数据进行增删改查操作,以高效地管理数据。

3.数据库与数据结构的关系

数据结构是组织数据的一种方式,而数据库则运用了一些合适的数据结构将数据组织并保存起来,主要作用是管理数据。

4. 存储介质

存储介质分为内存和外存。内存容量小、造价高、速度快,但断电后数据丢失;外存包括本地磁盘、SSD、移动硬盘、U 盘等,容量大、造价低、速度慢,断电后数据不丢失,写入后永久保存。

5.数据库生态

数据库生态丰富多样,常见的有以下几种:

关系型数据库:

ACCESS:微软 Office 集成的小型数据库,早期用于用户量小的网站,如今基本不再使用。

SQLite:小型数据库,常用于手机 App 和桌面程序,处理简单的数据存储。

SQL Server:微软推出的专业级大型数据库,这也是微软的真正意义上的大型数据库

MySQL:使用最广泛的数据库软件之一,开源免费,在中小企业中普及率极高,部分大型互联网公司也在使用。

PostgreSQL:据说效率比 MySQL 高,部分公司在使用。

Oracle:业内最强的数据库,收费,主要服务于大型公司,如世界 500 强企业、银行和证券等金融行业、能源行业、医疗行业等,这些企业对数据的安全性和稳定性要求极高。

非关系型数据库:

Redis:内存级别的数据库,也可将数据持久化到磁盘,但内存数据库功能强大,基本舍弃了持久化到磁盘的功能。

MongoDB:文档数据库

二、数据库服务

数据库服务

它被启动起来了,那么MySQL服务就启动起来了,把它配置成自启动,那么就会随操作系统自启动,7*24小时对外的提供数据库服务

在公司的生产环境(线上环境)一般是安装在一个专用的服务器上,服务器其实也是一台电脑

MySQL 可以为多个程序提供多个数据库,数据库按照不同的分类分成多张表,

表结构示例:

在MySQL的表中的一个列对应的面向对象的类的属性,而所有的列组成的一条记录叫作一个数据行

总结:

一台计算机提供的数据库服务中

可以创建多个数据库

每个数据库中有很多张表

每个数据表中有很多的数据行

每个数据行都是由很多的个列组成的
上述关系其实就是依次的包含关系:

数据库服务包含数据库,数据库包含表;表中包含行,行中包含列

三、常见的客户端工具

一、客户端工具

1.通过终端使用mysql.exe

这个是客户端工具,前文提到的mysqld是服务端工具

用终端打开:用cd命令,然后复制D盘数据目录下的bin文件,直接访问

cd表示改变目标路径的访问;cd 后面加上目标路径的地址 进行访问即可

然后输入指令

复制代码
mysql -uroot -p

解释一下:

mysql这个是指的是mysql.exe程序;

-u表示的是用户名选项,后面要紧跟写登陆用户名,默认为是root

-p表示的是用户需要输入密码

2.命令提示符

可以配置一个系统的环境变量,直接在cmd的终端上运行mysql,去配置一个系统环境变量

3.快捷方式

如果用命令行来进行访问数据库,建议大家用这个自动生成的快捷方式,最好是Unicode字符集的,默认utf-8

二、客户端与数据库服务器之间的通讯方式

对于客户端与服务端之间的交互模型,我们称之为C/S架构 c-->client s-->Server


问:客户端与服务器之间是通过网络进行交互的,并不能记得客户端访问本机的数据库服务是不是C/S架构?

虽然我们访问的是本机的服务,但是还是通过网络访问的,只不过客户端与服务器在同一台电脑上而已,每台电脑上都有一个环回网卡,本地有一个固定的IP,127.0.0.1 这个IP代表的就是本机IP

这个IP:无论本机是否有网络,这个IP始终访问的是本机地址

如果在实际工作中,连接数据库时,可以通过指定IP地址去链接相应的服务器,可以是内网的也可以是外网;但是有一个安全性的问题,如果把服务公开到公网上就有可能给黑客带来可乘之机,也可以通过防火墙和白名单,(只有白名单中的机器才可以访问目标主机)来限制可以连接服务器的机器

在公司里一般都是要部署到内网中,通过外网是连不上数据库服务器的,可以通过跳板机去连接

当前我们数据库安装完成之后,只允许本机连接,如果想要其他的机器相连接,那么就需要把其他机器的IP添加到白名单中

三、常见的图形化工具

MySQL Workbench

默认生成一个连接,连接的是本地MySQL服务

创建一个新的连接,点击上述图片中的+号就可以

我们想要创建一个新的连接,那么就可以按下面图片进行操作:

那么我们点进连接,可以去看到mysql客户端的编辑工具,那么我们可以看看该工具的界面分布:

但是我们可以也用一些其他的MySQL的编辑器:

Navicat 收费的,在业界中是非常有名的工具,很好用

DataGrip 收费的,没有社区版本

四、MySQL数据库简介

MySQL是一个关系型的数据库

是指采用了关系模型来组织数据的数据库,简单来说,关系模型指的就是二维表格模型;关系型数据库是由二维表及其他们之间的联系所组成的一个数据组织

两张二维表格通过了班级的编号来进行构建联系,一个是班级表,一个是学生表

行列式数据库其实就是关系型数据库
理解:一个数据库是由多张表来进行构成,所以这些表之间是通过某些数据来进行形成关系,从而进行连接

五、数据库操作语言

1.SQL

数据库是用来保存数据的,操作数据库要使用SQL

SQL不仅是一种标准,也是一种语言
SQL本身就是针对数据库操作的语言,和数据库是两个概念

2.SQL的分类

DDL数据定义语言,用来维护存储数据的结构 [data definition language]

代表指令: create, drop, alter

DML数据操纵语言,用来对数据进行操作 (对数据其实就是对于数据行来进行操作)[data manipulation language]

代表指令: insert,delete,update

DML中又单独分了一个DQL,数据查询语言,

代表指令: select

DCL数据控制语言,主要负责权限管理和事务 [data control language] --> DCL主要是数据库管理员,或者是运维来使用

代表指令: grant,revoke,commit

六、数据库的基础操作

1. 检查数据库

一个数据库服务中可以有多个数据库,我们操作的都是自己的库,而不是别人的库;所以在创建数据库之前,需要检查是否已经存在自己的数据库或同事已经创建的数据库。可以在 MySQL 提供的客户端工具中输入指令查看:

sql 复制代码
show databases;


提示:一些简单的指令可以用这个提供的客户端的命令行去查看,但是一些还是需要用图形化客户端来去进行查看

(1).查看当前的服务器的所有的数据库

这四个库都是非常重要的库,是MySQL自带的数据库,记录的是一些关于MySQL自身的配置,性能,系统变量信息
如果不明白它的具体作用,千万不要改动,更不要删除,如果改错了或者删错了,MySQL就无法启动了,并且如果实在没有备份的情况下,那么就只能重新安装数据库服务了

未标记的数据库,是系统自带的用于练习的数据库,示例数据库

总结

在使用数据库时,只是用自己创建的数据库,其余的不论名字如何都不要去动或操作

(2).了解语句信息

mysql> 提示符,表示的是新写的每一行SQL都以这个提示符开头

show 是一个关键字,表示的要执行的操作类型,作用显示某些信息

并且每个字符后要有空格

要显示的信息是所有数据库,databases是一个复数

以分号作为每条SQL语句的结尾,注意是英文的分号

我们在遇到较长的sql语句时,可先不写分号;按回车之后就会另起一行;继续去写未完成的SQL;直到遇见分号为止

rows 是条,6 rows表示的是查询到6条记录

set 集合,在这里表示结果是一个结果集,也就是我们也后常说的结果集

注:出现了错误提示的时候,不要慌张,认真的去看完提示信息,一般的问题都可以自己解决

当我们写大量的信息或者想要修改的时候,修改比较费劲,那么我们可以用ctrl + c来进行重新另起一行

2. 创建数据库

如果再想要创建的,那么就是用户自己创建的数据库,每一个库都要起一个不同的名字(名字不同重复)

创建数据库的语法如下:

sql 复制代码
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name 
    [create_option]...
create_option:
[DEFAULT] {
    CHARACTER SET [=] charset_name
    | COLLATE [=] collation_name
    | ENCRYPTION [=] {'Y' | 'N'}
}

上述代码中蓝色字符的都是mysql的关键字,还一个encyption这也是关键字

解释代码:

大括号表示必须要有这个关键字,里面的|是或的意思,也就是说database和schema 必须写一个,他们都表示数据库的意思;

中括号表示可有可无,也就是说是可选项,当前这里写的if not exists表示如果不存在则创建数据库;

db_name :用户自定义的内容,这里就是数据库的名字

CHARACTER SET 字符集

COLLATE 排序规则

ENCRYPTION 是否加密

这三一般同时指定多个,但是一般我们指定字符集和排序规则,

加密看项目需求

这些规则再MySQL文档中都是通用,在编程界大多数的语法描述也是用这套规则

示例:

1:创建一个 Java113 的数据库
sql 复制代码
-- 查看当前的服务器的所有的数据库
show databases;
sql 复制代码
-- 创建名为Java113的数据库
create database java113;
--CREATE DATABASE java113

大小写不敏感,看个人习惯

Query OK:执行结果,

1 row affected:表示受影响的行数, 对于成功创建一个数据库返回的就是一条成功记录(信息)

sql 复制代码
-- 检查是否创建成功
show databases;
2:如果指定的数据库不存在则创建 test_db2
sql 复制代码
create database if not exists test_db2;

第一次执行的这条SQL语句,当前是没有这个数据库的

当再次执行该条语句的时候,虽然也是执行成功,但是多了一条警告信息,这是因为执行SQL的时,数据库已经存在了

那么查看警告信息:

如果再直接输入创建同名数据库,并且不加if not exists,直接写入同名
那么这个会直接报错,但是会发现两者的错误信息都是相同的;

总结:

在真正的工作中,执行SQL语句,不是手动一条一条执行的,而是先把sql封装成一个文件,然去批量一起执行,为了不让某一条语向的错误影响整个执行流程,都会加上一些类似于if not exists的校验,防止因为某条SQL出错导致整个SQL中断执行

3:创建数据库并指定数据库和排序规则
sql 复制代码
[DEFAULT] {
 CHARACTER SET [=] charset_name  
 --> 8.0中默认的字符集是utf8mb4;5.7中默念的字符集是latin1,不能存储中文
 | COLLATE [=] collation_name  
 --> 8.0中默认是utf8mb4_0900_ai_ci,5.7中默认是utf8mb4_general_ci
 --> utf8mb4_0900_ai_ci现从8.0才开始支持
 
 | ENCRYPTION [=] {'Y' | 'N'}
 }
sql 复制代码
create database test_db03 character set utf8mb4 collate utf8mb4_0900_ai_ci;

注:创建数据库的时候,强烈建议大家手动明确认定字符集

3. 查看当前数据库服务全局的默认字符集

sql 复制代码
show variables like '%character%';

在便捷方式中的终端下执行:

客户端,连接,数据库,结果集,服务器,系统默认的utf-8的字符集

文件系统是二进制的字符集

mb3和mb4是字节存储,前者3字节,后者用4字节,所以后者能用更多的字符

在命令提示符cmd中的client的字符集时gbk

好了,那么这期内容就先到这里结束了,希望大家可以对MySQL数据库产生一个基本的认识,如果某些地方上有什么不足,欢迎大家在评论区中指正,感谢支持!

相关推荐
-SGlow-2 小时前
MySQL相关概念和易错知识点(2)(表结构的操作、数据类型、约束)
linux·运维·服务器·数据库·mysql
明月5663 小时前
Oracle 误删数据恢复
数据库·oracle
水瓶_bxt5 小时前
Centos安装HAProxy搭建Mysql高可用集群负载均衡
mysql·centos·负载均衡
♡喜欢做梦5 小时前
【MySQL】深入浅出事务:保证数据一致性的核心武器
数据库·mysql
dblens 数据库管理和开发工具5 小时前
MySQL新增字段DDL:锁表全解析、避坑指南与实战案例
数据库·mysql·dblens·dblens mysql·数据库连接管理
weixin_419658315 小时前
MySQL的基础操作
数据库·mysql
不辉放弃6 小时前
ZooKeeper 是什么?
数据库·大数据开发
Goona_6 小时前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
Olrookie7 小时前
若依前后端分离版学习笔记(三)——表结构介绍
笔记·后端·mysql