【MySQL】初识数据库

序言

 在接触到新知识时,相信各位都会有一种陌生以及想逃避的感觉,但是一旦克服了这种万事开头难的感觉,之后就犹如拨开云雾见天明,并且随着一步一个脚印地走下去,时间久了再回过头来看相信各位一定都会发出轻舟已过万重山的感叹,对于学习MySQL数据库服务也是如此,我不禁想问一句,你准备好迎接MySQL的旅程了吗?如果准备好了,那么接下来就开始今天初始数据库的学习吧!

一、常见概念

什么是数据库?

 数据库,字面上理解就是存放数据的仓库,更准确的说是一个存放标准化数据的智能仓库,标准化的目的就是为了让仓库更加地智能,即方便仓库批量化,规模化地管理数据,管理特指对批量数据进行增删改查操作,此外因为仓库要存储的数据是海量的,所以容量很大,所以一般仓库都建在计算机的硬盘当中。

总而言之,数据库通常是建立在硬盘当中的一个存放标准化数据,以方便进行增删改查操作的智能仓库。 再看学术角度数据库的概念,即长期储存在计算机内、有组织的、可共享的大量数据的集合。是不是就不那么难理解了呢?

拓展:

  • 数据库根据存储介质——内存和磁盘,可以分为两类,内存数据库和磁盘数据库。
  • 内存数据库,可以提供更快的数据存储和提取速度,适用于对实时性和并发度要求高的场景,但是由于一般内存断电其上存放数据都会消失,因此无法保证数据持久化存储,而且内存通常都较小,无法存储海量的数据。
  • 磁盘数据库,可以存储海量的数据且保证数据持久化存储,但是由于硬件的限制,访问数据的效率会比较低。
  • 总的来说,最好将两者结合起来平衡进行使用,将经常访问的热数据加载到内存提高访问效率,而不经常访问的数据应存储在磁盘,提高数据的持久化和提高数据存储的容量。

为啥要有数据库?

 先从历史的角度进行分析,数据库是由文件进化而来,因为文件也能存储数据,即程序员使用对应的文件接口,比如read,write等读取与写入批量化的数据,但是一旦涉及到"海量"的数据,程序员头估计都炸了,头发熬没估计都处理不完,发展到这个阶段,于是就会有人提出干脆写一款专门的软件,解决这个问题,于是数据库应运而生。

 除此之外,文件之所以被数据库替代还有类似地,遍历查找数据效率低;管理数据不方便;不安全,比如没有备份,一旦覆盖了就找不回了;控制不方便,写入的数据不标准,比如格式有问题,一小心写错了之类的等问题,而数据库则可解决以上文件致命的缺点,因此数据库代替文件是历史发展的必然。

什么是数据库服务?

 所谓数据库服务,即给用户开一个智能仓库,把数据放进来,方便之后进行管理。所谓服务,一方面指的是面向的对象是客户或者用户,一方面指的是应用软件的功能。除此之外,因为数据库可是存在硬件当中的,而操作系统是硬件的老大,因此要使用硬件必须要经由操作系统,也就意味着上层必须通过系统调用接口,设计出一款对应的数据库应用软件,从而才能让用户使用数据库的相关功能。

常见的服务类型:

  • 安装和配置软件,配置相应的参数,满足特定需求。
  • 备份和修复数据,防止数据丢失,以及必要时恢复历史数据。
  • 性能优化,提升访问的速度以及提高数据库的性能。
  • 安全管理,设置权限,避免非法用户连接和篡改数据。
  • 监控和维护,保障数据库的稳定可靠。

拓展:

  • 数据库智能的主要原因是采用了合适的数据结构对数据进行管理,最常使用的是B+树。
  • 如果对B树系列有兴趣可见博客——https://blog.csdn.net/Shun_Hua/article/details/138505124。

数据库管理系统有哪些?

  • 喜闻乐见的MySQL,世界上最受欢迎的数据库,开源免费,并发度好,适用于简单业务的处理,主要应用于电商,社交网络,论坛等领域,软件属于甲骨文——全球领先的数据库软件供应商。

  • 对口银行的Oracle,付费,适合大型项目,复杂的逻辑,也是甲骨文的软件,不过并发度相比较MySQL略差,主要应用于企业,大型应用,银行等对数据比较敏感的场景中。

  • 学校开发的PostgreSQL,由加州大学伯克利分校计算机开发,免费开源,以可靠性、稳定性和拓展性高闻名,主要应用于大型应用和数据密集型应用等领域当中。

  • 轻量小型的SQLite,轻型的数据库,是一个小型的C库,可直接与应用程序相连,主要应用于嵌入式设备,小型的Web程序等场景中。

  • 微软独家的SQL Sever,微软开发,.Net程序员的最爱,主要应用于网站、管理系统等中大型规模的项目当中。

  • Java实现的H2,嵌入式的轻量级数据库,本身是一个类库,主要应于开发和测试以及小型应用的数据存储。

拓展:

  • 关系型数据管理系统(Relational Database Management System),简称RDBMS,简单理解就是使用类似Excel的二维表格的形式对数据进行组织和管理,上述提及的管理系统都属于此类。
  • 非关系型数据管理系统(Not Only SQL),简称NOSQL,即不局限于关系数据库组织数据的形式,而是采用更加宽泛和灵活的方式组织数据,常见的有MongoDB,Redis等,感兴趣的读者可自行拓展了解。

到这里想必对数据库有了一个大致的认识,那么在下文将挑选出最受欢迎的MySQL带领大家认识和使用数据库的相关概念和基本操作。

二、初始MySQL

1.框架

先给出图解,下面进行文字分析。
在这里插入图片描述

  • 首先MySQL分为服务端和客户端,服务端是在服务器上 7 ∗ 24 7*24 724不停的运转给客户提供服务,客户端使用的不同软件接入数据库连接到服务端使用其提供的数据存储服务。
  • 然后服务端提供数据存储,数据备份,保障数据安全,避免非法用户连接和篡改数据,以及服务性能稳定等功能。
  • 除此之外服务端要给大量的用户提供服务,因此提供了连接池,处理连接,提高IO的并发度,同时可以实现认证保障安全。
  • 而且服务端有程序员也要对数据进行处理,要使用相应的接口来完成,经由语法分析器,优化器和缓存器处理之后,交给下层完成具体的任务。
  • 接着根据不同的业务场景,管理数据的方式可能互不相同,因此要选择合适的存储引擎,一般来说常用的是MyISAM和InnoDB。
  • 最终由底层的文件系统完成对数据文件的更新,删除,查找等操作,并持久化的存储数据文件。

补充:上述的SQL接口,也就是SQL语句,是一种程序员与数据库交互的语言,大体上可以分为三类。

  • DDL,数据定义语言,用于维护管理和创建表结构,常见的有create,drop,alter。
  • DML,数据操纵语言,用于对表内容的增删查改,常见的有update,insert,delete。
  • DCL,数据控制语言,用于对权限和事务的管理,常见的有commit,grant,revoke。
  • 巧记,前面的D和后面的L都意为Data和Language,只需记中间的D(define),M(manipulation),C(control)即可。

总的来说,MySQL是一套服务端与客户端交互的软件,多拓展一点,软件是处于用户层的,因此是无法直接操作硬件的,只能通过操作系统暴露给上层的系统调用接口来进行完成相应的功能,从而实现数据库的功能。

说明:

  1. 学习和下载MySQL需要自备一个小型服务器,不过可以上网白嫖,当然也可以付费,大概一年一百多,此处下载这里就不在赘述了,根据服务器版本搜索相应的教程即可,下面我们直接进入正题——如何使用MySQL。
  2. MySQL本质是一种基于CS模式下的网络服务,MySQL客户端的应用程序为mysql,服务端的应用程序为mysqld

2.校验与配置

  • 查看服务端与客户端
which mysql;which mysqld;

在这里插入图片描述

  • 拓展:mysqld是服务端,mysql是客户端,且客户端连接到服务端一般是在内网中进行的,因为暴露在公网当中是十分危险,容易被黑客攻击,如果被攻击了,就可能导致重要的数据泄漏,甚至数据被篡改。
  • 查看MySQL进程
ps axj | head -1;ps axj | grep mysql | grep -v grep;

在这里插入图片描述

  • 查看连接状态
netstat -naltp | grep mysqld;

在这里插入图片描述

  • 说明:MySQL采用的是TCP连接保证可靠性,端口号3306支持的是默认传统版本的MySQL连接,在MySQL8.0之后引入X协议,设置33060为其默认端口,两个端口分别应用于不同的场景支持不同的服务。
  • 查看启动状态
systemctl status mysql

在这里插入图片描述

  • 停止服务
systemctl stop mysqld 

在这里插入图片描述

  • 启动服务
systemctl start mysqld 

在这里插入图片描述

  • 配置信息

博主是在unbuntu22.04下的,所以要在/etc/mysql/mysql.conf.d/下的mysqld.cnf下进行配置,Centos版本可找到my.cnf或者文件,一般在/etc/mysql/下进行配置。

[mysql]
#设置默认端口号
port=8080
#设置字符集
character-set-server=utf8
#设置存储引擎 
default-storage-engine=innodb
#设置数据存储路径
datadir=/var/lib/mysql

将上述配置信息cv到配置文件下,然后重启mysql服务使之生效即可,还有其他的配置信息可见下面的官方文档查看。

systemctl restart mysql

在这里插入图片描述

说明:更多的配置信息请见官方文档——https://dev.mysql.com/doc/refman/8.3/en/system-variable-privileges.html

通过如上命令,可以帮助检查MySQL是否装好以及帮助启动和关闭MySQL服务,以及进行配置,总之准备工作完成之后,接下来便可连接到MySQL服务端进行使用了。

3.基础命令

  • 连接到mysqld
mysql -h localhost -P 3306 -u root -p
  • -h,指的是所连的主机的地址,一般指的是localhost或者是127.0.0.1。
  • -P,指的是端口号,默认的是3306,可以根据配置文件自行设置,一般改为其它的更为安全。
  • -u,指的是用户,这里采用的是超级用户的方式进行登录。
  • -p,指的是密码,上述命令按下回车之后,会提示输入密码。

在这里插入图片描述

说明:第一次root用户登录一般是没有密码的,之间按回车即可。

  • 查看存储引擎
 show engines;

在这里插入图片描述

  • 查看数据库

在这里插入图片描述

说明:数据库本质上就一个目录,在mysql下存放在/var/lib/mysql路径下。

在这里插入图片描述

  • 创建数据库
create database [数据库名称];

在这里插入图片描述

说明:创建一个数据库本质上就是创建一个目录。

在这里插入图片描述

  • 使用数据库
use [数据库]

在这里插入图片描述

  • 创建表
create table [表结构]#说明:后面如何创建表结构会细讲的,此处只起到"看一看的效果"。

在这里插入图片描述

说明:实际上数据库中创建一张表其实就是,在目录下创建一个文件。

在这里插入图片描述

  • 查看所有表
show tables;

在这里插入图片描述

  • 查看指定表结构
desc [表名]

在这里插入图片描述

  • 插入数据

insert into [表名] valuse('列值','列值'),...,...; 
#说明:此处是进行全列插入,同理也只起到"看一看的效果"。

在这里插入图片描述

  • 查看数据
select * from [表名];
#说明:同上。

在这里插入图片描述

  • 删除表
drop table [表名]

在这里插入图片描述

  • 删除数据库
drop database [表名]

在这里插入图片描述

总结

到这里我们已经完成了对数据库相关概念,流行的数据库管理系统的认识,以及数据库的配置和检验命令,最终使用MySQL的相关命令简单的使用和理解数据库的原理。总而言之,本篇文章的对于数据库初始的任务差不多已经完成了。我是舜华,期待与你的下一次相遇!

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

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

相关文章

【vue-4】遍历数组或对象v-for

1、遍历数组 <ul><li v-for"(value,index) in web.number">index>{{index}}:value>{{value}}</li> </ul> 知识点&#xff1a; <ul>标签定义无序列表 举例&#xff1a; <ul><li>Coffee</li><li>Tea…

本地部署Whisper实现语言转文字

文章目录 本地部署Whisper实现语言转文字1.前置条件2.安装chocolatey3.安装ffmpeg4.安装whisper5.测试用例6.命令行用法7.本地硬件受限&#xff0c;借用hugging face资源进行转译 本地部署Whisper实现语言转文字 1.前置条件 环境windows10 64位 2.安装chocolatey 安装chocol…

java项目级云MES源码(制造执行系统) springboot + vue-element-plus-admin生产制造业MES系统源码

java项目级云MES源码&#xff08;制造执行系统) springboot vue-element-plus-admin生产制造业MES系统源码 MES系统通过信息传递对从订单下达到产品完成的整个生产过程进行优化管理。当工厂发生实时事件时&#xff0c;MES制造执行系统功能的发挥重点体现在及时做出反应、报告&…

家政保洁服务小程序怎么做?家政公司快速搭建专属小程序

在数字化时代背景下&#xff0c;家政保洁服务行业也迎来了线上转型的新机遇。家政保洁服务小程序&#xff0c;作为一种新型的线上服务平台&#xff0c;不仅能够提升家政公司的服务效率&#xff0c;还能为顾客提供更加便捷的预约上门服务体验。那么家政保洁服务小程序怎么做呢&a…

nginx 安全配置

1、前言 前后端分离后&#xff0c;nginx 作为跨域转发工具在日常应用中越来越广泛&#xff0c;它的安全性不能不能忽略。 2、nginx 安装相关说明 2.1 直接下载安装包 在nginx官网下载编译好的安装包&#xff0c;链接地址为nginx: download。如果是linux系统&#xff0c;直接使…

【umi-max】初识 antd pro

修改端口号 根目录下的 .env 文件&#xff1a; PORT8888目录结构 (umijs.org) 新增页面 在 umirc.ts 中进行配置。 新增页面 - Ant Design Pro 这里有一个配置 icon:string&#xff0c;可以在菜单加 icon 图标&#xff0c;默认使用 antd 的 icon 名&#xff0c;默认不适用二…

大咖论道,智慧档案编研知识共享

关注我们 - 数字罗塞塔计划 - 本期直播全程“回放”&#xff0c;主题分享以视频形式&#xff0c;专家们的观点以文字形式&#xff0c;便于细读和收藏。 一、主题分享 详细视频请在 公众号 数字罗塞塔计划 中观看 二、大咖论道 以下内容整理来自直播间&#xff0c;上海市…

多模态MLLM都是怎么实现的(9)-时序LLM是怎么个事儿?

时序预测这东西大家一般不陌生,随便举几个例子 1- 金融,比如预测股票(股市有风险,入市需谨慎),纯用K线做,我个人不太推荐 2- 天气,比如预测云图,天气预报啥的 3- 交通,早晚高峰,堵车啥的,车啥时候加油,啥时候充电之类的 4- 医疗,看你病史和喝酒的剂量建模,看你会…

软件测试经理工作日常随记【6】-利用python连接禅道数据库并自动统计bug数据到钉钉群

测试管理_利用python连接禅道数据库并统计bug数据到钉钉 这篇不多赘述&#xff0c;直接上代码文件。 另文章基础参考博文&#xff1a;参考博文 加以我自己的需求优化而成。 统计的前提 以下代码统计的前提是禅道的提bug流程应规范化 bug未解决不删除bug未关闭不删除 db_…

前端项目使用docker编译发版和gitlab-cicd发版方式

项目目录 app/ ├── container/ │ ├── init.sh │ ├── nginx.conf.template ├── src/ ├── .gitlab-ci.yml └── deploy.sh └── Dockerfile └── Makefilecontainer目录是放nginx的配置文件&#xff0c;给nginx镜像使用 .gitlab-ci.yml和Makefile是c…

什么是死锁,如何解决?

一、问题解析 死锁是指两个或两个以上的进程&#xff08;或线程&#xff09;在执行过程中&#xff0c;由于竞争资源或者由于彼此通信而造成的一种阻塞的现象&#xff0c;若无外力作用&#xff0c;它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁&#xff0c;这些…

Vue热更新出现内存溢出

Vue热更新出现内存溢出 vue-cli2遇到此问题的解决办法&#xff1a;vue-cli3遇到此问题的解决办法&#xff1a;方法一&#xff08;已测试ok&#xff09;方法二&#xff08;未尝试&#xff09; 开发项目有一段时间了&#xff0c;随着项目越来越大&#xff0c;打包的时间也相应的变…

用大模型搭建一个自己的新闻小助手

背景 信息快速增长的时代&#xff0c;及时获取到有价值的资讯是一件很必要的事情。已经有各类新闻app和获取信息的渠道了&#xff0c;为什么还需要在构建一个小助手来获取新闻资讯呢&#xff1f;其实原因很简单各类新闻app服务的是具体一类人群&#xff0c;个人和人群还是有偏…

python练习题-反转一个只有三位数的整数

【问题描述】&#xff1a;反转一个只有三位数的整数 [示例]&#xff1a;123 321 完整代码如下&#xff1a; nint(input()) if n<100 or n>999: print("请输入三位数&#xff01;") else: gen%10 shin//10%10 bain//100 m100*ge10*shibai…

瓦罗兰特账号怎么注册 瓦罗兰特延迟高用什么加速器

《瓦罗兰特》&#xff08;Valorant&#xff09;是由拳头游戏&#xff08;Riot Games&#xff09;开发并发行的一款免费的多人在线第一人称射击游戏&#xff08;FPS&#xff09;&#xff0c;它结合了传统的硬核射击机制与英雄角色的能力系统&#xff0c;为玩家提供了独特的竞技体…

5.28 学习总结

一.CSS学习(一) 一、CSS简介 1、什么是CSS CSS&#xff1a;Cascading Style Sheet 层叠样式表是一组样式设置的规则&#xff0c;用于控制页面的外观样式 2、为什么使用CSS 实现内容与样式的分离&#xff0c;便于团队开发样式复用&#xff0c;便于网站的后期维护页面的精确…

B站广告推广引流哪里能做?

哔哩哔哩&#xff08;B站&#xff09;作为国内领先的年轻人文化社区与视频平台&#xff0c;其独特的二次元文化氛围和高度活跃的用户群体&#xff0c;成为了众多品牌寻求突破、触达年轻消费群体的理想阵地。在这样一个充满活力但又竞争激烈的平台上有效推广&#xff0c;吸引并留…

ARM架构与分类

ARM架构&#xff0c;曾称进阶精简指令集机器&#xff08;Advanced RISC Machine&#xff09;更早称作Acorn RISC Machine&#xff0c;是一个32位精简指令集&#xff08;RISC&#xff09;处理器架构。 主要是根据FPGA zynq-7000的芯片编写的知识思维导图总结&#xff0c;没有会…

Java学习四

Random 随机数 数组 静态初始化数组 数组在计算机中的基本原理 数组的访问 什么是遍历 数组的动态初始化 动态初始化数组元素默认值规则 Java内存分配介绍 数组在计算机中的执行原理 使用数组时常见的一个问题 案例求数组元素最大值 public class Test1 {public static void ma…