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

Mysql数据库操作总结

文章目录

    • 1. DDL(Data Definition Language - 数据定义语言)
      • 1.1 数据库
      • 1.2 数据表(创建+查询+删除)
      • 1.3 数据表(修改)
    • 2. 数据类型
      • 2.1 数值
      • 2.2 字符
      • 2.3 日期
    • 3. 字段约束
      • 3.1 约束
      • 3.2 主键约束修改
      • 3.3 主键自增 + 联合主键
    • 4. DML(Data Manipulation Language - 数据操作语言)
      • 4.1 添加数据
      • 4.2 删除数据
      • 4.3 修改数据
    • 5. DQL(Data Query Language - 数据查询语言)
      • 5.1 查询 + 限制条件(where + and/or)
      • 5.2 结果处理(+/-, as, distinct)
      • 5.3 模糊查询(like)
      • 5.4 结果排序(order by)
      • 5.5 聚合函数(count, max, min, sum, avg)
      • 5.6 日期与字符串函数[now(), sysdate(), concat(), upper()...... ]
      • 5.7 分组(group by) + 分页查询(limit)
    • 6. 数据表关联关系(一对一, 一对多, 多对多)
      • 6.1 关联关系
      • 6.2 外键约束(创建\修改)
      • 6.3 外键约束 ------ 级联
    • 7. 连接查询
      • 7.1 联合查询(join)
      • 7.2 嵌套查询

1. DDL(Data Definition Language - 数据定义语言)

1.1 数据库

## 显示数据库
show databases
## 显示指定数据库创建信息
show create database <database_name>
## 数据库创建
create database <database_name>
## 判断数据库是否存在
create database (if not exists) <database_name>
## 创建数据库同时指定数据库字符集(数据存储编码格式 utf8, gbk)
create database <database_name> character set utf8
## 修改数据库字符集
alter database <database_name> character set utf8
## 删除数据库
drop database (if exists) <database_name>
## 使用/切换数据库
use <database_name>
## 注销数据库
exit

1.2 数据表(创建+查询+删除)

## 创建数据库表
create table <table_name>(
id int unique not null,
name varchar(8) unique
);
## 显示数据表
show tables
## 查询数据表
desc <table_name>
## 删除数据表
drop table [if exists] <table_name>

1.3 数据表(修改)

## 修改表名
alter table <table_name> rename to <new_table_name>
## 修改表的字符集
alter table <table_name> character set utf8
## 添加字段(列)
alter table <table_name> add <column_name> <type>
## 修改字段名和类型
alter table <table_name> change <old_column_name> <new_column_name> <type>
## 修改字段类型
alter table <table_name> modify <column_name> <type>
## 删除字段
alter table <table_name> drop <column_name>

2. 数据类型

2.1 数值

在这里插入图片描述

2.2 字符

在这里插入图片描述

2.3 日期

在这里插入图片描述

3. 字段约束

3.1 约束

## 约束
非空约束(not null) : 值不能为 null, 通常默认为可以非空
唯一约束(unique) : 此列的值不能重复
主键约束(primary key) : 非空 + 唯一, 唯一标识数据表中一条数据
外键约束(foreign key) : 建立不同表间联系

3.2 主键约束修改

———— 主键约束修改
## 创建表时添加主键约束
create table t5(
id int primary key,
name varchar(10)
);
create table t(
id int,
name varchar(10),
primary key(id)
);
## 删除数据表主键约束
alter table <table_name> drop primary key
## 创建表之后添加主键约束
alter table <table_name> modify <column_name> <type> primary key

3.3 主键自增 + 联合主键

## 主键自增(保证唯一性, 不保证连续性)
## 定义 int 类型字段自动增长
id int primary key auto_increment;
## 联合主键(将数据表当中多列组合在一起设置为表的主键)
## 定义联合主键(默认全部为 not null)
create table t(
stu_id int,
cou_id int,
primary key(stu_id, cou_id)
);

4. DML(Data Manipulation Language - 数据操作语言)

4.1 添加数据

## 添加数据 (column_name 顺序可以改变, 对应values位置不能改变)
insert into <table_name>(column_name, column_name, .....) values(?, ?, .....)
## 若添加所有字段, 可以省略column_name, 但是values值与表字段顺序必须对应(通常建议全写)
insert into <table_name> values(?, ?, ?, ......)

4.2 删除数据

## 删除数据
delete from <table_name> where <conditions>
## 删除所有数据
delete from <table_name>

4.3 修改数据

## 修改单行数据, 若无[where condition], 直接修改所有行
update <table_name> set column_name = value [where condition]
## 修改多行数据, 若无[where condition], 直接修改所有行
update <table_name> set column_name = value, column_name = value, ....... [where condition]

5. DQL(Data Query Language - 数据查询语言)

5.1 查询 + 限制条件(where + and/or)

## 基本查询语句
select column_name1, column_name2, ..... from <table_name> [where condition]
select * from <table_name> (开发时不建议使用)
## where条件: 在删除,修改及查询语句之后都可以添加 where 子句(条件), 用于筛选满足特定的数据进行删除,修改,查询操作
-- 等于判断: = 
-- 不等于判断: != / <>
-- 大于判断: >
-- 小于判断: <
-- 大于等于判断: >=
-- 小于等于判断: <=
-- 区间查询, [a, b]区间内: between a and b 
## 多条件查询: 在 where 子句当中通过多个条件通过逻辑运算符(and or)进行连接,通过多个条件筛选要操作的数据
and条件(同时满足): where x and y
or条件(满足其一): where x or y
not取反(范围取反): not between x and y 

5.2 结果处理(+/-, as, distinct)

## 查询指定列
- select <column_name1, column_name2> from <table_name> <where condition>
## 计算列
- select name, id - 1 from <table_name>
## 字段取别名 —— as
select <column_name> as <other_name> from <table_name>
## 将查询结果当中重复记录删除 —— distinct
select distinct <column_name, column_name, ....> from <table_name>

5.3 模糊查询(like)

## LIKE子句 -- where子句条件中, 使用like关键字完成模糊查询
% : 表示任意多个字符
_ : 表示一个字符
## 名字当中含有h : select * from stu where name like ‘%h%' (字母不区分大小写)

5.4 结果排序(order by)

## order by 排序
## 默认 asc 升序排序, desc 按照指定列降序排序
## 按照指定列升序 
select * from <table_name> [where condition] order by column_name asc
## 按照列1升序,再按照列2降序
select * from <table_name> [where condition] order by column_name1 asc, column_name2 desc

5.5 聚合函数(count, max, min, sum, avg)

## SQL中提供了一些可以对查询的记录的列进行计算的函数 —— 聚合函数
## count()函数: 统计满足满足条件指定字段个数
select count(<column_name>) from <table_name> [where condition]
## max()函数: 统计满足满足条件指定字段值的最大值
select max(<column_name>) from <table_name> [where condition]
## min()函数: 统计满足满足条件指定字段值的最小值
select min(<column_name>) from <table_name> [where condition]
## sum()函数; 统计满足满足条件指定字段值的总和
select sum(<column_name>) from <table_name> [where condition]
## avg()函数: 统计满足满足条件指定字段值的平均值
select avg(<column_name>) from <table_name> [where condition]

5.6 日期与字符串函数[now(), sysdate(), concat(), upper()… ]

## 日期函数和字符串函数
## 日期类型(datetime)
## 1. 可以使用字符串赋值,注意格式(yyyy-MM-dd hh:mm:ss)
insert into t(id, name, time) values(2,"hh", "2021-5-21 09:6:21");
## 2. 获取当前系统时间可以使用 now() 或者 sysdate()
insert into t(id, name, time) values(2,"hh", now());
insert into t(id, name, time) values(2,"hh", sysdate());
## 字符串函数:
## 1. concat(column1, column2)函数: 将多列进行连接
select concat(id, '-', name) from t;
## 2. upper(column)函数: 将字符串中字母全部设置为大写
select upper(name) from t;
## 3. lower(column)函数: 将字符串中字母全部设置为小写
select lower(name) from t;
## 4. substring(column, start, len)函数: 指定列当中截取部分长度
select substring(name, 1, 2) from t;

5.7 分组(group by) + 分页查询(limit)

## 分组查询(默认只显示分组后的第一个元素 - 重复元素不再显示)
## select 分组字段/聚合函数 from 表名 [where 条件] group by 分组列名 [having 条件] [order by]
- 1. 先按照 where 条件进行查询记录
- 2. 对查询记录进行分组
- 3. 执行 having 对分组后的数据再进行筛选
- 4. 执行 order by 排序
- select * 通常显示分组后的第一条记录(通常无意义)
- select * from t group by id;
- select 通常用分组字段和对分组字段进行聚合函数(进行相关计算)
- select id, count(id) from t group by id having id >= 3 order by id desc
## 分页查询(limit x, y)
## 查询[x + 1, x + y + 1]
select * from <table_name> [where condition] limit (pagenum - 1)*pagesize, pagesize
select * from <table_name> limit 0, 5;

6. 数据表关联关系(一对一, 一对多, 多对多)

6.1 关联关系

## 一对一关联
-- 1. 两张数据表主键相同的数据相互对应
-- 2. 唯一外键: 任意一张表添加外键约束与另一张表主键关联,并且将外键添加唯一约束(存在且唯一)

在这里插入图片描述

## 一对多关联
-- 1. 在多的一方添加外键,与另一方的主键进行关联

在这里插入图片描述

## 多对多关联
-- 1. 额外创建一张关系表,定义两个外键分别与两个数据表中的主键进行关联

在这里插入图片描述

6.2 外键约束(创建\修改)

## 外键约束
-- 创建表时定义 cid 字段,并添加外键约束
-- cid列要和 course(课程)表当中的 course_id 进行关联,cid字段类型和长度要和course_id保持一致constraint <外键名> foreign key(列名) references <主表名>(<列名>)create table <table_name>(cid int,constraint fk_students_classes foreign key(cid) references courses(course_id)
);
ALTER TABLE <数据表名> ADD CONSTRAINT <外键名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);## 外键约束修改
-- 创建表之后, 为cid字段添加外键约束
alter table students add constraint fk_students_classes foreign key(cid) references course(course_id)
-- 删除外键约束
alter table students drop foreign key fk_students_classes

6.3 外键约束 ------ 级联

## 外键约束-级联-- 被关联的表当中的主键不能修改和删除(若没有关联信息则可直接修改)-- 如果一定需要修改班级的id信息(3)
1. 将需要修改class_id对应对应学生记录的cid设置为null
2. 修改想要修改的class_id
3. 将学生表当中cid设置为null的记录重新设置为这个新的class_id
update students set cid = 4 where cid is null;
## 添加外键时同步设置 级联修改 和 级联删除 (修改主表[course]会同步影响副表[students])-- 去除原有的外键约束
alter table students drop foreign key fk_students_classes
-- 级联修改
alter table students add constraint fk_students_classes foreign key(cid) references course(course_id) on update cascade
-- 级联删除
alter table students add constraint fk_students_classes foreign key(cid) references course(course_id) on delete cascade

7. 连接查询

7.1 联合查询(join)

## join实现多表的联合查询 —— 连接查询
## inner join 内连接(两张数据表的笛卡尔集)
select * from <table_name1> inner join <table_name2> [on condition];## leftr join 左连接(左表完全显示,若右表有匹配则显示)
select * from <table_name1> left join <table_name2> [on condition];## right join 右连接(右表完全显示,左表匹配则显示)
select * from <table_name1> right join <table_name2> [on condition];
## where 和 on 设置查询条件## where过滤: 先生成笛卡尔积再过滤(效率低)
select * from <table_name1> inner join <table_name2> where condition;## on设置连接查询条件: 先判断是否成立,成立则连接为一条记录
select * from <table_name1> inner join <table_name2> on condition;

7.2 嵌套查询

## 子查询/嵌套查询## 查询结果(单行单列), 从则可以直接使用关系运算符(=, !=, ...)连接
select * from <table_name> where <column_name> = (select <column_name2> from <table_name2> where ...)## 查询结果(多行单列)
- 传统方式: 
select * from students where id = 1 union 
select * from students where id = 2 .....
- 子查询方式: in / not in
select * from students where id in (select class_id from classes where ...)## 查询结果(多行多列): 取别名作为新的表继续使用
select * from (select * from students where cid = 1) <table_别名-t> where t.name = "学生1"

相关文章:

Mysql数据库操作总结

文章目录 1. DDL(Data Definition Language - 数据定义语言)1.1 数据库1.2 数据表(创建查询删除)1.3 数据表(修改) 2. 数据类型2.1 数值2.2 字符2.3 日期 3. 字段约束3.1 约束3.2 主键约束修改3.3 主键自增 联合主键 4. DML(Data Manipulation Language - 数据操作语言)4.1 添…...

在 ZBrush、Substance 3D Painter 和 UE5 中创作警探角色(P2)

大家好&#xff0c;下篇分享咱们继续来说警探角色的重新拓扑、UV、材质贴图和渲染处理。 重新拓扑/UV 这是对我来说最不有趣的部分——重新拓扑。它显然是实时角色中非常重要的一部分&#xff0c;不容忽视&#xff0c;因为它会影响大量的 UV、绑定和后期渲染&#xff0c;这里…...

如何在大规模服务中迁移缓存

当您启动初始服务时&#xff0c;通常会过度设计以考虑大量流量。但是&#xff0c;当您的服务达到爆炸式增长阶段&#xff0c;或者如果您的服务请求和处理大量流量时&#xff0c;您将需要重新考虑您的架构以适应它。糟糕的系统设计导致难以扩展或无法满足处理大量流量的需求&…...

【GPT LLM】跟着论文学习gpt

GPT1开山之作&#xff1a;Improving language understanding by generative pre-training 本文提出了gpt1&#xff0c;即使用无标签的数据对模型先进行训练&#xff0c;让模型学习能够适应各个任务的通用表示&#xff1b;后使用小部分 task-aware的数据对模型进行微调&#xff…...

【玩转Docker小鲸鱼叭】Docker容器常用命令大全

在 Docker 核心概念理解 一文中&#xff0c;我们知道 Docker容器 其实就是一个轻量级的沙盒&#xff0c;应用运行在不同的容器中从而实现隔离效果。容器的创建和运行是以镜像为基础的&#xff0c;容器可以被创建、销毁、启动和停止等。本文将介绍下容器的这些常用操作命令。 1、…...

专项练习11

目录 一、选择题 1、执行下列选项的程序&#xff0c;输出结果不是Window对象的是&#xff08;&#xff09; 2、以下哪些代码执行后 i 的值为10&#xff1a; 二、编程题 1、判断 val1 和 val2 是否完全等同 2、统计字符串中每个字符的出现频率&#xff0c;返回一个 Object&…...

ASP.NET+SQL通用作业批改系统设计(源代码+论文)

随着网络高速地融入当今现代人的生活,学校对网络技术的应用也在不断地提高。学校的教学任务十分复杂,工作也很繁琐,在教学任务中,作业的批改也是一个很重要的环节。为了提高老师工作效率,减轻教师的工作强度,提高作业批改的灵活性,《通用作业批改系统》的诞生可以说是事在…...

基于深度学习的高精度打电话检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度打电话检测识别系统可用于日常生活中或野外来检测与定位打电话目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的打电话目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检…...

Vue搭建智能文本检索视频界面

前言 随着人工智能技术的发展&#xff0c;智能文本检索已经成为了一种非常流行的技术。在视频领域中&#xff0c;智能文本检索技术可以帮助用户快速找到自己需要的视频片段&#xff0c;提高用户的观看体验。本文将介绍如何使用Vue框架搭建一个智能文本检索视频界面&#xff0c…...

软考A计划-系统集成项目管理工程师-一般补充知识-中

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…...

springboot-内置Tomcat

一、springboot的特性之一 基于springboot的特性 自动装配Configuretion 注解 二、springboot内置Tomcat步骤 直接看SpringApplication方法的代码块 总纲&#xff1a; 1、在SpringApplication.run 初始化了一个上下文ConfigurableApplicationContext configurableApplica…...

Flink流批一体计算(2):Flink关键特性

目录 Flink关键特性 流式处理 丰富的状态管理 丰富的时间语义支持 Data pipeline 容错机制 Flink SQL CEP in SQL Flink 应用程序可以消费来自消息队列或分布式日志这类流式数据源&#xff08;例如 Apache Kafka 或 Kinesis&#xff09;的实时数据&#xff0c;也可以从各…...

2023软件工程中各种图在现代企业级开发中的使用频率

概览 系统流程图 ✔ 数据流图 不常用 ER图 ✔ 状态转换图 ✔ Warnier图 不常用 IPO图 不常用 Petri网 不常用 层次方框图 不常用 层次图 a.k.a. H图 ✔ 1,层次图描绘软件的层次结构.层层次方框图描绘的是数据结构。 2,层次图的方框表示模块或子模块。层次方框图的方框表示数据结…...

macOS Big Sur 11.7.8 (20G1351) 正式版 ISO、PKG、DMG、IPSW 下载

macOS Big Sur 11.7.8 (20G1351) 正式版 ISO、PKG、DMG、IPSW 下载 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Window…...

【C++案例】一个项目掌握C++基础-通讯录管理系统

文章目录 1、系统需求2、菜单功能3、退出功能4、添加联系人4.1 设计联系人结构体4.2 设计通讯录结构体4.3 main函数中创建通讯录4.4 封装添加联系人函数4.5 测试添加联系人功能 5、显示联系人5.1 封装显示联系人函数5.2 测试显示联系人功能 6、删除联系人6.1 封装检测联系人是否…...

Triton教程 --- 动态批处理

Triton教程 — 动态批处理 Triton系列教程: 快速开始利用Triton部署你自己的模型Triton架构模型仓库存储代理模型设置优化动态批处理 Triton 提供了动态批处理功能&#xff0c;将多个请求组合在一起执行同一模型以提供更大的吞吐量。 默认情况下&#xff0c;只有当每个输入在…...

Python的并行(持续更新)

0. 参考&#xff1a; 《Python并行编程 中文版》https://python-parallel-programmning-cookbook.readthedocs.io/zh_CN/latest/index.html 1. 线程和进程&#xff1a; 进程可以包含多个并行运行的线程&#xff1b;通常&#xff0c;操作系统创建和管理线程比进程更省CPU资源&am…...

chatgpt赋能python:Python实现Fibonacci数列

Python实现Fibonacci数列 Fibonacci数列是一个非常经典的数列&#xff0c;定义如下&#xff1a; F ( 0 ) 0 , F ( 1 ) 1 F(0)0, F(1)1 F(0)0,F(1)1 F ( n ) F ( n − 1 ) F ( n − 2 ) F(n)F(n-1)F(n-2) F(n)F(n−1)F(n−2) 也就是说&#xff0c;第n个数等于前两个数之和…...

开环模块化多电平换流器仿真(MMC)N=6

模型简介&#xff1a; 运行环境MATLAB2021a 开环模块化多电平换流器仿真&#xff08;MMC&#xff09;N&#xff1d;6&#xff0c;连接负载&#xff0c;采用载波移相调制。 可以得到换流器输出N&#xff0b;1&#xff1d;7电平的相电压波形。可考虑线路阻抗。 子模块采用半桥结…...

java springboot整合MyBatis联合查询

前面文章 java springboot整合MyBatis做数据库查询操作写了springboot整合MyBatis的方法 并演示了基础查询的语法 根据id查 那么 我们这次来演示联合查询 我们staff 表 内容如下 每条数据 对应的都有一个departmentid 这是 department部门表的外键id department表内容如下 如…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...