MySQL数据库介绍
前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除
一、数据库介绍
1、什么是数据库
数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来对数据进行组织和存储的,可以通过数据库提供的多种方法来管理其中的数据。
2、数据库的种类
关系型数据库和非关系型数据库
3、生产环境常用数据库
- 关系型数据库有 Oracle、Microsoft SQL Server、MySQL/MariaDB等。
-
非关系型数据库有 MongoDB、 Memcached、 Redis、
4、关系型数据库
- 存储数据实际采用的是一张二维表(和 word 和 Excel 里表格一致)
- 市场占有较大的是 MySQL 和 Oracle 数据库,而互联网最常用的是 MySQL 数据库
- 通过SQL 结构化查询语言来存取、管理关系数据库的数据
- 在保持数据安全和数据一致性方面很强,遵循ACID理论
5、非关系型数据库
- NoSQL 数据库不是否定关系型数据库,而是作为关系数据库的一个重要补充。
- NoSQL 数据库为了灵活及高性能、高并发而生;
- 在NoSQL 数据库领域,当今的最典型产品为 Redis(持久化缓存)、MongoDB、Memcached(纯内存)等。
- NoSQL 数据库没有标准的查询语言(SQL),通常使用数据接口或者查询API。
非关系型数据库的种类:
- 键值(Key-Value)存储数据库
- 列存储(Colume-Oriented)数据库
- 面向文档的数据库
-
图形(Gtaph)数据库
二、数据库的安装
这里使用RPM包在CentOS 7中进行安装数据库;
1、环境准备
创建一个目录来存放MySQL,并移动下载的MySQL压缩包到该目录:
# mkdir /data
# mv mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz /data/
解压MySQL压缩包,并重命名文件夹:
# cd /data
# tar xvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
# mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql
2、MySQL 安装
为了使用MySQL的命令行工具,需要将MySQL的bin目录添加到环境变量中:
# echo -e "export PATH=/data/mysql/bin:$PATH" >> /etc/profile
# source /etc/profile
使用 mysql -V命令来检查MySQL是否正确安装:
[root@localhost data]# mysql -Vmysql Ver 14.14 Distrib 5.7.20...
3、配置MySQL
移除可能存在的MariaDB库,创建MySQL用户,并安装必要的库:
yum -y remove mariadb-libs
useradd mysql
yum -y install libaio-devel
初始化MySQL数据库,设置用户和基础目录:
/data/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data
更改MySQL目录的所有者为新创建的MySQL用户:
chown -R mysql.mysql /data
4、启动MySQL服务
复制MySQL服务脚本到init.d目录,配置MySQL服务文件,并设置所有者:
cd /data/mysql/support-files/
cp mysql.server /etc/init.d/mysqld
编辑MySQL配置文件,设置基础配置 :
[root@localhost ~]# echo -e "[mysqld] \nuser=mysql \nbasedir=/data/mysql \ndatadir=/data/mysql/data \nsocket=/tmp/mysql.sock \nlog_error=/data/mysql/error.log \npid_file=/data/mysql/3306.pid \nserver_id=137 \n[mysql] \nsocket=/tmp/mysql.sock" >> /etc/my.cnf
再次更改所有者,并启动MySQL服务:
[root@localhost ~]# chown -R mysql.mysql /data
[root@localhost ~]# mysqld -default-file=/etc/my.cnf
创建MySQL的符号链接,以便在任何地方都能通过 mysql
命令访问:
[root@localhost ~]# ln -s /data/mysql /usr/local/mysql
5、验证安装
创建错误日志文件和PID文件,启动MySQL服务,并检查服务状态:
[root@localhost ~]# touch /data/mysql/error.log
[root@localhost ~]# touch /data/mysql/data/localhost.localdomain.pid
[root@localhost ~]# service mysqld start
6、修改密码
'root'@'localhost' 本机的root
'root'@'%' 所有主机的root
'root'@'10.0.0.2' 10.0.0.2的root# 这条命令授予root用户在本地主机(即localhost)上对所有数据库和表的所有权限
grant all privileges on *.* to 'root'@'localhost' identified by '123';
mysql -u root -p# 授予root用户在IP地址为10.0.0.2的主机上对所有数据库和表的所有权限
grant all privileges on *.* to 'root'@'10.0.0.2' identified by '234';
mysql -h 10.0.0.2 -u root -p# 这条命令授予root用户在任何主机上对所有数据库和表的所有权限
grant all privileges on *.* to 'root'@'%' identified by '333';# 刷新MySQL的权限系统
flush privileges;
7、重置密码
# 停止MySQL服务并终止MySQL进程
[root@localhost ~]# service mysqld stop
[root@localhost ~]# killall mysqld# 以无授权表的方式启动 MySQL 服务,这允许您绕过登录认证
[root@localhost ~]# mysqld --skip-grant-tables --umyser=mysql &
[1] 3533# 启动MySQL并无密码登录
[root@localhost ~]# service mysqld start
[root@localhost ~]# mysql
# 使用新密码更新root用户密码并刷新权限
mysql> update mysql.user set authentication_string=password('123') where user='root' and host='localhost';
mysql> flush privileges;
mysql> exit
[root@localhost ~]# mysql
ERROR ...
[root@localhost ~]# mysql -u root -p
Enter password:
三、数据库基本操作
1、数据库存储引擎(扩展)
数据库存储引擎是数据库底层软件组织,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引、锁表等功能,使用不同的存储引擎,MySQL的核心就是存储引擎。
MySQL引擎功能: 除了可以提供基本的读写功能,还有更多功能事务功能、锁定、备份和恢复、优化以及特殊功能。
引擎种类:
- InnoDB存储引擎:默认引擎,最常用的。
- MyISAM存储引擎
- MEMORY内存型引擎
- Archive(归档引擎)
存储引擎查看:
mysql> show engines;
修改搜索引擎:
mysql> ALTER TABLE 表名 ENGINE=引擎;
查看MySQL当前默认的存储引擎:
msyql> show variables like '%storage_engine%';
+----------------------------------+--------+
| Variable_name | Value |
+----------------------------------+--------+
| default_storage_engine | InnoDB |
| default_tmp_storage_engine | InnoDB |
| disabled_storage_engines | |
| internal_tmp_disk_storage_engine | InnoDB |
+----------------------------------+--------+
4 rows in set (0.01 sec)
查看MySQL服务器上的版本:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.20 |
+-----------+
1 row in set (0.00 sec)
创建时候指定引擎:
mysql> create table t1(id int,manager char(10)) engine=innodb;
知识了解:
- 外键:外键的主要作用是保持数据的一致性、完整性
- 索引:索引相当于书中的目录,可以提高数据检索的效率,降低数据库的IO的压力
- 行锁定与锁表:可以将一张表锁定和可以单独锁一行的记录。为了防止你在操作的同时也有别人在操作
- 事务:事务是由一步或几步数据库的操作。这系列操作要么全部执行,要么全部放弃执行。
事务控制语句(TCL)
事务控制语言 (Transaction Control Language) 有时可能需要使用 DML 进行批量数据的删除,修改,增加。从开始执行到结束,就会构成一个事务;对于事务,要保证事务的完整性。要么成功,要么撤回。
事务要符合四个条件(ACID)
- 原子性:事务是应用中最小的执行单位,
- 一致性:事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态
- 隔离性:当涉及到多用户操作同一张表时,数据库会为每一个用户开启一个事务。各个事务的执行互不干扰,任意一个事务的内部操作对其他并发的事务都是隔离的。
-
持续性:持续性也称为持久性指事务一旦提交对数据所做的任何改变,都要记录到永久存储器中,通常是保存进物理数据库。即使数据库崩溃了,我们也要保证事务的完整性。
2、SQL语句
2.1、种类
- SQL:(Structured Query Language)结构化查询语言;用于存取数据、查询数据、更新数据和管理数据库系统,SQL语言由IBM开发
- DDL语句:(Database Define Language)数据库定义语言:数据库、表、视图、索引、存储过程;如CREATE、 DROP 、ALTER
- DML语句:(Database Manage Language)数据库操纵语言(对记录的操作):插入数据INSERT、删除数据DELETE、更新数据UPDATA
- DCL语句:(Database Control Lanaguage)数据库控制语言(和权限有关):例如控制用户的访问权限CRANT、REVOKE
- DQL语句:(Database Query Language)数据库查询语言:查询数据SELECT;
2.2、库
相当于一个目录,存放数据的;
- 库里面存放的表, 相当于是文件。
- 每一行叫做记录,除第一行。
- 每一列叫一个字段。列上面的第一个叫字段名称。
-
创建一个库:---->查看库--->进入这个库----->创建表----->查看表:查看表名,表的字段(表结 构),表里面的内容(表记录),查看表的状态----->修改表:添加字段,删除字段,修改字段-----> 修改记录(更新记录),添加记录,删除记录。各种查询,删除表,删除库。
2.3、增删改查
# 1.创建库
mysql> create database 库名;
# 2.查看数据库
mysql> show databases;
# 3.进入数据库
mysql> use 库名;
# 4.查看当前所在的库
mysql> select database();
# 5.查看当前库下所有的表格
mysql> show tables;
2.4、表
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
)[存储引擎 字符集];
# 在同一张表中,字段名是不能相同
# 宽度和约束条件可选
# 字段名和类型是必须的
(1)创建表:
创建表 create table t1(id int,name varchar(20),age int);
字段 类型 字段 类型(长度),字段 类型
mysql> create table t1(id int,name varchar(50),sex enum('m','f'),age int);
(2)查看有哪些表:
mysql> show tables;
(3)查看表结构:
mysql> desc t1;
(4)查看表里面的所有记录:
# 语法: select 内容 from 表名;
mysql> select * from t1;# *:代表所有内容
(5)查看表里面的指定字段:
语法:select 字段,字段 from 表名;
mysql> select name,sex from t1;
(6)查看表的状态:
mysql> show table status like '表名'\G ---每条SQL语句会以分号结尾,想看的清楚一
# 些以\G结尾,一条记录一条记录显示。(把表90度向左反转,第一列显示字段,第二列显示记录)使用的\G就不用添加分号了
(7)修改表名称:
# 方式一、语法:rename table 旧表名 to 新表名;
mysql> rename table t1 to t2;
Query OK, 0 rows affected (0.00 sec)# 方式二、语法:alter table 旧表名 rename 新表名;
mysql> alter table t2 rename t3;
(8)使用edit(\e)编辑------了解
mysql> \e #可以写新的语句,调用的vim编辑器,在里面结尾的时候不加分号,保存退出之后在
加“;”
-> ;
(9)删除表:
mysql> drop table 表名;
(10)删除库:
mysql> drop database 库名;
致谢
在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。
学习永无止境,让我们共同进步!!
相关文章:

MySQL数据库介绍
前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、数据库介绍 1、什么是数据库 数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织…...

向量数据库性能测试工具(VectorDBBench.com)性价比排名
排名 向量数据库(不同硬件配置) 价格/性能比 QP$(每百万次查询所花费的价格)中型数据集, OpenAI 无标量过滤 QP$(每百万次查询所花费的价格)中型数据集, OpenAI 低标量过滤 QP$(每百万次查询所花费的价格)中型数据集, OpenAI 高标量过滤 QP$(每百万次查询所花费的价…...

2024年的AI人工智能风口是Python?一篇文章告诉你为什么!
Python是一种面向对象的、解释型的、通用的、开源的脚本编程语言,它之所以非常流行,我认为主要有三点原因: 1.Python 简单易用,学习成本低,看起来非常干净; 2.Python 标准库和第三库众多,功能…...
使用SpringBoot集成CAS、应用场景和示例代码
Spring Boot与CAS集成可以为应用程序提供单点登录(SSO)功能,CAS(Central Authentication Service)是一种单点登录协议,用于通过一个中央认证服务器来进行认证,从而使用户可以通过一次登录访问多…...

python爬取某财富网
点赞的人太多了。我只能修改一下代码… 感觉不对劲啊、 过程: 点击底部的第3页,第5页,网页刷新了,但是顶部的url地址没有变。那么就是 动态加载, 就是 XHR. 直接请求api. 实验代码如下: import requestsheaders {…...

Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 之 [ 选择并训练模型 ] [ 模型微调 ] | 3/3(含分析过程)
Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 之 [ 选择并训练模型 ] [ 模型微调 ] | 3/3(含分析过程) 目录 Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 之 [ 选择并训练模型 ] [ 模型微调 ] | 3/3(含分析…...

NLP-使用Word2vec实现文本分类
Word2Vec模型通过学习大量文本数据,将每个单词表示为一个连续的向量,这些向量可以捕捉单词之间的语义和句法关系。本文做文本分类是结合Word2Vec文本内容text,预测其文本标签label。以下使用mock商品数据的代码实现过程过下: 1、…...

基于SpringBoot实现验证码功能
目录 一 实现思路 二 代码实现 三 代码汇总 现在的登录都需要输入验证码用来检测是否是真人登录,所以验证码功能在现在是非常普遍的,那么接下来我们就基于springboot来实现验证码功能。 一 实现思路 今天我们介绍的是两种主流的验证码,一…...
字节测开面筋大总结!!!!
字节测开 字节 测开 一二三面 面经字节测开实习凉经字节测开一面字节测开一面凉经字节测开一面凉经字节测开一面凉经字节测开一面凉经字节跳动测开(电商)一面字节测开实习二面字节测开面经字节测开面经字节测开实习一面字节测开一面(挂&#…...

Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建
Mindspore框架DCGAN模型实现漫画头像生成 Mindspore框架DCGAN模型实现漫画头像生成|(一)漫画头像数据集准备Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建Mindspore框架DCGAN模型实现漫画头像生成|(三&a…...
mongo-csharp-driver:MongoDB官方的C#客户端驱动程序!
MongoDB一个开源、高性能、无模式的文档型数据库,在日常项目开发中,运用也是非常广泛。 MongoDB官方也针对各门编程语言,都推出相应的客户端驱动程序,下面一起了解下C#版本。 01 项目简介 mongo-csharp-driver是 MongoDB官方C#…...

网络流量分析>>pcapng文件快速分析有用价值解析
引言 在网络安全和流量管理中,解析网络协议数据包是了解网络行为和检测潜在威胁的关键步骤。本文介绍了如何使用Python解析和分析TCP、UDP和ICMP协议的数据包,并统计端口的访问次数。本文的示例代码展示了如何处理不同协议的数据包,提取关键…...

【大模型系列篇】Vanna-ai基于检索增强(RAG)的sql生成框架
简介 Vanna是基于检索增强(RAG)的sql生成框架 Vanna 使用一种称为 LLM(大型语言模型)的生成式人工智能。简而言之,这些模型是在大量数据(包括一堆在线可用的 SQL 查询)上进行训练的,并通过预测响应提示中最…...

【Nacos安装】
这里写目录标题 Nacos安装jar包启动Docker单体Docker集群 Nacos相关配置日志配置数据库配置 Nacos安装 jar包启动 下载jar包 在官方github,根据需求选择相应的版本下载。 解压 tar -zxvf nacos-server-2.4.0.1.tar.gz或者解压到指定目录 tar -zxvf nacos-serv…...
js、ts、argular、nodejs学习心得
工作中需要前端argular开发桌面程序,后端用nodejs开发服务器,商用软件架构...
【Unity】RPG2D龙城纷争(十八)平衡模拟器
更新日期:2024年7月31日。 项目源码:第五章发布(正式开始游戏逻辑的章节) 索引 简介一、BalanceSimulator 类二、RoleAgent 角色代理类三、绘制代理角色四、模拟攻击简介 平衡模拟器用于实时模拟测试角色属性以及要诀属性的数值,以寻找数值设计的平衡性。 介于运行正式游…...
java.lang.IllegalStateException: Duplicate key InventoryDetailDO
以下总结自以下链接 Java8 Duplicate key 异常解决-CSDN博客 原因:由于我们使用了jdk8的新特性中的stream流,将list转换为map集合,但是原来的list集合中存在重复的值,我们不知道如何进行取舍,所以报错 解决方式&…...
Python使用selenium访问网页完成登录——装饰器重试机制汇总
文章目录 示例一:常见装饰器编写重试机制示例二:使用类实现装饰器示例三:使用函数装饰器并返回闭包示例四:使用 wrapt 模块 示例一:常见装饰器编写重试机制 示例代码 import time import traceback import logging from typing import Call…...

“微软蓝屏”事件引发的深度思考:网络安全与系统稳定性的挑战与应对
“微软蓝屏”事件暴露了网络安全哪些问题? 近日,一次由微软视窗系统软件更新引发的全球性“微软蓝屏”事件,不仅成为科技领域的热点新闻,更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件,源于美国电脑安全…...

2024.07纪念一 debezium : spring-boot结合debezium
使用前提: 一、mysql开启了logibin 在mysql的安装路径下的my.ini中 【mysqlid】下 添加 log-binmysql-bin # 开启 binlog binlog-formatROW # 选择 ROW 模式 server_id1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复 参考gitee的项目…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...