mysql——基础知识

关键字大小写不敏感

查看表结构中的 desc = describe 描述

降序中的 desc = descend

1. 数据库的操作

1. 创建数据库

create database 数据库名;

为防止创建的数据库重复

CREATE DATABASE IF NOT EXISTS 数据库名;

手动设置数据库采用的字符集

character set 字符集名;charset 字符集名;

char : unicode

String : utf8mb4(推荐使用 utf8mb4,完整支持 Unicode,包括表情符号)

            utf8(残本,不支持emoji表情符号)

指定数据库字符集的校验规则

collate 排序规则;

2. 查看数据库

show databases ;

3. 选中要使用的数据库

use 数据库名;

4. 删除数据库

drop database 数据库名;
数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除

1. 常用数据类型

一、数值类型

1. 整数类型

类型字节有符号范围无符号范围
TINYINT1-128 ~ 1270 ~ 255
SMALLINT2-32,768 ~ 32,7670 ~ 65,535
MEDIUMINT3-8,388,608 ~ 8,388,6070 ~ 16,777,215
INT/INTEGER4-2,147,483,648 ~ 2,147,483,6470 ~ 4,294,967,295
BIGINT8-2^63 ~ 2^63-10 ~ 2^64-1

2. 浮点数类型

类型字节说明
FLOAT4单精度浮点数,约7位精度
DOUBLE8双精度浮点数,约15位精度

3. 定点数类型

类型说明
DECIMAL(M,D)精确小数,M是总位数,D是小数位数

精度高,运算速度慢,占的空间大

二、字符串类型

1. 短文本

类型最大长度特点
CHAR(n)255字符固定长度,效率高
VARCHAR(n)65,535字节可变长度,节省空间

n 表示该类型最多存储多少个字符(不是字节),一个汉字算一个字符

2. 长文本

类型最大长度特点
TINYTEXT255字节
TEXT65,535字节
MEDIUMTEXT16,777,215字节
LONGTEXT4GB

3. 二进制数据

类型说明
BINARY(n)固定长度二进制字符串
VARBINARY(n)可变长度二进制字符串
BLOB二进制大对象

文本数据存储的都是字符,这些字符都可以在对应的码表上查到

二进制数据:在码表上查不到的如音乐,图片,视频

三、日期时间类型

数据类型存储大小格式范围(最小值 ~ 最大值)
YEAR1字节YYYY1901 ~ 2155
DATE3字节YYYY-MM-DD1000-01-01 ~ 9999-12-31
TIME3字节HH:MM:SS-838:59:59 ~ 838:59:59
DATETIME5字节YYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
TIMESTAMP4字节YYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC

2. 表操作

需要操作数据库中的表时,需要先使用该数据库: use 数据库名;

1. 创建表

create table 表名(
列名 数据类型[约束条件],
列名 数据类型[约束条件],
...
);

2. 查看表结构

desc 表名;

int(11) 是四个字节,此处(11)表示显示宽度,即显示这个int类型时,最多占据11个字符的宽度(和存储时的容量无关)。

3. 删除表

drop table 表名;

删除表的同时,表中的数据也一并删除。

3. 表数据操作

1. 新增数据

值的个数和类型要和表结构匹配

   1. 单行数据 + 全列插入(即在表中插入一行数据)

insert into 表名 values (值1,值2,值3...);
    2. 多行数据 + 全列插入(即在表中插入多行数据)
insert into 表名 values (值1,值2,值3...),(值1,值2,值3...),(值1,值2,值3...),...;
3. 单 行数据 + 指定列插入
insert into 表名 (列1,列2,...) values (值1,值2,...);
    4. 多行数据 + 指定列插入
insert into 表名 (列1,列2,...) values (值1,值2,...),(值1,值2,...),...;

2. 查询数据

mysql是一个“客户端 - 服务器”结构的程序

客户端在这里进行的操作,都会通过请求发送给服务器,服务器查询的结果也会通过响应返回给客户端(以临时表的形式)

SQL 查询的逻辑执行顺序:

  1. FROM 子句 - 确定数据来源

  2. JOIN 子句 - 连接相关表

  3. WHERE - 行级过滤(此时不能使用SELECT中定义的别名)

  4. GROUP BY - 数据分组

  5. HAVING - 分组后过滤

  6. SELECT - 计算列表达式并选择列

  7. DISTINCT 关键字- 去重

  8. ORDER BY - 排序(可以使用SELECT中定义的别名)

  9. LIMIT /OFFSET- 结果集限制

SELECT [DISTINCT] 列1 [as 别名] , 列2 [as 别名], ...
FROM 表名
[WHERE 条件]
[GROUP BY 分组列]
[HAVING 分组条件]
[ORDER BY 排序列 [ASC|DESC]]
[LIMIT [偏移量,] 行数];

1. 全列查询

select * from 表名;

如果数据库当前这个表中的数据特别多,就可能会产生问题:

1. 读取硬盘,把硬盘的IO给跑满了,此时程序的其他部分想访问硬盘,就会非常慢。

2. 操作网络,也可能把网卡的带宽跑满,此时其他客户端想通过网络访问服务器,也会非常慢

这样的拥堵,就可能导致客户端无法顺利访问到数据库,进一步也就对整个服务器造成影响(相当于数据库服务器挂了)

2. 指定列查询

select 列1,列2,... from 表名;

3. 表达式查询

是列与列之间的运算

select 表达式1,表达式2,... from 表名;

 4. 去重:DISTINCT

使用 DISTINCT关键字对数据进行去重
放在SELECT之后
select distinct 列1,列2... from 表名;

5. 别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称

列的别名不能在ORDER BY中直接使用(在某些MySQL版本中)

SELECT [DISTINCT] 列1 [[as] 别名] , 列2 [[as] 别名], ... FROM 表名;

6. 排序:order by

SC 为升序(从小到大)
DESC 为降序(从大到小)
默认为 ASC
select 列1,列2... from 表名order by 列名 [asc/desc],列名 [asc/desc]...;
1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面

3. 可以对多个字段进行排序,排序优先级随书写顺序

7. 条件查询:where

select 列名 from 表名 where 约束条件;
比较运算符:
运算符描述
=等于, NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>
等于, NULL  安全,例如 NULL <=> NULL 的结果是 TRUE(1)
<> 或 !=不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN a0 AND a1
范围匹配, [a0, a1] ,如果 a0 <= value <= a1 ,返回 TRUE(1)
IN(option,...)在指定值列表中,如果是 option 中的任意一个,返回 TRUE(1)
LIKE模糊匹配,% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字
IS NULL是空值
IS NOT NULL不是空值
模糊匹配:
SELECT * FROM 表名 WHERE 列名 LIKE '模式';

% 表示任意多个(包括 0 个)任意字符;

_ 表示任意一个字符

逻辑运算符:

AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

 8. 分页查询

始终结合 ORDER BY 使用分页,否则结果顺序不确定

select 列名 from 表名 limit 每页记录数 offset 偏移量;select 列名 from 表名 limit 偏移量, 每页记录数;

当前页码(page)和每页大小(pageSize)

偏移量(offset) = (page - 1) * pageSize

每页记录数 = pageSize

3. 修改数据

UPDATE 表名 
SET 列名1 = 值1, 列名2 = 值2, ...
[WHERE 条件]
[ORDER BY 列名]
[LIMIT 行数];

将名字为null改为信阳毛尖

怎样查看警告:

show warnings;

4. 删除数据

DELETE FROM 表名 
[WHERE 条件]
[ORDER BY 列名]
[LIMIT 行数];
delete from 表名;

如果删除数据时不加任何约束条件,则将整个表中的数据全部删除,只留空表。

在修改和删除数据中,limit 行数; 表示共删除或修改几行。

4. 数据库约束

在创建表时使用

约束类型:
NOT NULL - 指示某列不能存储 NULL 值。
UNIQUE - 保证某列的每行必须有唯一的值。
DEFAULT - 规定没有给列赋值时的默认值。
PRIMARY KEY - NOT NULL UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK - 保证列中的值符合指定的条件。

1. 非空约束 (NOT NULL)

作用:确保列不能包含NULL值

特点

  • 强制字段必须有值

  • 可以在ALTER TABLE时添加或删除

2.  唯一约束 (UNIQUE)

作用:确保列中的值唯一

特点

  • 允许NULL值(但只能有一个NULL)

  • 一个表可以有多个唯一约束

  • 自动创建非聚集索引

3.  默认约束 (DEFAULT)

作用:当插入数据未指定值时提供默认值,默认情况下为null.

特点

  • 可以是常量值或表达式

  • 适用于INSERT和UPDATE操作

4. 主键约束 (PRIMARY KEY)

作用:唯一标识表中的每一行记录,确保实体完整性

特点

  • 不允许NULL值

  • 不允许重复值

  • 一个表只能有一个主键

  • 自动创建聚集索引

5. 外键约束 (FOREIGN KEY)

作用:维护表之间的引用完整性

特点

  • 确保一个表的值必须在另一个表中存在

  • 可以定义级联操作

  • 引用列必须是主键或唯一键

父表:约束别人的表

子表:被别人约束的表

CREATE TABLE 子表名 (列定义...,[CONSTRAINT 约束名] FOREIGN KEY (外键列) REFERENCES 主表名(主表列)[ON DELETE 参照动作][ON UPDATE 参照动作]
);

外键约束动作

当主表数据被删除或更新时,可以指定子表数据的处理方式:

动作描述
RESTRICT(默认)拒绝主表的删除或更新操作
CASCADE级联操作,主表删除/更新时,子表对应记录也删除/更新
SET NULL主表删除/更新时,子表对应外键列设为NULL(需允许NULL)
NO ACTION类似RESTRICT
SET DEFAULT

设为默认值(MySQL目前不支持)

针对父表的 删除/修改 操作,如果当前被 删除/修改 的值,已经被子表引用了,则无法进行此操作

外键约束要始终保持,子表中的数据在对应的父表的列中要存在。

如果父表不存在,子表添加元素时无参考依据

指定外键约束,时,父表中被关联的一列必须为主键或unique。

逻辑删除:

如果要删除与子表关联的父表元素,我们可以多设置一列进行条件约束。

6. 检查约束 (CHECK)

作用:确保列值满足指定条件

特点

  • MySQL 8.0.16+ 完全支持

  • 可以引用多列

  • 条件不满足时拒绝操作

7. 自增约束 (AUTO_INCREMENT)

作用:自动为列生成唯一递增整数值(会自动排序),必须作用与键

特点

  • 通常用于主键

  • 每张表只能有一个自增列

  • 默认从1开始,每次增加1

  • 支持整数类型(INT, SMALLINT, BIGINT等)

  • 自增列不保证连续:删除记录后,自增值不会重用

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

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

相关文章

Redis 哨兵与集群脑裂问题详解及解决方案

Redis 哨兵与集群脑裂问题详解及解决方案 本文将深入探讨Redis在哨兵模式和集群模式下可能出现的脑裂问题&#xff0c;包括其发生场景、原因以及有效的解决策略。同时&#xff0c;我们还将提供相应的代码示例和配置方案来帮助读者理解和实施。 一、脑裂问题概述 脑裂&#x…

国内网络设备厂商名单(List of Domestic Network Equipment Manufacturers)

国内网络设备厂商名单 运维工程师必须广泛熟悉国内外各大厂商的设备&#xff0c;深入掌握其应用场景、功能特点及优势。这不仅有助于在故障排查时迅速定位问题&#xff0c;还能在系统设计、优化与升级中做出更合理的决策。对设备特性的精准把握&#xff0c;能够显著提升运维效…

2、SpringAI接入ChatGPT与微服务整合

2、SpringAI接入ChatGPT与微服务整合 小薛博客AI 大模型资料 1、SpringAI简介 https://spring.io/projects/spring-ai Spring AI是一个人工智能工程的应用框架。其目标是将Spring生态系统的设计原则&#xff08;如可移植性和模块化设计&#xff09;应用于人工智能领域&#…

基于ubuntu24.10安装NACOS2.5.1的简介

基于ubuntu24.10安装NACOS2.5.1的简介 官方网站地址&#xff1a; https://nacos.io 可访问nacos站点 https://nacos.io/zh-cn/ 2025年04月记录发布 V2.5.1 版本 一、环境预准备 64 bit JDK 1.8&#xff1b; sudo apt update sudo apt install openjdk-8-jdk sudo apt upda…

神经网络:从基础到应用,开启智能时代的大门

在当今数字化时代&#xff0c;神经网络已经成为人工智能领域最热门的技术之一。从语音识别到图像分类&#xff0c;从自然语言处理到自动驾驶&#xff0c;神经网络的应用无处不在。它不仅改变了我们的生活方式&#xff0c;还为各个行业带来了前所未有的变革。本文将带你深入了解…

[k8s实战]Containerd 1.7.2 离线安装与配置全指南(生产级优化)

[k8s实战]Containerd 1.7.2 离线安装与配置全指南&#xff08;生产级优化&#xff09; 摘要&#xff1a;本文详细讲解在无外网环境下部署 Containerd 1.7.2 容器运行时的完整流程&#xff0c;涵盖二进制包安装、私有镜像仓库配置、Systemd服务集成等关键步骤&#xff0c;并提供…

【CPU】结合RISC-V CPU架构回答中断系统的7个问题(个人草稿)

结合RISC-V CPU架构对中断系统七个关键问题的详细解析&#xff0c;按照由浅入深的结构进行说明&#xff1a; 一、中断请求机制&#xff08;问题①&#xff09; 硬件基础&#xff1a; RISC-V通过CLINT&#xff08;Core Local Interrupter&#xff09;和PLIC&#xff08;Platfor…

[密码学实战]国密算法面试题解析及应用

以下是密码学领域常见的面试题及其详细解析,涵盖基础理论、算法实现与应用场景,帮助系统化备战技术面试 一、基础概念类 1. 密码学的主要目标是什么? 答案: 确保数据的机密性(加密防止窃听)、完整性(哈希校验防篡改)、认证性(数字签名验证身份)和不可否认性(签名防…

Spring Boot 实现 Excel 导出功能(支持前端下载 + 文件流)

&#x1f9e0; 一、为什么用 EasyExcel&#xff1f; 在 Java 开发中&#xff0c;操作 Excel 的框架主要有&#xff1a; Apache POI&#xff08;经典但慢、内存占用大&#xff09; JXL&#xff08;老旧不维护&#xff09; Alibaba EasyExcel&#xff08;阿里出品&#xff0c;…

【论文速递】2025年06周 (Robotics/Embodied AI/LLM)

目录 SMOLLM2&#xff1a;当Smol变得大 - 以数据为中心的小语言模型英文摘要中文摘要 OmniHuman-1&#xff1a;重新考虑一阶段的人类动画模型的扩展英文摘要中文摘要 S1&#xff1a;简单的测试时间缩放英文摘要中文摘要 直接对齐算法间的差异日渐模糊英文摘要中文摘要 VideoJAM…

学习深度学习是否要先学习机器学习?工程师的路径选择策略

深度学习与机器学习的关系&#xff0c;如同摩天大楼与地基——前者是后者的高阶延伸&#xff0c;但能否绕过地基直接造楼&#xff1f;本文从技术本质、学习曲线、应用场景三个维度剖析这一关键问题。 一、技术血脉的承继关系 概念体系同源&#xff1a; 损失函数、梯度下降、过拟…

开始放飞之先搞个VSCode

文章目录 开始放飞之先搞个VSCode重要提醒安装VSCode下载MinGW-w64回到VSCode中去VSCode原生调试键盘问题遗留问题参考文献 开始放飞之先搞个VSCode 突然发现自己的新台式机上面连个像样的编程环境都没有&#xff0c;全是游戏了&#xff01;&#xff01;&#xff01;&#xff…

【2025“华中杯”大学生数学建模挑战赛】选题分析 A题 详细解题思路

目录 2025“华中杯”大学生数学建模挑战赛选题分析A题&#xff1a;晶硅片产销策略优化B题&#xff1a;校园共享单车的调度与维护问题C题&#xff1a;就业状态分析与预测D题&#xff1a;患者院内转运不良事件的分析与预测 A 题 晶硅片产销策略优化问题 1&#xff1a;月利润计算模…

YOLO11改进,尺度动态损失函数Scale-based Dynamic Loss,减少标签不准确对损失函数稳定性的影响

在目标检测领域,标签噪声与尺度敏感问题始终是制约模型性能提升的"阿喀琉斯之踵"。2025年CVPR最佳论文提出的尺度动态损失函数(Scale-based Dynamic Loss, SDL),通过构建自适应损失调节机制,不仅实现了对YOLOv11检测精度的指数级提升,更重新定义了损失函数的设…

缓存 --- 内存缓存 or 分布式缓存

缓存 --- 内存缓存 or 分布式缓存 内存缓存&#xff08;In-Memory Cache&#xff09;分布式缓存&#xff08;Distributed Cache&#xff09;内存缓存 vs 分布式缓存 内存缓存和分布式缓存是两种常见的缓存策略&#xff0c;它们在存储位置、访问速度和适用场景上有所不同。下面分…

Python+CoppeliaSim+ZMQ remote API控制机器人跳舞

这是一个使用Python和CoppeliaSim&#xff08;V-REP&#xff09;控制ASTI人型机器人进行舞蹈动作的演示项目。 项目描述 本项目展示了如何使用Python通过ZeroMQ远程API与CoppeliaSim仿真环境进行交互&#xff0c;控制ASTI人型机器人执行预定义的舞蹈动作序列。项目包含完整的机…

进程管理,关闭进程

查看Linux系统中的进程信息 语法&#xff1a;ps【-e -f】 一般与管道符与grep配合使用&#xff0c;&#xff0c;去过滤指定的信息 -e&#xff1a;显示出全部的进程 -f&#xff1a;以完全格式化的形式展示信息&#xff08;展示全部信息&#xff09; 简单用法&#xff1a;p…

线性代数-矩阵的秩

矩阵的秩&#xff08;Rank&#xff09;是线性代数中的一个重要概念&#xff0c;表示矩阵中线性无关的行&#xff08;或列&#xff09;的最大数量。它反映了矩阵所包含的“有效信息”的维度&#xff0c;是矩阵的核心特征之一。 直观理解 行秩与列秩&#xff1a; 行秩&#xff1…

CSS伪类、clip-path实现三角形、箭头绘制

<template><div :class"$options.name"><div class"triangle-container1"><!-- 伪类三角形&#xff1a;向右 --><div class"triangle-RM"></div><!-- 伪类三角形&#xff1a;向下 --><div class&q…

numpy、pandas内存优化操作整理

前言 python作为一款不怎么关注数据类型的语言&#xff0c;不同类型的数据可以往同一个变量中放置 这也就直接导致&#xff0c;作为熟悉C这种一个变量只有一个类型的程序员来说&#xff0c;在解读python程序时&#xff0c;想搞清楚变量中到底存的是什么数据类型的时候时常很头…