MySQL数据库(SQL分类)
SQL分类
分类 | 全称 | 解释 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库,表,字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户,控制数据库的访问权限 |
DDL
数据库操作
-- 查询
--查询所有数据库
show databases;
--查询当前数据库
select database();
--创建数据库
create database [if not exists] 数据库名[defaul charset 字符集] [collate 排序规律];
--删除
drop database [if exists]数据库名;
--使用
use 数据库名;
注:数据库语言不区分大小写
数据库语言都以分号结尾
表操作
查询表
--查询当前数据库所有表show tables;-- 查询表结构desc 表名;-- 查询指定表的建表语句show create table 表名;
创建表
create table 表名(
字段1 字段1类型[comment 字段1注释]
字段2 字段2类型[comment 字段1注释]
字段3 字段3类型[comment 字段1注释]
.......
) [comment 表注释];
comment 为可选项,作用类似是注释,解释字段或表
create table user(id int comment '编号',name varchar(50) comment '姓名',age int comment '年龄',gender varchar(50) comment '性别') comment '用户表';
查询表结构
查询建表语句
修改表
添加字段
alter table 表名 add 字段名 类型(长度)[comment 注释] [约束];
-- 在emp表增加一个新的字段“昵称”为nickname,类型为varchar(20)
alter table emp add nickname varchar(20) comment "昵称";
修改字段
1.修改数据
alter table 表名 modify 字段名 新数据类型(长度);
2.修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束]
3.修改表名
alter table 表名 rename to 新表名;
--将emp表中的nickname字段修改为username,类型为varchar(30)
alter table emp nickname username varchar(30) comment '昵称';
-- 将emp表的表名修改为employee
alter table emp rename to employee;
删除表
1.删除表
drop table [if exists] 表名;
2.删除指定表,并重新创建该表
truncate table 表名;
数据类型概览
分类 | 类型 | 大小 | 有符号范围 (SIGNED) | 无符号范围 (UNSIGNED) | 描述 |
---|---|---|---|---|---|
整数类型 | TINYINT | 1 字节 | (-128, 127) | (0, 255) | 小整数值 |
SMALLINT | 2 字节 | (-32,768, 32,767) | (0, 65,535) | 小整数值 | |
MEDIUMINT | 3 字节 | (-8,388,608, 8,388,607) | (0, 16,777,215) | 中整数值 | |
INT/INTEGER | 4 字节 | (-2,147,483,648, 2,147,483,647) | (0, 4,294,967,295) | 标准整数值 | |
BIGINT | 8 字节 | (-2^63, 2^63-1) | (0, 2^64-1) | 大整数值 | |
浮点类型 | FLOAT | 4 字节 | ~(-3.4028236E+38, 3.4028236E+38) | ~ (0, 3.4028236E+38) | 单精度浮点数 |
DOUBLE | 8 字节 | ~(-1.7976931348623157E+308, …308) | ~ (0, 1.7976931348623157E+308) | 双精度浮点数 | |
DECIMAL | 可变大小 | 精确的定点数值 | 精确的定点数值 ,依赖M(精度)D(标度) | 小数值 (精确度高) |
解释:精度指整个小数的长度,标度指小数位数。
举例:age TINYINT UNSIGNED
占用字节小且不会出现负数
score DOUBLE(4,1)
一位小数,长度为4
以下是表格清晰化后的内容,用中文并使用 Markdown 格式:
字符串/文本类型数据类型概览
分类 | 类型 | 大小 | 描述 |
---|---|---|---|
字符串类型 | CHAR | 0-255 bytes | 定长字符串 |
VARCHAR | 0-65535 bytes | 变长字符串 | |
二进制类型 | TINYBLOB | 0-255 bytes | 不超过 255 个字节的二进制数据 |
TINYTEXT | 0-255 bytes | 短文本字符串 | |
BLOB | 0-65535 bytes | 二进制形式的长文本数据 | |
TEXT | 0-65535 bytes | 长文本数据 | |
MEDIUMBLOB | 0-16,777,215 bytes | 二进制形式的中等长度文本数据 | |
MEDIUMTEXT | 0-16,777,215 bytes | 中等长度的文本数据 | |
LONGBLOB | 0-4,294,967,295 bytes | 二进制形式的超长文本数据 | |
LONGTEXT | 0-4,294,967,295 bytes | 超长文本数据 |
- 字符串类型:
CHAR:定长字符串,适合长度固定的文本数据。
VARCHAR:变长字符串,适合长度可变的文本数据。
区别:char(10)
即使只有一个长度也会占用10个字节;varchar(10)
最多占用10个字节,真正占用字节数取决于长度 - 二进制类型和文本类型:
BLOB:用于存储二进制数据,例如图片或文件。
TEXT:用于存储文本数据,按长度分为TINYTEXT
、TEXT
、MEDIUMTEXT
和LONGTEXT
。
数据大小根据具体需求选择合适的类型,超长数据需要使用LONGBLOB
或LONGTEXT
。
以下是日期类型数据清晰化后的表格,用中文并使用 Markdown 格式展示:
分类 | 类型 | 大小 | 范围 | 格式 | 描述 |
---|---|---|---|---|---|
日期类型 | DATE | 3 字节 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
时间类型 | TIME | 3 字节 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值(时分秒) |
年份类型 | YEAR | 1 字节 | 1901 至 2155 | YYYY | 年份值 |
日期时间类型 | DATETIME | 8 字节 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
时间戳类型 | TIMESTAMP | 4 字节 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 记录联合日期和时间的值,用于标记时间 |
解释:
-
DATE 类型:
- 存储纯日期值(例如:生日、节假日)。
- 格式为
YYYY-MM-DD
。
-
TIME 类型:
- 用于表示时间值(时、分、秒),支持负值,适用于持续时间表示。
-
YEAR 类型:
- 用于存储年份值,适合年份相关数据(如生产年份)。
-
DATETIME 类型:
- 组合日期和时间的值,精确到秒,适用于完整的日期时间记录。
-
TIMESTAMP 类型:
- 表示自 1970 年以来的时间点,用于记录操作时间,受时区影响。
示例:
create table emp(id int comment '编号',workno varchar(10) comment '工号',name varchar(10) comment '姓名',gender char(1) comment '性别',age tinyint unsigned comment '年龄',sno char(18) comment '身份证号',time date comment '入职时间'
) comment '员工表';
输入后形成的表结构:
DML
添加数据
- 给指定字段添加数据
insert into 表名 (字段1,字段2,....) values(值1,值2,....);
- 给全部字段添加数据
insert into 表名 values(值1,值2,值3,....);
- 批量添加数据
inset into 表名 (字段名1,字段名2,....) values (值1,值2,值3,...) (值1,值2,值3,....);
insert into 表名 values(值1,值2,值3,....),(值1,值2,值3,....);
-- 给指定字段添加数据
insert into employee(id,workno,name,gender,age,sno,time) values (1,'1','hong','女',19,123456789123456789,'2024-12-16');
-- 查询所有数据
SELECT * from employee;
-- 给全部字段添加数据
insert into employee values (2,'2','kang','男',20,123456789456789123,'2025-05-06');
-- 批量添加数据
insert into employee values (3,'3','tong','女',20,123456789456723123,'2025-05-06'),(4,'4','miaomiao','女',20,145456789456789123,'2024-05-06');
修改数据
update 表名 set 字段名1 = 值1,字段2 = 值2,....[where 条件]
注:where条件为可选项,但是如果不加默认为修改所有数据
-- 修改id为1的数据,将name改为'rora'update employee set name = 'rora' where id = 1;-- 修改id为4的数据,将age改为23update employee set age = 23 where id = 4;-- 修改所有数据,将日期改为2020-06-16update employee set time = '2020-06-16';
删除数据
delete from 表名 [where 条件];
注:
1.delete语句的条件为可选项,如果没有,会删除表中的所有数据
2.delete语句不能删除某一个字段的值(可以使用update)
-- 删除gender为女的数据
delete from employee where gender = "女";
DQL
数据查询语言,用来查询数据库中表的记录
关键字:select
语法:
select : 字段列表
from:表名列表
where:条件列表
group by:分组字段列表
having:分组后条件列表
order by:排序字段列表
limit:分页参数
基本查询:
条件查询(WHERE)
聚合查询(count,max,min,avg,sum)
分组查询(group by)
排列查询(order by)
** 分页查询**(limit)
1.查询多个字段
select 字段1,字段2,字段3...from 表名;
select * from 表名;
2.设置别名
select 字段1[as 别名],字段2[as 别名2]...from 表名;
3.取出重复记录
select distinct 字段列表 from 表名;
重新创建emp表,并输入信息:
CREATE TABLE emp (id INT COMMENT '编号',workno VARCHAR(10) COMMENT '工号',name VARCHAR(10) COMMENT '姓名',gender CHAR(1) COMMENT '性别',age TINYINT UNSIGNED COMMENT '年龄',idcard CHAR(18) COMMENT '身份证号',workaddress VARCHAR(50) COMMENT '工作地址',entrydate DATE COMMENT '入职时间'
) COMMENT '员工表';
输入信息后:
-- 查询指定字段 name,workno,age,返回
select name,workno,age from emp;
-- 查询所有字段
select * from emp;
select id,workno,name,gender,age,idcard,workaddress,entrydate from emp;
-- 查询所有员工工作地址,起别名
select workaddress as '工作地址' from emp;
-- 查询员工地址,去重
select distinct workaddress from emp;
相关文章:

MySQL数据库(SQL分类)
SQL分类 分类全称解释DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改DQLData Query Languag…...
C++实现设计模式---原型模式 (Prototype)
原型模式 (Prototype) 原型模式 是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化。 意图 使用原型实例指定要创建的对象类型,并通过复制该原型来生成新对象。提供一种高效创建对象的方式,尤其是当对象的…...

鸿蒙面试 2025-01-10
写了鉴权工具,你在项目中申请了那些权限?(常用权限) 位置权限 : ohos.permission.LOCATION_IN_BACKGROUND:允许应用在后台访问位置信息。 ohos.permission.LOCATION:允许应用访问精确的位置信息…...

Linux Top 命令 load average 指标解读
前言 作为平台开发的同学,维护平台稳定性是我们最基本的工作职责,下面主要介绍下top 命令里 ,load average 这个指标如何去衡量机器负载程度。 概念介绍 load average 是系统在过去 1 分钟、5 分钟、15 分钟 的平均负载,它表示运…...

31_搭建Redis分片集群
Redis的主从复制模式和哨兵模式可以解决高可用、高并发读的问题。但是依然有两个问题没有解决:海量数据存储问题、高并发写的问题。由于数据量过大,单个master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Red…...

客户案例 | Ansys与索尼半导体解决方案公司合作推进自动驾驶汽车基于场景的感知测试
该合作使OEM厂商和一级供应商能够可靠地评估和验证 ADAS/AV 功能在各种天气和照明条件下的性能 主要亮点 Ansys AVxcelerate Sensors™自动驾驶汽车(AV)传感器仿真软件,可实现面向基于场景的感知测试的实时多光谱摄像头仿真 利用AVxcelerat…...
c#-Halcon入门教程——标定
Halcon代码 read_image (NinePointCalibration, D:/Desktop/halcon/ca74d-main/九点标定/NinePointCalibration.gif)rgb1_to_gray (NinePointCalibration, GrayImage)get_image_size (GrayImage, Width, Height) dev_display (GrayImage)* 获取当前显示的窗口句柄 dev_get_win…...

MC1.12.2 macOS高清修复OptiFine运行崩溃
最近在玩RLCraft,在windows中运行正常的,移植到macOS中发现如果加载OptiFine模组就会崩溃 报错日志 报错日志如下,其中已经包含了各种版本信息,我就不单独说明了。这里说一下,报错的时候用的是oracle jdk x64的&…...

精选2款.NET开源的博客系统
前言 博客系统是一个便于用户创建、管理和分享博客内容的在线平台,今天大姚给大家分享2款.NET开源的博客系统。 StarBlog StarBlog是一个支持Markdown导入的开源博客系统,后端基于最新的.Net6和Asp.Net Core框架,遵循RESTFul接口规范&…...

转运机器人在物流仓储行业的优势特点
在智能制造与智慧物流的浪潮中,一款革命性的产品正悄然改变着行业的面貌——富唯智能转运机器人,它以卓越的智能科技与创新的设计理念,引领着物流领域步入一个全新的高效、智能、无人的时代。 一、解放双手,重塑物流生态 富唯智能…...
简识MySQL的InnoDB Locking锁的分类
( 参考官方网页: MySQL :: MySQL 5.7 Reference Manual :: 14.7.1 InnoDB Locking) 一、InnoDB Locking锁的分类: 锁的分类英文缩写共享锁Shared LocksS排他锁Exclusive LocksX意向共享锁Intention Shared LocksIS意向排他锁Int…...
如何通过openssl生成.crt和.key
生成 .crt(证书文件)和 .key(私钥文件)的过程通常涉及使用加密工具或库来创建密钥对,并生成证书请求,最终由证书颁发机构(CA)或自签名生成证书。以下是生成 .crt 和 .key 文件的详细…...

.NetCore 使用 NPOI 读取带有图片的excel数据
在.NetCore使用NPOI插件进行批量导入时,获取Excel中的所有的图片数据,存到集合中。 1.定义类PictureData 代码如下: public class PictureData { public byte[] Data { get; set; } } 2.数据集引用 using NPOI.XSSF.UserModel; usin…...
linux上使用update-alternatives来选择软件版本
比如我在linux系统上安装多个版本的gcc /usr/local/gcc-4.8.2/ /usr/local/gcc-8.4.0/ /usr/local/gcc-9.4.0/我要根据需要来切换系统环境下的gcc命令的版本,我可以先 update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-4.8.2/bin/gcc 1 update-alt…...
【Elasticsearch复合查询】
Elasticsearch复合查询 在Elasticsearch中,复合查询(Compound Queries)是用来封装其他复合查询或叶子查询的查询类型。它们的主要目的是组合这些查询的结果和分数、改变它们的行为或者从查询上下文切换到过滤上下文。 一个常见的复合查询是…...

Java List去重:Stream、HashMap与TreeSet对比分析
在处理包含重复元素的List时,高效地去除重复项是提高数据质量的关键步骤。本文将详细介绍如何运用Java 8 Stream API、HashMap以及TreeSet来实现List去重,并比较它们之间的优缺点及适用场景。 1. 使用Stream API去重 List<String> duplicates …...

大师课程:专业角色AE+AI动画动态设计关键帧学院视频课程 Key Frame Academy – Character Animation Launchpad
使用专业角色动画升级您的动态设计。我将流程的每个阶段分解为易于理解的步骤,以便您可以自信、无缝地创建迫不及待地向客户展示的专业角色动画。 您的创造力就是您的超能力。但说到经验,没有什么比索具过程更能扼杀我的创作火花了……对于许多人来说&am…...
游戏盾SDK如何防护APP攻击
游戏盾SDK如何防护APP攻击?在数字时代的大潮中,APP的安全性是衡量其服务质量与用户信任度的关键指标之一。面对日益复杂多变的网络攻击,如何确保APP在开放的网络环境中稳健运行,成为开发者面临的一大挑战。游戏盾SDK,作…...
Spring Boot 3.x 整合 Logback 日志框架(支持异步写入)
Spring Boot 3.x 整合 Logback 日志框架(支持异步写入) 在构建任何应用程序时,良好的日志管理都是必不可少的。日志可以帮助我们监控、调试和跟踪代码的运行情况。 1. 添加日志配置文件 在 /resources 资源目录下,创建名为 log…...

从0开始学习搭网站第二天
前言:今天比较惭愧,中午打铲吃了一把,看着也到钻二了,干脆顺手把这个赛季的大师上了,于是乎一直到网上才开始工作,同样,今天的学习内容大多来自mdn社区mdn 目录 怎么把文件上传到web服务器采用S…...

从“人找政策”到“政策找人”:智能退税ERP数字化重构外贸生态
离境退税新政核心内容与外贸企业影响 (一)政策核心变化解析 退税商店网络扩容 新政明确鼓励在大型商圈、旅游景区、交通枢纽等境外旅客聚集地增设退税商店,并放宽备案条件至纳税信用M级企业。以上海为例,静安区计划新增1000家退…...
【C/C++】std::vector成员函数清单
文章目录 std::vector使用指南1 不同版本提供的能力基础:C98 / C03 提供的成员函数C11 新增的成员函数C14:基本无变化(主要是标准库泛化,非 vector 成员变化)C17 引入的新特性(间接影响)C20 新增…...
记一次运行spark报错
提交spark任务运次报错 06/03 18:27:50 INFO Client: Setting up container launch context for our AM 25/06/03 18:27:50 INFO Client: Setting up the launch environment for our AM container 25/06/03 18:27:50 INFO Client: Preparing resources for our AM container …...
Linux操作系统故障应急场景及对应排查方法
001:系统CPU负载高并触发监控报警 005 查看系统CPU使用情况,,确认CPU数量,确认系统负载,确认CPU高对系统的影响 006 定位占用CPU资源最多的进程,根据进程判断是应用进程还是系统进程还是第三方工具进程。 014 查看…...
Qwen大语言模型里,<CLS>属于特殊的标记:Classification Token
Qwen大语言模型里,<CLS>属于特殊的标记:Classification Token 目录 Qwen大语言模型里,<CLS>属于特殊的标记:Classification Token功能解析工作机制应用场景举例说明技术要点在自然语言处理(NLP)领域 都是<CLS> + <SEP>吗?一、CLS和SEP的作用与常见用法1. **CLS标…...
乐观锁与悲观锁的实现和应用
乐观锁与悲观锁:原理、实现与应用详解 在并发编程和数据库操作中,乐观锁和悲观锁是两种重要的并发控制策略,它们在原理、实现方式和应用场景上存在显著差异。下面我们将通过图文结合的方式,深入探讨这两种锁机制。 一、基本概念 1…...

Xilinx FPGA 重构Multiboot ICAPE2和ICAPE3使用
一、FPGA Multiboot 本文主要介绍基于IPROG命令的FPGA多版本重构,用ICAP原语实现在线多版本切换。需要了解MultiBoot Fallback点击链接。 如下图所示,ICAP原语可实现flash中n1各版本的动态切换,在工作过程中,可以通过IPROG命令切…...

什么是预训练?深入解读大模型AI的“高考集训”
1. 预训练的通俗理解:AI的“高考集训” 我们可以将预训练(Pre-training) 形象地理解为大模型AI的“高考集训”。就像学霸在高考前需要刷五年高考三年模拟一样,大模型在正式诞生前,也要经历一场声势浩大的“题海战术”…...

服务器磁盘空间被Docker容器日志占满处理方法
事发场景: 原本正常的服务停止运行了,查看时MQTT服务链接失败,查看对应的容器服务发现是EMQX镜像停止运行了,重启也是也报错无法正常运行,报错如下图: 报错日志中连续出现两个"no space left on devi…...
sendDefaultImpl call timeout(rocketmq)
rocketmq 连接异常 senddefaultimpl call timeout-腾讯云开发者社区-腾讯云 第一种情况: 修改broker 的配置如下,注意brokerIP1 这个配置必须有,不然 rocketmq-console 显示依然是内网地址 caused by: org.apache.rocketmq.remoting.excep…...