与MySQL邂逅

2024-09-03 18:12
文章标签 mysql database 邂逅

本文主要是介绍与MySQL邂逅,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MySQL安装捏~

其实每次新学一样东西,安装永远是一个小坎

但是小问题啦

安装MySQL要用root账户,安装后普通用户也可以用捏

要安装MySQL先来看第一步!

改bug!

Centos

卸载不要的环境

先康康有木有捏:

649d3cc8c3a6480c8850de4fd58c6e84.png

mariadb就是MySQL,是它的拉出来的一个开源的分支

怎样关掉MySQL呢?

systemctl stop mysqld

但是我这个本来就没哈,所以关不了

d95be0f8853f425f9a793ab354c1c006.png

MySQL在卸载的时候不会删数据(也在情理之中捏)

获取yum源

emmm,我的系统还没安装yum(Ubuntu)

这样安装yum:

apt-get install build-essential

好了出bug了安不了,报错信息是

34d59f8940204c31a82fc9dd2e9ae977.png

开始搜解决方法: 

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo vim /etc/apt/sources.list

官网是这样的(已疲惫):

https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

ee90c83f0ef04656b886cdea6946e5e5.png

 然后按照官网把这个写到刚vim的那个文件下,我的是这样的:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse# 预发布软件源,不建议启用
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

 然后再这样:

sudo apt-get update

c24e48efed7741cfa2e182346600694c.png

 草(一种植物):

d3e05d3c32ee4626963523f82461c0dc.png

阿我先不装了,我换种思路吧

狗屁bug毁我青春:

30750518595142f69d8d7e6e36add28e.png

不行我先把这个说完,假设我现在用的是centos奥

Index of /232905 (mysql.com)https://repo.mysql.com/

输入这个网址,然后你会看到yum源:

8898ae7656154d61991c8a5c77b3525b.png

其中MySQL5.7是比较常用的

 要选择和系统相匹配的yum源

两个思故乡的小女孩:

5e84de47457a4b95abdcfbe40fa21773.png

45c71f6bad04430da7aa96756305cf86.png

下载到桌面上再rz到Linux上

获得rpm包

看系统中支持的yum源是这样的捏:

ls /etc/yum.repos.d/ -l

然后用rpm安装是这样的:

rpm -ivh 你刚才下载过来的包

查看是这样的:

ls /etc/yum.repos.d/ -l

 73866ccfc18a42d597d5401489bb7c7f.png

这个查看安没安装完:

yum list | grep mysql

安装的yum源最后会自动适配系统

刚都是配置,还没正式安装

yum install -y mysql-community-server

这才是安装,小砸! 

如果有报错显示秘钥过期就:

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

导入新的秘钥! 

然后安装完查看:

这是服务端:

which mysqld

9cb048491dc4403f82cbe3d0ba946a96.png

这是客户端:

f322f1f1ecc74e23a4de4604de5c44a3.png

这是启动!

 systemctl start mysqld

 这是查询!

netstat -nltp

5f182dadc2054eb8b34a8f31069e7f50.png

Ubuntu

 听说还是要先这样,更新列表:

sudo apt-get update

 然后这样安装服务器:

sudo apt-get install mysql-server

 6003633bde0b47d7a4c03616a520e3bb.png

然后这样安装客户端

sudo apt-get install mysql-client

 46d7bff8fd7947b0882eb14f0953a518.png

二者区别:

mysql-server 是MySQL核心程序将安装MySQL数据库服务器,用于生成管理多个数据库实例,持久保存数据并为其提供查询接口(SQL),供不同客户端调用。

mysql-client 是操作数据库实例的工具,允许连接到MySQL服务器使用该查询接口。

它将为您提供MySQL命令行程序。

如果只需要连接到远程服务器并运行查询,只安装mysql-client就可以了。如果是服务器只提供连接服务的只需要安装mysql-server

然后这样配置MySQL:

sudo mysql_secure_installation

然后要设个密码:

e962d95f5abc4beca3f99ec18f8ea91c.png

这是设置密码,自己选择密码强度

我就设个中等的吧,好吧它好像跳过了

那我也跳过吧,毕竟我也看不懂

cd04a059fb3f4a0c96418ccc75ab63f2.png

真是一切都完蛋了呢 a3bff8997abf4800afefe1460a5fdb6e.png

 安装完了:

0dc5fa25f2e24e01b715af7ebba4b5cb.png

 测试是这样的:

systemctl status mysql.service

 915a0627bc8343ae97cf85e0009cfd63.png

启用是这样的:

sudo service mysql start
sudo systemctl start mysql.service

 e805e8f592b54813bf444a48f5fab6cf.png

7e0b7debcb7e417094e86a880777eb00.png

喵喵喵:

netstat -nltp

 4bf99f3936e74be795cf4938b955d335.png 

登录 

登录用这个命令:

mysql -uroot -p

7cc6849240f34c148c6680eed1b7419d.png

可以改配置文件以免密登录

配置文件在这里捏:

69acfde425b74463958a8569496e00a3.png

MySQL是网络服务,可以绑定账号,默认的端口号是3306,可以改(而且一般都要改)

datadir是数据所在的路径

要设置一下编码方式和默认的搜索引擎:

character-set-server=utf8
default-storage-engine=innodedb

改完配置文件要让其重启一下以生效:

service mysql restart

好吧不可以,改不了

79c5afdc2d6f4de6a516f0d4be738bd3.png

那就干脆不改了吧

基础

在MySQL有很多选项

这是比较完备的使用:

mysql -h 127.0.0.1 -P 3306 -u root -p

不加就是默认咯

 -h是指明登录部署了MySQL服务的主机

-P是指明要访问的端口号

-u是指明用户(目前默认是root)

-p是指明需要输入密码

密码输入的时候是不回显的

什么是数据库

可以看这个:

09dea30b6b13485bb61415f29c826f0a.png

MySQL是一种网络服务 

mysql是数据库服务的客户端

mysqld是数据库服务的服务器端

mysql本质是基于C(mysql)S(mysqld)模式的一种网络服务

mysql是一套给我们提供数据存取的服务的网络程序

数据库指的是在磁盘或内存中存储的特定结构组织的数据,是在磁盘上存储的一套数据库方案

数据库服务则特指mysqld

存储用文件就行了,为何还要用数据库?

一般的文件确实提供了数据的存储功能,但文件并没提供非常好的数据管理能力(用户角度)

数据库本质是对数据内容存储的一套解决方案(给字段或要求,返回结果)

一个高端的execl表格

  所以文件保存数据的缺陷就很明显咯:

安全性不高

不利于数据查询和管理

不利于存储海量数据

程序中控制不方便

主流数据库

先来看看数据库吧

使用mysql建立一个数据库,建立一张表结构,插入一些数据,对比一哈mysql在linux中是如何表现得

这是看一眼:

show databases;

2eae23d85ceb401993aa639ce73ed99e.png

来看看这个存储数据的地方

d30ddec69ee9417fb2c750516dd74ae5.png

这样建立一个数据库:

​create database helloworld;

 93c90ae6f970498f8704d98bbbef14dd.png

能看到哩:

aaba5cf4a77f462498e607ff9252afc8.png

这也可以:

4f238d819c414a079763cffa5c5328aa.png

建立数据库本质是Linux下的一个目录

对数据库进行操作首先要选择一个数据库:

use helloworld;

9378bf6b4b6045fa87ea7536bb519e9b.png

好吧打错字了,我不想跟这世界说hello

这样创建 一个表结构:

create table student(name varchar(32),age int,gender varchar(2));

 1e619325ae9b4cfe8643db0b6e0cbc4a.png

 然后我们还可以发现多了个这个东西:

3b3e6329e7d7461b92e26fcbd1488c6b.png

 在数据库下建表本质就是在Linux下建立文件

向表中插入数据可以这样操作:

insert into student (name,age,gender)values('墨墨',18,'女');

aa97bee042ef4aaba7a77dcefc80f3f0.png

多插入几个可以这样筛选数据:

select * from student;

 da2683bcf95e47f987f0547fc507c0ad.png

 那建立各种东西的操作是谁做的呢?

是mysql服务!

数据库本质也是文件,但是这些文件不由程序员直接操作,而是由数据库服务帮我们进行操作

谈谈主流的数据库吧,受欢迎的数据库技术和生态都是很不错的!

MySQL是世界上最受欢迎的数据库,而炉石传说是世界上最好的游戏!

属于甲骨文,并发性比较好,不适合做复杂的业务,主要用于电商,SNS,论坛,优点是对简单的SQL处理效果好

新bug出现了:

0f13d0af4612484b9f39c19571552128.png

服务器、数据库、表关系 

 a8102d2d6cc4473d8821aeda8ea9edfc.png

罗列下相应关系吧:

安装数据库服务器是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库(一般一个应用一个数据库)

为了保存应用中的实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据

MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,各种系统在底层实现方面有所不同,但是基本能保证在各个平台上的物理体系结构的一致性

SQL有一些分类

DDL:数据定义语言,用来维护存储数据的结构(create,drop,alter)

DML:数据操纵语言,用来对数据进行操作(insert,delete,update)

DCL:数据控制语言,主要负责权限管理和事务(grant,revoke,commit)

 存储引擎

存储引擎是数据库管理系统如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方法

MySQL的核心就是插件式存储引擎,支持多种存储引擎

这样查询自己的存储引擎:

show engines;

b51c41aefe2541c289f07b87e3cfd3e1.png

 比较常用的是InnoDB

创建数据库的时候,有两个编码集:

1.数据库编码集        --        数据库未来存储数据

2.数据库校验集        --        支持数据库,进行字段比较使用的编码,本质是一种读取数据库中的数据采用的编码格式

数据库无论对数据做任何操作,都必须保证操作和编码是编码一致的

这是查看自己当前的字符集:

show variables like 'character_set_database';

36b08fe692ce40098e17df27e10041e9.png 

这是查看数据库支持的字符集:

show charset

17421cbfa03949dda32e24638619ad5a.png

看看自己的校验集:

show variables like 'collation_database';

 b0c1dffb7b3b4702ae2c0ba13e1bfb58.png

 这是查看校验集:

show collation;

4bed6140a05a4dc68f60f822a4c64057.png

存在这个是因为

我是真的要红温了哦:

d954d06ecbaa4fafbbaf9c260aaa860e.png

我恨你啊 

98485635bace42feb6893da0007e1016.png

你创建数据和取出数据的编码方式肯定是要一致的,我们也可以指定方式创建数据库:

create database db1 charset=utf8;

5f5e6edb4f7a41398acaf9a2364373ba.png 

这是创建一个使用utf8字符集的db2数据库

 你还可以指定校验规则:

create database db3 charset=utf8 collate utf8_general_ci;

 这是创建一个使用utf字符集,并带校对规则的db3数据库

可是这些编码方式对数据库有着怎样的影响么?

我们试试就知道勒:

0e7d60341a9344a58851378aaa8df57f.png

 这是建个表:

create table if not exists person (name varchar(20));

 722a7ba4073f4b4b8a6b2379140aa289.png

 这是看看详细的表内容:

 bae1eebfc71341888fea520c6935037e.png

 接下来插入一些数据:

d986ce8b73ad4eb7a53c8159091cef62.png

让瓦康康:

2d688edbb4e8401faad592589e868cf6.png 

这是条件的筛选:

select * from person where name='a';

be7394f3f9c94b74a4e819af4d75e933.png

可以看到它并没区分大小写

那么!我们可以用另一个看看双方区别:0867b75754c7416f8e2c69dd277d8b5b.png

 再次检索就会发现没了:

 f017d78cb9ec4770b4af3a89eec14f73.png

这就是区别哎

这是给这东西排序:

select * from person order by name;

 91b6c37c628d4664827916839c3785ac.png

但是切回数据库1捏?

8a74368b1d154415920f2c20b06a5d07.png

默认都是升序排列哦

校验集会影响比较结果

数据库删改查

数据库能创建也能删除捏

DROP DATABASE [IF EXISTS] db_name;

4b4bb09beb4b4c97ae4472a8f5b15eb4.png 

很简单捏,一条语句就搞定了

但是用上的机会很少吧

直接删库跑路吗(删除前备份下)

执行删除之后的结果是数据库内部看不到对应的数据库,对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

tips:不要随意删除数据库

这是查(我貌似说过):

acd86229961c459188da00ac44dad27d.png

显示创建语句:

show create database hellworld;

e7ac4dbd0f26469db1d05cf5135d5050.png

这个/*!80016.../的意思是,当前MySQL版本如果>那个版本就执行这句话 

 怎样修改数据库捏?

这样捏:

alter database test2 charset=gbk collate gbk_chinese_ci;

368390eef0d34d17b4420ee9bdbc219c.png

 备份和恢复

要是要对数据库进行备份,就需要:

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

试试捏:

mysqldump -P3306 -uroot -p -B test1 > test1.sql

86fc765ef0b64be2989d16d5e03b788e.png

打开看看: 

237f541b90a2438787e12d19898fa44d.png

会发现被备份的不止数据,还有操作:

8ad0bd08b48f453c88cbea35f512c982.png

那备份要发挥备份的作用捏

我现在把原来的文件删掉捏

我试试能不能还原:

source 路径

7495c94fc6864cb39e1cfa1a51b61ea8.png

收手吧阿祖

成功了捏

就是那么的简单捏

 以上是库的操作和一些基础

我们再会咯~

 

这篇关于与MySQL邂逅的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1133670

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 💻💻💻数据库约束 🔭🔭🔭约束类型 not null: 指示某列不能存储 NULL 值unique: 保证某列的每行必须有唯一的值default: 规定没有给列赋值时的默认值.primary key:

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

Java 连接Sql sever 2008

Java 连接Sql sever 2008 /Sql sever 2008 R2 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestJDBC

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G