当前位置: 首页 > article >正文

MySQL开篇

文章目录

  • 一、前置知识
    • 1. MySQL的安装
    • 2. 前置一些概念知识
  • 二、MySQL数据库操作
    • 2.1 概念
    • 2.2 数据库的操作
      • 2.2.1创建数据库命令
      • 2.2.2 查看数据库
      • 2.2.3 选中数据库
      • 2.2.4 删除数据库
  • 三、MySQL数据表操作
    • 3.1 概念
    • 3.2 数据表的操作
      • 3.2.1 创建表


一、前置知识

1. MySQL的安装

MySQL 是一款基于 SQL 语言的开源关系型数据库管理系统(RDBMS),最初由瑞典 MySQL AB 公司开发,现为 Oracle 旗下产品。它以表格形式组织数据,通过结构化查询语言实现对数据的存储、检索和管理,广泛应用于中小型网站、企业级应用及云原生环境。

在学习这段MySQL数据库首先得对软件进行安装,常见的软件数据软件有Oracle、MySQL、MySQLserver等软件,这里小编使用的主要是mysql这个软件,这个软件安装具体教程可以参考博哥哔哩哔哩中的教程:mysql安装视频

2. 前置一些概念知识

MySQL是一个“客户端-服务器”结构的软件,那么什么是客户端,什么是服务器呢?

客户端
客户端(client):主动发起请求的一方。
客户端给服务器发起的数据,称为请求(Request)。
所谓的客户端其核心角色是通过网络协议与服务器通信,将用户操作转化为指令,接收并展示服务器返回的结果。就比如你登录qq,输入账号和密码给服务器那头,然乎服务器根据你的账号和密码是否正确返回登录成功和界面等信息。

服务端
服务器(server):被动接收请求的一方。
服务器给客户端返回的数据,称为响应(Response)。

分布式系统
分布式系统:一台机器,处理的数据是有限的,往往就需要引入多台机器相互配合,完成更复杂的操作。在分布式系统中,机器之间也是需要进行网络通信的。
在这里插入图片描述
在上面图看来,一台机器不仅可以作为客户端也可以作为服务器的。

在学习mysql中,mysql的主体就是服务器,在服务器这边来负责存储和管理数据的(也就是CRUD增删查改)。那么存储数据存储在哪个地方呢?答案是电脑硬盘上。
那么什么是硬盘呢,这就需要讲解一下一台电脑的核心构造了。

一台电脑的硬件设备
一台电脑里面包含的核心的硬件设备主要有以下几个部分。
1、cpu(电脑最核心的部分,中央处理器)
2、主板
3、内存:访问速度快,但是空间小,存储的数据可能因为掉电而容易丢失数据。价格昂贵。
4、硬盘:访问速度慢,但是空间大,存储是数据更加持久不易丢失。价格便宜。
5、散热器
6、电源
7、机箱
8、显卡
9、外设:显示器、键盘、鼠标。
而在电脑上打开设置:RAM则是内存。
在这里插入图片描述
而像这些D盘C盘等,称为硬盘。
在这里插入图片描述


二、MySQL数据库操作

2.1 概念

安装好Mysql后,我们学习的主要是命令行(如 MySQL 的 mysql 命令)而不是图形化界面(如 MySQL Workbench)。操作数据库的命令,也成为SQL语句,它可以理解为一种编程语言。想要进行操作数据库,那我们就得了解以下什么是数据库。

数据库操作
此处是数据库指的是一个逻辑上的数据集合,一个MySQL服务器程序,可以在硬盘上组织和保存很多数据。MySQL服务器是一个关系型数据库,通过一个个表来组织的,所谓的表就跟我们日常使用的excle表很相似。一个mysql服务器上,有很多很多的表,把有关联关系的一些表放到一起,就构成了一个数据集合,此时这个数据集合就被称为数据库。而一个MySQL服务器上可以有很多个这样的数据库的。

2.2 数据库的操作

数据库主要有四种操作:

  1. 创建数据库
  2. 查看数据库
  3. 选中数据库
  4. 删除数据库

2.2.1创建数据库命令

通过上面的概念,学习MySQL我们主要通过一堆命令进行存储和管理数据的。而创建数据库的命令为

create database + 数据库名字 + 分号

注意:create database这两个单词就是SQL中含有特定意义的单词,也被称为关键字和Java关键字是一样的。数据库中的数据库名、表名、列名等都不能和关键字重复,如果确实想要让表名和列名和关键字一样,可以使用反引号·也就是左上角ESC键下的那个符号来把表名和列名进行引起来。当然这两个关键字也可以大写。在sql中大小写是不敏感的,既可以用大写,也可以用小写。此时就开始创建数据库.
在这里插入图片描述
然后进行创建数据库:

在这里插入图片描述
因为数据库在创建的时候不能进行重复,否则会进行报错。补充一下:数据库是支持换行操作的。分号为一条SQL语句结束。
在这里插入图片描述
有人会想这里报错就报错了,我在重新创建一个不就好了,当然在实际学习过程中是可以直接创建的。但是在企业实际工作中,很多时候是把一系列sql语句写到一个文件当中,批量执行的,而很少这样一条一条的进行执行的。在批量执行的情况下,如果一条sql语句报错,后面的sql语句就无法继续执行了,那么为了避免这种情况的出现,在创建数据库的时候只需要加上一个修饰符来应对上述问题就不会出现报错了。

语法形式:create database if not exists + 数据库名字 + 分号
这句话很好理解,这就不需要小编给大家翻译了。

在这里插入图片描述

除此之外,创建数据库,指定字符集
在创建数据库的时候,可以手动指定一下字符集的。

语法形式:charset + 字符集名字 或者 character set + 字符集的名字。

比如:
在这里插入图片描述

为什么会提供这种方法呢?因为MySQL默认的字符集是拉丁文,不支持中文,但是在存储数据到数据库当中,我们需要保存中文类型的数据,那么我们在创建数据库的时候,手动指定编码方式为支持中文的编码方式的字符集:如utf8,GBK。谈到字符集,小编在这里讲解一下字符集。

字符集在小编认识的过程中,只认识了三个:GBK、UTF8、Unicode。

  1. GBK‌‌:中国制定的‌中文扩展编码标准‌,兼容 GB2312,支持约 2.1 万汉字及符号。但是它仅支持中文、部分日韩汉字及符号,不适用于多语言环境。一个汉字在使用GBK编码的方式下是占两个字节。其实在学习c语言的时候我们使用的就是GBK,在使用VS的时候,在windows进行书写代码,windows简体中文版默认的字符集是GBK,Vs默认的字符集是和系统一致的,在这种情况下,一个汉字是占2个字节的。
  2. utf8:Utf8使用一种‌变长编码实现‌,使用 1~4 个字节表示字符,兼容 ASCII。:ASCII 字符(如 A)占 1 字节,与 ASCII 编码完全一致。因此不仅可以表示中文也可以表示世界上任何以中国语言文字,在utf编码格式,汉字是占3个字节。
  3. unicode:是给一个字符进行编码的,但是无法给字符串进行编码。比如把多个unicode编码的字符放到一起构成字符串,就可能出现乱码,无法区分字符和字符之间的边界。于是基于unicode就演化出一些可以给字符串编码的版本utf8.

在mysql当中上面的语句utf8是残本,也就是说是不完全的utf8,它少了一些emoj表情。后来,mysql创建了utf8mb4,也就是完全体utf8。

2.2.2 查看数据库

列出当前mysql服务器上一共有那些数据库。

语法:

show databases;

在这里插入图片描述

2.2.3 选中数据库

数据库最关键的操作就是针对表进行增删查改,表是从属于数据库的(数据库中存在很多表)。要针对表进行操作,就需要先把哪个数据库的表指定清楚。

语法:

use 数据库名;

在这里插入图片描述

2.2.4 删除数据库

删除操作,删除的不仅仅是数据库,而且也删除了数据库中所有的表和表中的数据,在企业上这是一个非常危险的操作。因为在线上数据库当中,存储的是用户的信息等。就比如加入你的身份信息存储在数据库当中,把数据库删了,完蛋,世界没你这个人了,查也查不到了。

语法:

drop database + 数据库名字;

在这里插入图片描述


三、MySQL数据表操作

在前面小编就说了,在进行数据表的操作前,首先得先选中哪个数据库当中。因为一个MySQL服务器上存在很多数据库,每个数据库存在很多表。假如你这个表本来想要存储一些食物的名字,不小心存入到汽车的数据库当中称为汽车的数据这能行么,所以针对不同的表,首先选中你要存储在哪个数据库当中。

3.1 概念

数据表是 MySQL 中存储和组织数据的核心单元,采用二维结构,由‌行(记录)‌和‌列(字段)‌构成。
‌行的作用‌:每行代表一条独立的数据记录(如一名用户的所有信息)。
‌列的作用‌:每列定义数据的属性(如 姓名、年龄),并需指定数据类型(如 VARCHAR、INT)和约束(如主键、非空);

3.2 数据表的操作

数据表的操作主要有以下四种:

  1. 创建表
  2. 查看该数据库当中的所有表
  3. 查看指定表的结构
  4. 删除表

在一个表当中包括很多行,每一行也称为一条记录,一个行里可以有很多列,每一列也就是一个字段,每一列都是有一个具体类型的。它的类型为如下:

数据类型大小说明对应的java类型
TINYINT1字节Byte
SMALLINT2字节Short
INT4字节Integer
BIGINT8字节Long
FLOAT(M,D)4字节单精度,M指定长度,D指定小数位数。会发生精度丢失Float
DOUBLE(M,D)8字节Double
DECIMAL(M,D)M/D最大值+2双精度,M指定长度,D表示小数点位数。精确数值BigDecimal
VARCHAR (SIZE)0-65,535字节可变长度字符串String
DATETIME8字节范围从1000到9999年,不会进行时区的检索及转换。java.util.Date、java.sql.Timestamp

在实际运用过程中,我们只需要记住以上一些数据类型即可。这里讲解一下varchar(size),它对应的是java类型当中的字符串String,size表示该类型最多可以存储size个字符(不是字节)。当你写size等于10,不是说当前就立马分配10个字符的存储空间,而是首先会分配一个比较小的空间,如果不够,自动扩容。但是最大空间不会超过10。在实际存储过程中,一般会很少在数据库当中的某一列存储特别大的数据,这么做会大大影像到数据的增删查改的效率。实际开发过程中,如果需要保存图片,一般都是把图片单独放到专门的目录下,然后数据库保存的是图片的路径。
在这里插入图片描述

在mysql中类型BIGINT可以直接使用long来,但是short不能使用Java中的short得使用smallint,同样的string也不能只能使用sql规定的类型varchar(size)。

3.2.1 创建表

创建表语法为:

create table 表名(列名 类型,列名 类型…);

在这里插入图片描述
这个后面列名跟java变量创建是一样的,前面的是变量名后面的是类型,跟正常的变量创建是相反的。

相关文章:

MySQL开篇

文章目录 一、前置知识1. MySQL的安装2. 前置一些概念知识 二、MySQL数据库操作2.1 概念2.2 数据库的操作2.2.1创建数据库命令2.2.2 查看数据库2.2.3 选中数据库2.2.4 删除数据库 三、MySQL数据表操作3.1 概念3.2 数据表的操作3.2.1 创建表 一、前置知识 1. MySQL的安装 MySQ…...

Linux电脑本机使用小皮面板集成环境开发调试WEB项目

开发调试WEB项目,有时开发环境配置繁琐,可以使用小皮面板集成环境。 小皮面板官网: https://www.xp.cn/1.可以使用小皮面板安装脚本一键安装。登陆小皮面板管理后台 2.在“软件商店”使用LNMP一键部署集成环境。 3.添加网站,本…...

问题及解决01-面板无法随着窗口的放大而放大

在MATLAB的App Designer中,默认情况下,组件的位置是固定的,不会随着父容器的大小变化而改变。问题图如下图所示。 解决: 为了让Panel面板能够随着UIFigure父容器一起缩放,需要使用布局管理器,我利用 MATLA…...

操作系统原理实验报告

操作系统原理课程的实验报告汇总 实验三:线程的创建与撤销 实验环境:计算机一台,内装有VC、office等软件 实验日期:2024.4.11 实验要求: 1.理解:Windows系统调用的基本概念,进程与线程的基…...

《Linux命令行大全(第2版)》PDF下载

内容简介 本书对Linux命令行进行详细的介绍,全书内容包括4个部分,第一部分由Shell的介绍开启命令行基础知识的学习之旅;第二部分讲述配置文件的编辑,如何通过命令行控制计算机;第三部分探讨常见的任务与必备工具&…...

Java高频面试之并发编程-15

hello啊,各位观众姥爷们!!!本baby今天又来报道了!哈哈哈哈哈嗝🐶 面试官:as-if-serial 是什么?单线程的程序一定是顺序执行的吗? as-if-serial 规则 定义: …...

Python-86:奇妙货币交易问题

问题描述 小R住在一个名为 X 国的国家,这里的货币非常特殊,面值为 V0,V1,V2,...,VnV0,V1,V2,...,Vn,并且 nn 可以无限大。该国的交易规则也很特别:在一次交易中,双方只能对每种面值的货币使用不超过两次。 例如&…...

Selenium的driver.get_url 和 手动输入网址, 并点击的操作,有什么不同?

我在搞爬取的时候,发现有些网站直接用driver.get(url) 跳转到目标特定的网址的时候,会被强制跳转到其他的网址上,但是如果是自己手动,在网址栏那里输入网址,并点回车,却能完成跳转。 这是在使用 Selenium …...

kotlin @JvmStatic注解的作用和使用场景

1. JvmStatic 的作用 JvmStatic 是 Kotlin 提供的一个注解,用于在 JVM 上将伴生对象(companion object)中的方法或属性暴露为 Java 静态方法或字段。 作用对象:只能用在 companion object 中的函数或属性。效果: 在 …...

GitHub中多个PR时,如何协同合并和管理

在 GitHub 中,当多个开发者同时提交多个 Pull Request(PR)时,合理的管理流程与协作策略能够确保代码库稳定、审查高效,并减少冲突与重工。总体而言,你需要: 1)统一分支与命名策略&a…...

无人甘蔗小车履带式底盘行走系统的研究

1.1 研究背景与意义 1.1.1 研究背景 甘蔗作为全球最重要的糖料作物之一,在农业经济领域占据着举足轻重的地位。我国是甘蔗的主要种植国家,尤其是广西、广东、云南等地,甘蔗种植面积广泛,是当地农业经济的重要支柱产业。甘蔗不仅…...

通俗易懂版知识点:Keepalived + LVS + Web + NFS 高可用集群到底是干什么的?

实验开始前,先搞懂为什么要部署该集群? 这个方案的目标是让网站 永不宕机,即使某台服务器挂了,用户也感觉不到。它主要涉及 负载均衡(LVS) 高可用(Keepalived) 共享存储&#xff…...

各类有关NBA数据统计数据集大合集

这些数据我已上传大家在CSDN上直接搜索就可以! 一、【2022-2023 NBA球员统计】数据集 关键词: 篮球 描述: 语境 该数据集每场比赛包含2022-2023常规赛NBA球员统计数据。 请注意,由团队更改产生了重复的球员名称。 * [2021-2022 NBA播放器统计]&#…...

《社交应用架构生存战:React Native与Flutter的部署容灾决胜法则》

React Native和Flutter作为当下热门的跨平台开发框架,在社交应用开发领域各显神通。今天,我们深入探索它们在高可用架构中的部署与容灾策略。 React Native凭借其独特优势,在社交应用开发中拥有一席之地。它基于JavaScript和React&#xff0…...

https,http1,http2,http3的一些知识

温故知新,突然有人问我项目中🤔有使用http3么,一下不知从何说起,就有了这篇文章的出现。 https加密传输,ssltls https 验证身份 提供加密,混合加密 : 对称加密 非对称加密 原理&#xff1a…...

go 通过汇编学习atomic原子操作原理

文章目录 概要一、原理1.1、案例1.2、关键汇编 二、LOCK汇编指令2.1、 LOCK2.2、 原理2.2.1、 缓存行2.2.2、 缓存一致性之MESI协议2.2.3、lock原理 三、x86缓存发展四、x86 DMA发展参考 概要 在并发操作下,对一个简单的aa2的操作都会出错,这是因为这样…...

WebRTC 源码原生端Demo入门-1

1、概述 我的代码是比较新的,基于webrtc源码仓库的main分支的,在windows下把源码仓库下载好了后,用visual stdio 2022打开进行编译调试src/examples/peerconnection_client测试项目,主要是跑通这个demo来入手和调试,纯看代码很难…...

Nipype 简单使用教程

Nipype 简单使用教程 基础教程**一、Nipype 核心概念与工作流构建****1. 基本组件****2. 工作流构建步骤** **二、常用接口命令速查表****1. FSL 接口****2. FreeSurfer 接口****3. ANTS 接口****4. 数据处理接口** **三、高级特性与最佳实践****1. 条件执行(基于输…...

股票回购、股票减持和股票解禁对股票价格影响的综合分析

以下是关于股票回购、股票减持和股票解禁对股票价格影响的综合分析,结合了市场机制、财务指标及投资者行为等多维度因素: 一、股票回购对股价的影响 1. 正面影响 • 提升财务指标:回购减少流通股数量,在净利润不变的情况下&#…...

linux 三剑客命令学习

grep Grep 是一个命令行工具,用于在文本文件中搜索打印匹配指定模式的行。它的名称来自于 “Global Regular Expression Print”(全局正则表达式打印),它最初是由 Unix 系统上的一种工具实现的。Grep 工具在 Linux 和其他类 Unix…...

【MySQL】第二弹——MySQL表的增删改查(CRUD)

文章目录 🎓一. CRUD🎓二. 新增(Create)🎓三. 查询(Rertieve)📖1. 全列查询📖2. 指定列查询📖3. 查询带有表达式📖4. 起别名查询(as )📖 5. 去重查询(distinct)📖6. 排序…...

Springboot中如何自定义配置类

在 Spring Boot 中,自定义配置类是通过 Configuration 注解定义的类,用于替代传统的 XML 配置,管理 Bean 的创建和应用程序的设置。 1. 创建自定义配置类 (1) 基本配置类 使用 Configuration 注解标记类,并在其中定义 Bean 方法…...

基于zernike 拟合生成包裹训练数据-可自定义拟合的项数

可以看到拟合误差其实还是有很多的,但是这个主要是包裹噪声产生的,用到了github 上的zernike 库,直接pip install 一下安装就可以了 import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D import matpl…...

大模型赋能:2D 写实数字人开启实时交互新时代

在数字化浪潮席卷全球的当下,人工智能技术不断突破创新,其中大模型驱动的 2D 写实数字人正成为实时交互领域的一颗新星,引领着行业变革,为人们带来前所未有的交互体验。 一、2D 写实数字人概述 2D 写实数字人是通过计算机图形学…...

5G-A来了!5G信号多个A带来哪些改变?

5G-A来了!5G信号多个A带来哪些改变? 随着科技不断进步,通信网络的迭代升级也在加速。自4G、5G的推出以来,我们见证了通信技术的飞跃式发展。最近,越来越多的用户发现自己手机屏幕右上角的5G标识已经变成了“5G-A”。那…...

Chroma:一个开源的8.9B文生图模型

Chroma 模型讲解 一、模型概述 Chroma 是一个基于 FLUX.1-schnell 的 8.9B 参数模型。它采用了 Apache 2.0 许可证,完全开源,允许任何人使用、修改和在其基础上进行开发,不存在企业限制。该模型目前正在训练中,训练数据集从 20M…...

Ingrees 控制器与 Ingress 资源的区别

在 Kubernetes 中,单纯的 Ingress 资源定义文件(YAML)本身不会直接创建 Pod。Ingress 的作用是定义路由规则(如将外部流量路由到集群内的服务),而实际处理流量的 Pod 是由 Ingress 控制器(如 Ng…...

android 折叠屏开发适配全解析:多窗口、铰链处理与响应式布局

安卓适配折叠屏指南 折叠屏设备为安卓开发带来了新的机遇和挑战。以下是适配折叠屏的关键要点: 1. 屏幕连续性检测 // 检查设备是否支持折叠屏特性 private fun isFoldableDevice(context: Context): Boolean {return context.packageManager.hasSystemFeature(&…...

[强化学习的数学原理—赵世钰老师]学习笔记01-基本概念

[强化学习的数学原理—赵世钰老师]学习笔记01-基本概念 1.1 网格世界的例子1.2 状态和动作1.3 状态转移1.4 策略1.5 奖励1.6 轨迹、回报、回合1.6.1 轨迹和回报1.6.2 回合 1.7 马尔可夫决策过程 本人为强化学习小白,为了在后续科研的过程中能够较好的结合强化学习来…...

1、Kafka与消息队列核心原理详解

消息队列(Message Queue, MQ)作为现代分布式系统的基础组件,极大提升了系统的解耦、异步处理和削峰能力。本文以Kafka为例,系统梳理消息队列的核心原理、架构细节及实际应用。 Kafka 基础架构及术语关系图 术语简要说明 Produce…...