【MySQL】第二弹---数据库基础全解析:从概念到实践的深度探索

个人主页: 熬夜学编程的小林

💗系列专栏: 【C语言详解】 【数据结构详解】【C++详解】【Linux系统编程】【MySQL】

目录

1. 数据库基础

1.1 什么是数据库

1.2 主流数据库

1.3 基本使用

1.3.1 MySQL安装

1.3.2 连接服务器

1.3.3 服务器管理

1.3.4 服务器,数据库,表关系

1.3.5 使用案例 

1.3.6 数据逻辑存储 

1.4 MySQL架构

1.5 SQL分类

1.6 存储引擎

1.6.1 存储引擎

1.6.2 查看存储引擎

1.6.3 存储引擎对比 


1. 数据库基础

1.1 什么是数据库

[root@host mysql]# ps ajx | grep mysql1  8380  8379  8379 ?           -1 Sl      27   0:11 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
25520 21917 21916 25520 pts/0    21916 R+       0   0:00 grep --color=auto mysql
[root@host mysql]# which mysql
/usr/bin/mysql
[root@host mysql]# which mysqld
/usr/sbin/mysqld
[root@host mysql]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name              
tcp6       0      0 :::3306                 :::*                    LISTEN      8380/mysqld         

1. 根据上面的命令结果,我们得出以下基本认知:

  • 1、mysql是数据库服务的客户端
  • 2、mysqld是数据库服务的服务器端
  • 3、mysql本质:基于C (mysql) S (mysqld) 模式的一种网络服务

2. 

  • mysql是一套给我们提供数据存取的服务的网络程序
  • 数据库一般指的是:在磁盘或者内存中存储的特定结构组织的数据 -- 将来在磁盘上存储的一套数据库方案
  • 数据库服务 --- mysqld

3. 

  • 一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的的数据(内容)管理能力(用户角度)
  • 数据库本质:对数据内容存储的一套解决方案,你给数据库服务字段或者要求,它就直接给你结果

 

存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

数据库存储介质:

  • 磁盘
  • 内存

为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。


1.2 主流数据库

  • SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
  • Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
  • PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
  • SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
  • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

1.3 基本使用


1.3.1 MySQL安装

CentOS 6.5下编译安装MySQL 5.6.14

CentOS 7 通过 yum 安装 MariaDB

Windows下安装MySQL5.7

1.3.2 连接服务器

输入:

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

-h : 指明登录部署了mysql服务的主机

-P : 指明我们要的端口号

-u : 指明登录用户

-p : 指明需要输入密码 

注意:

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

输出(需要密码):

Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

博主的版本必须输入临时密码才能登录,如果是高版本的mysql无需密码即可登录,即回车则登录成功。

临时密码查看命令

grep 'temporary password' /var/log/mysqld.log # 使用root账号

注意:

使用root账号直接输入上面命令即可,普通用户需要加sudo提权。 

输出(无需密码):

Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.44Copyright (c) 2000, 2023, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> 

注意:

  • 如果没有写 -h 127.0.0.1 默认是连接本地
  • 如果没有写 -P 3306 默认是连接3306端口号

1.3.3 服务器管理

  • 执行 win+r 输入 services.msc 打开服务管理器
  • 通过下图左侧停止,暂停,重启动按钮进行服务管理

windows下的mysql 

1.3.4 服务器,数据库,表关系

  • 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
  • 数据库服务器、数据库和表的关系如下: 

1.3.5 使用案例 

查看数据库

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

使用mysql语句之前需要先将修改临时密码才能使用。 

设置密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

安全强度,默认为中,即1,要求必须包含 数字、符号、大小写字母,长度至少为8位,因此我们想设置简单密码需要更改安全强度。

设置密码安全强度

set global validate_password_policy=0;# 将密码强度设置为低
set global validate_password_length=1;# 将密码最短长度设置为1

继续设置密码

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

运行结果 

查看数据库

mysql> show databases; # 查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

运行结果 

创建数据库

mysql> create database helloworld; # 创建数据库
Query OK, 1 row affected (0.00 sec)mysql> show databases; # 查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| helloworld         |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

 运行结果 

创建数据库表 

mysql> use helloworld; # 使用刚创建的数据库
Database changed
mysql> create table student( # 新建数据库表-> name varchar(32),-> age int,-> gender varchar(2)-> );
Query OK, 0 rows affected (0.03 sec)

运行结果  

表中插入数据 

字符输入汉字有bug

mysql> insert into student (name,age,gender) values('张三',18,'男');
ERROR 1366 (HY000): Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1

 使用以下命令查看编码

SHOW VARIABLES LIKE 'character_set%';
SHOW TABLE STATUS LIKE 'student';

修改编码前 

修改编码格式 

ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE student CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

修改编码后

改为输入英文 

mysql> insert into student (name,age,gender) values('zhangsan',18,'n'); 
Query OK, 1 row affected (0.01 sec)mysql> insert into student (name,age,gender) values('zhangsan',18,'n'); 
Query OK, 1 row affected (0.00 sec)mysql> insert into student (name,age,gender) values('zhangsan',18,'n'); 
Query OK, 1 row affected (0.01 sec)

查询表中的数据

mysql> select * from student;
+----------+------+--------+
| name     | age  | gender |
+----------+------+--------+
| zhangsan |   18 | n      |
| zhangsan |   18 | n      |
| zhangsan |   18 | n      |
+----------+------+--------+
3 rows in set (0.01 sec)

输入中文

mysql> insert into student(name,age,gender) values('张三',18,'男');
Query OK, 1 row affected (0.01 sec)mysql> select * from student;
+----------+------+--------+
| name     | age  | gender |
+----------+------+--------+
| zhangsan |   18 | n      |
| zhangsan |   18 | n      |
| zhangsan |   18 | n      |
| 张三     |   18 | 男     |
+----------+------+--------+
4 rows in set (0.00 sec)

1.3.6 数据逻辑存储 

补充mysql命令

system clear # 清空屏幕 等价于命令行中clear
mysql> quit # 退出mysql
Bye
mysql> ^DBye # 退出mysql

1.4 MySQL架构


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

1.5 SQL分类

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

        代表指令: create, drop, alter

  • DML【data manipulation language】 数据操纵语言,用来对数据进行操作

        代表指令: insert,delete,update

                       DML中又单独分了一个DQL,数据查询语言,代表指令: select

  • DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务

        代表指令: grant,revoke,commit 

1.6 存储引擎

1.6.1 存储引擎


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

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

1.6.2 查看存储引擎

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

1.6.3 存储引擎对比 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13930.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习:解码智能的“数字炼金术”

深度学习:解码智能的“数字炼金术” 1943年,当神经科学家沃伦麦卡洛克和数学家沃尔特皮茨在论文中首次提出人工神经元模型时,他们或许没有想到,这个简单的数学公式会在80年后掀起改变人类文明的技术革命。深度学习作为这场革命的…

无人机方位感知器官磁力传感器!

一、磁力计传感器的运作方式 基本原理: 磁力计传感器的工作原理基于磁场感应定律。当无人机处于地球磁场中时,磁力计可以测量地磁场的强度和方向。 磁力计通常采用三个互相垂直的磁阻传感器,每个轴向上的传感器检测在该方向上的地磁场强度…

基于SpringBoot养老院平台系统功能实现五

一、前言介绍: 1.1 项目摘要 随着全球人口老龄化的不断加剧,养老服务需求日益增长。特别是在中国,随着经济的快速发展和人民生活水平的提高,老年人口数量不断增加,对养老服务的质量和效率提出了更高的要求。传统的养…

2.7作业

手动将登录项目实现 //widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QtTextToSpeech/QTextToSpeech> #include <QPushButton> #include <QLabel> #include <QDebug> #include <QMovie> #include <QLineEd…

记录 | WPF基础学习Style局部和全局调用

目录 前言一、Style1.1 例子1.2 为样式起名字1.3 BasedOn 继承上一个样式 二、外部StyleStep1 创建资源字典BaseButtonStyle.xamlStep2 在资源字典中写入StyleStep3 App.xaml中写引用路径【全局】Step4 调用三、代码提供四、x:Key和x:Name区别 更新时间 前言 参考文章&#xff…

深度学习 Pytorch 神经网络的学习

本节将从梯度下降法向外拓展&#xff0c;介绍更常用的优化算法&#xff0c;实现神经网络的学习和迭代。在本节课结束将完整实现一个神经网络训练的全流程。 对于像神经网络这样的复杂模型&#xff0c;可能会有数百个 w w w的存在&#xff0c;同时如果我们使用的是像交叉熵这样…

vue项目如何设置默认页面

j​​​​​​​​​​​​​​​​​​​​​​​​​​​​创建一个新的vue项目并且将初始页面还原到空白项目开始 - 现实里的乌托邦 - 博客园 vue项目如何设置默认页面 • Worktile社区 创建一个vue项目并配置默认页面_vue如何设置初始展示的页面-CSDN博客 新建的vue项目…

DFX(Design for eXcellence)架构设计全解析:理论、实战、案例与面试指南*

一、什么是 DFX &#xff1f;为什么重要&#xff1f; DFX&#xff08;Design for eXcellence&#xff0c;卓越设计&#xff09;是一种面向产品全生命周期的设计理念&#xff0c;旨在确保产品在设计阶段就具备**良好的制造性&#xff08;DFM&#xff09;、可测试性&#xff08;…

基础篇05-图像直方图操作

本节将简要介绍Halcon中有关图像直方图操作的算子&#xff0c;重点介绍直方图获取和显示两类算子&#xff0c;以及直方图均衡化处理算子。 目录 1. 引言 2. 获取并显示直方图 2.1 获取&#xff08;灰度&#xff09;直方图 (1) gray_histo算子 (2) gray_histo_abs算子 (3…

Linux TCP 编程详解与实例

一、引言 在网络编程的领域中&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff09;协议因其可靠的数据传输特性而被广泛应用。在 Linux 环境下&#xff0c;使用 C 或 C 进行 TCP 编程可以实现各种强大的网络应用。本文将深入探讨 Linux TCP 编程的各个方面&…

DeepSeek本地部署保姆级教程

由于DeepSeek近期遭受攻击&#xff0c;又加上用户访问量较大&#xff0c;导致总是服务不可用&#xff0c;让人十分窝火。有没有好的解决办法呢&#xff1f;答案是自己在电脑端部署一套&#xff0c;这样就不用和别人抢着用了。另外本地部署的好处还有保护隐私与减少延迟。 如果…

文件基础IO

理解"文件" 1-1 狭义理解 文件在磁盘里磁盘是永久性存储介质&#xff0c;因此文件在磁盘上的存储是永久性的磁盘是外设&#xff08;即是输出设备也是输入设备&#xff09;磁盘上的文件 本质是对文件的所有操作&#xff0c;都是对外设的输入和输出简称IO 1-2 广义理…

C32.【C++ Cont】静态实现双向链表及STL库的list

目录 1.知识回顾 2.静态实现演示图 3.静态实现代码 1.初始双向链表 2.头插 3.遍历链表 4.查找某个值 4.任意位置之后插入元素 5.任意位置之前插入元素 6.删除任意位置的元素 4.STL库的list 1.知识回顾 96.【C语言】数据结构之双向链表的初始化,尾插,打印和尾删 97.【C…

退格法记单词(类似甘特图)

退格法记单词&#xff0c;根据记忆次数或熟练程度退格&#xff0c;以示区分&#xff0c;该方法用于短时高频大量记单词&#xff1a; explosion爆炸&#xff0c;激增 mosquito蚊子granary粮仓&#xff0c;谷仓 offhand漫不经心的 transient短暂的slob懒惰而邋遢的…

MySQL三大日志——binlog、redoLog、undoLog详解

日志是mysql数据库的重要组成部分&#xff0c;记录着数据库运行期间各种状态信息&#xff0c;能帮助我们进行很多容错及分析工作&#xff0c;其中有三大日志与我们这些开发者息息相关&#xff0c;本文将介绍binlog、redoLog、undoLog三种日志&#xff1a; 1. redoLog 1.1 为什么…

995. K连续位的最小翻转次数

目录 一、题目二、思路2.1 解题思路2.2 代码尝试2.3 疑难问题 三、解法代码逻辑回顾示例运行过程初始状态&#xff1a;遍历过程&#xff1a; 最终结果总结 四、收获4.1 心得4.2 举一反三 一、题目 二、思路 2.1 解题思路 就是滑动窗口一个一个遍历&#xff0c;遇到情况就翻转…

部署LLM模型到云端

文章目录 1 ECS 云服务器部署2 函数计算FC3 人工智能平台PAI-EAS4 大模型服务平台百炼压测实验结果显示,由于本地设备算力有限,本地部署的模型服务无法满足低延迟和高并发的需求。针对这类线上业务,可以考虑云端部署。 下面先来看看本地部署和云端部署的特点对比。 由上可…

【python】简单的flask做页面。一组字母组成的所有单词。这里的输入是一组字母,而输出是所有可能得字母组成的单词列表

目录结构如下&#xff1a; . ├── static │ ├── css │ │ └── styles.css │ └── js │ └── scripts.js ├── templates │ ├── base.html │ ├── case_converter.html │ ├── index.html │ └── word_finder.html ├── app.py ├── tree.py…

intra-mart实现简易登录页面笔记

一、前言 最近在学习intra-mart框架&#xff0c;在此总结下笔记。 intra-mart是一个前后端不分离的框架&#xff0c;开发时主要用的就是xml、html、js这几个文件&#xff1b; xml文件当做配置文件&#xff0c;html当做前端页面文件&#xff0c;js当做后端文件&#xff08;js里…

0008—常量和变量

目录 一、变量 1.1 定义变量的方法 1.2 变量的分类 1.3 使用变量 1.4 变量的作用域 1.5 变量的生命周期 二、常量 2.1 字面常量 2.2 const修饰的常变量 2.3 define定义的标识符常量 2.4 枚举常量 三、练习 一、变量 生活中的有些值是不变的&#xff08;比如&#…