【MySQL】数据库初识

目录

一、什么是数据库

与数据结构的区别

各类软件(数据库)代表

关系型 vs 非关系型

关系型数据库

非关系型数据库

二、初识MySQL数据库

三、MySQL数据库安装

四、常用数据类型

内存 vs 硬盘

数值类型

字符串类型

日期类型

五、MySQL数据库基础

数据库的操作

创建数据库

字符集编码

 注意事项

关键字成为数据库名

IF NOT EXISTS 的作用

显示当前数据库

使用数据库

删除数据库

如何避免删库

数据库表的操作

查看当前数据库中有哪些表

创建表

查看表结构

删除表⚠️⚠️⚠️


一、什么是数据库

数据库是 一类 把很多数据组织起来方便进行后续增删改查的 软件

与数据结构的区别

数据结构,是一个学科,这个学科讨论的也是把很多数据组织起来,方便后续进行增删改查。是更抽象的,方法论层面的话题。而数据库是具体的软件了,拿过来就能直接使用,在数据库底层的实现过程中,也会用到很多的数据结构。

各类软件(数据库)代表

关系型 vs 非关系型

关系型数据库是按照比较严格比较整齐的结构来组织数据的。比如,像excel一样按照 "表格" 的形式,在一个表格里,有很多行,每一行,就称为是一条数据(一条记录),一行里,有很多列,每一列都有特定的含义,也有特定的类型。

非关系型数据库使用不太严格,更松散的方式来组织数据。比如,按照键值对/文档。每一个记录,都是一个 "文档", 一个文档中有哪些属性都是可以灵活定义的。文档之间,属性不一定非得一样。

关系型数据库

Oracle:收费贵

MySQL:开源免费

SQL Server:要花钱

SQLite:轻量

非关系型数据库

redis、MongoDB、hbase......

关系型数据库,可以针对数据的处理操作,提供更多的功能,和更多的校验能力
非关系型数据库,针对数据的处理操作,提供的功能更有限,校验能力也比较有限,效率会更高,更适合 "分布式系统" 使用

二、初识MySQL数据库

MySQL是一个"客户端-服务器"结构的程序
C(client)-S(server)
客户端,和服务器,是两个独立的程序,这两程序之间,通过 "网络" 进行通信
主动发起网络通信的一方,称为 "客户端",被动接受网络通信的一方,称为 "服务器"
(相当于两种角色)

服务器特点:

1)被动接受请求,返回响应.
2)服务器往往是要给多个客户端提供服务,而不是只给一个.

3)服务器不知道客户端啥时候发来请求,因此只能随时准备着,7*24小时运行.

三、MySQL数据库安装

安装🔗🔗🔗

安装好客户端和服务器

MySQL客户端和MySQL服务器是在同一个主机上,仍然是通过网络来进行交互的。也可以在不同主机上的(工作中常见的情况)。

咱们使用客户端编写代码,用命令行客户端交互

客户端和服务器,谁是本体?
客户端只是一个和用户交互的界面,数据都是由服务器负责 管理 存储 的,对于配置的要求更高,服务器是本体。

四、常用数据类型

内存 vs 硬盘

内存,存储空间小,访问速度快,成本更高,掉电之后数据易失
硬盘,存储空间大,访问速度慢,成本更低,掉电之后持久存储

数据库,像MySQL、Oracle这些,都是把数据存储在硬盘上的.

数值类型

INT:整型

DECIMAL(M, D):浮点数类型

双精度,精确数值,M指定长度,D表示小数点位数。

字符串类型

VARCHAR(SIZE):字符串类型

可变长度字符串

日期类型

TIMESTAMP:日期类型

五、MySQL数据库基础

SQL中不区分大小写

数据库的操作

硬盘上存储的数据,先划分成多个 "数据库"(把一些有关联的数据表,放到同一个 "数据库" 中,逻辑上的 "数据集合"),每个数据库里面又包含很多的 "表"。

创建数据库

CREATE DATABASE db_test;

● 如果系统没有db_test的数据库,则创建一个名叫db_test的数据库,如果有则不创建
CREATE DATABASE IF NOT EXISTS db_test;
● 如果系统没有db_test的数据库,则创建一个使用utf8mb4字符集的db_test数据库,如果有则
不创建
CREATE DATABASE IF NOT EXISTS db_test CHARACTER SET utf8mb4;

字符集编码

MySQL 5,默认的字符集是 "拉丁文",此时如果尝试插入中文数据,就会插入失败。此时创建数据库的时候还需要指定数据库的 "字符集"(charset)为 utf8mb4

 注意事项

1.创建数据库的时候,数据库的名字,不能和SQL中的 "关键字" 重复
2.创建数据库的名字,也不能和已有的数据库名字重复

关键字成为数据库名

创建数据库的时候,给数据库名,加上 "反引号"

IF NOT EXISTS 的作用

如果只是通过命令行,一条一条的输入sql,此时if not exists就没啥用处。
但是以后在工作中可能也会让数据库,批量执行一组sql(比如把若干sql写到一个文件中),在批量执行过程中,任何一个sql出错,都会使后续的sql无法继续执行(强制终止了)。所以为了避免创建一个已经存在的数据库而出错,导致整个要执行的内容都终止,就会加上if not exists。

显示当前数据库

SHOW DATABASES;

使用数据库

use 数据库名;

删除数据库

DROP DATABASE [IF EXISTS] db_name;

数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除。是一个非常危险的操作!⚠️⚠️⚠️

如何避免删库

1、控制权限

2、对数据库中的数据及时备份

3、拉人在旁侧监督

数据库表的操作

查看当前数据库中有哪些表

show tables;

创建表

CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype);

可以使用comment增加字段说明。示例:

create table stu_test ( id int,name varchar(20) comment '姓名', password varchar(50) comment '密码', age int, sex varchar(1), birthday timestamp,amout decimal(13,2), resume text);

查看表结构

desc 表名;

desc是describe(描述)的缩写

删除表⚠️⚠️⚠️

DROP TABLE [IF EXISTS] tb_name;

删表,往往比删库,危险性更大。直觉上来说,删库,意味着把所有的表都删了,为啥说删表比删库更危险呢?对于删库操作,一般都是第一时间就能发现问题的。程序在操作数据库时,第一时间会通过监控报警系统反馈出问题,处理的越及时,损失就越小(损失经常是按照分钟来计算的)。
而对于删表操作,就更隐蔽了。比如一个数据库有100个表,不小心删了其中一个,程序使用数据库的时候,绝大部分的逻辑都是正常的,在使用99个表的过程中,虽然数据库能访问,但是逻辑已经出问题了,不知道要过多久,才能触发一次访问到第100个表这样的操作,才会触发一次报错。
指不定又过了多久,这样的报错积累到一定程度,才触发报警…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Minio文件存储及Springboot集成

文章目录 Minio简介Minio安装使用下载Minio.exe启动访问WebUI MinIO基本概念Spingboot集成Minio设置本地Minio访问秘钥创建文件存储bucket项目pom.xml添加依赖配置文件修改Minio配置类Minio工具类定义HttpStatus定义统一返回结果定义controller类 总结 Minio简介 MinIO 是高性…

P8651 [蓝桥杯 2017 省 B] 日期问题--注意日期问题中2月的天数 / if是否应该连用

P8651 [P8651 [蓝桥杯 2017 省 B] 日期问题--注意日期问题中2月的天数 / if是否应该连用 题目 分析代码 题目 分析 代码中巧妙的用到3重循环,完美的解决了输出的顺序问题【题目要求从小到大】 需要注意的是2月的值,在不同的年份中应该更新2月的值 还有…

蓝桥杯练习代码

一、最接近的三数之和 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums [-1,2,1,-4], targe…

Go中slice和map引用传递误区

背景 关于slice和map是指传递还是引用传递,很多文章都分析得模棱两可,其实在Go中只有值传递,但是很多情况下是因为分不清slice和map的底层实现,所以导致很多人在这一块产生疑惑,下面通过代码案例分析slice和map到底是…

DeepSeek如何快速开发PDF转Word软件

一、引言 如今,在线工具的普及让PDF转Word成为了一个常见需求,常见的PDF转Word工具有收费的WPS,免费的有PDFGear,以及在线工具SmallPDF、iLovePDF、24PDF等。然而,大多数免费在线转换工具存在严重隐私风险——文件需上…

perf(es5-widget): es5-widget.js文件优化时间戳生成逻辑

这个文件内部分代码逻辑推荐语法: cacheVersion widgetcfg.versionif (cacheVersion "time") {cacheVersion Date.now ? Date.now() : new Date().getTime(); } 改善优化 后续更新对应代码行 perf(es5-widget): 优化时间戳生成逻辑 将 "&quo…

【语法】C++中string类中的两个问题及解答

贴主在学习string类时遇到过两个困扰我的问题,今天拿出来给大家分享一下我是如何解决的 一、扩容时capacity的增长问题 在string的capacity()接口中,调用的是这个string对象的容量(可以存多少个有效字符),而size()是调用的string对象现在有…

Android 应用开发中,证书、签名和加固简述

目录 一、应用证书(Digital Certificate) 二、应用签名(APK Signing) 三、应用加固(Obfuscation & Protection) 三者的关系与协同 实际应用场景 总结 四、V1、V2、V3 签名方案的区别 1. V1 签名…

SpringMVC学习(初识与复习Web程序的工作流程)(1)

目录 一、SpringMVC(框架)的简要概述。 &#xff08;1&#xff09;SpringMVC与Servlet。 &#xff08;2&#xff09;技术方向。 &#xff08;3&#xff09;最终学习目标。 二、Web程序的基本工作流程。 &#xff08;1&#xff09;工作流程。 <1>浏览器。前后端任务。 <…

yunedit-post ,api测试比postman更好

postman应该是大家最熟悉的api测试软件了&#xff0c;但是由于它是外国软件&#xff0c;使用它的高端功能注册和缴费都比较麻烦。生成在线文档分享也经常无法访问被拦截掉。 这里可以推荐一下yunedit-post&#xff0c;该有的功能都有。 https://www.yunedit.com/postdetail …

DeepSeek 助力 Vue3 开发:打造丝滑的悬浮按钮(Floating Action Button)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

基因枷锁下的太空梦 —— 千钧一发电影观后感

目录 1 人物介绍 2 电影名解读 3 电影开头 3.1 电影开头的两段话 3.2 片头设计 4 电影正文 4.1 “杰罗米”各种诡异的行为 4.2 文森特 – 失败的man 4.3 真正的杰罗米以及假基因身份证 4.4 文森特新征程 4.5 基因人的不容易 4.6 睫毛被查出有问题 4.7 文森特身份初…

RustDesk搭建公网中继服务器远控内网机器(完整版)

前情提要&#xff1a;最近要在学校实验室的服务器&#xff08;ubuntu&#xff09;上做实验&#xff0c;但是服务器在校园网里面&#xff0c;在外面的时候没法远控&#xff0c;todesk有时候有点卡顿&#xff0c;所以想试着用rustdesk进行远程控制。 参考博客&#xff1a; 官方…

Java Web-Filter

Filter 在 Java Web 开发中&#xff0c;Filter&#xff08;过滤器&#xff09;是 Servlet 规范中的一个重要组件&#xff0c;它可以对客户端与服务器之间的请求和响应进行预处理和后处理。以下从多个方面详细介绍 Java Web 中的 Filter&#xff1a; 一、概念和作用 概念&…

水果识别系统 | BP神经网络水果识别系统,含GUI界面(Matlab)

使用说明 代码下载&#xff1a;BP神经网络水果识别系统&#xff0c;含GUI界面&#xff08;Matlab&#xff09; BP神经网络水果识别系统 一、引言 1.1、研究背景及意义 在当今科技迅速发展的背景下&#xff0c;人工智能技术尤其是在图像识别领域的应用日益广泛。水果识别作为…

Spark核心之01:架构部署、sparkshell、程序模板

spark内存计算框架 一、主题 spark核心概念spark集群架构spark集群安装部署spark-shell的使用通过IDEA开发spark程序 二、要点 1. spark是什么 Apache Spark™ is a unified analytics engine for large-scale data processing. spark是针对于大规模数据处理的统一分析引擎…

Sparsely-Gated Mixture-of-Experts Layer (MoE)论文解读与Pytorch代码实现

MoE解析 阅读论文&#xff1a;https://arxiv.org/pdf/1701.06538 OUTRAGEOUSLY LARGE NEURAL NETWORKS:THE SPARSELY-GATED MIXTURE-OF-EXPERTS LAYER 本文介绍了一种名为Sparsely-Gated Mixture-of-Experts Layer (MoE) 的神经网络组件&#xff0c;旨在通过条件计算&#xf…

线性模型 - 支持向量机

支持向量机&#xff08;SVM&#xff09;是一种用于分类&#xff08;和回归&#xff09;的监督学习算法&#xff0c;其主要目标是找到一个最佳决策超平面&#xff0c;将数据点分为不同的类别&#xff0c;并且使得分类边界与最近的数据点之间的间隔&#xff08;margin&#xff09…

利用STM32TIM自制延迟函数实验

一、实验目的 掌握STM32定时器&#xff08;TIM&#xff09;的工作原理及配置方法学习使用HAL库实现微秒级/毫秒级延时函数理解定时器中断服务程序的编写规范 二、实验原理 ​定时器基础&#xff1a; STM32定时器包含向上计数器、向下计数器、中心对齐模式通过预分频器&#x…

mac安装环境

minconda https://docs.anaconda.net.cn/miniconda/install/ 注意在下载下来应该有100多兆&#xff0c;太大了应该是完整版&#xff0c;我们不需要 jdk 镜像网站下载设置环境变量&#xff1a; 终端&#xff1a;sudo vim ~/.zshrc # JDK Config JAVA_HOME/Library/Java/Java…