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

MySQL笔记大总结20250108

Day2

1.where

(1)关系运算符

select * from info where id>1;
select * from info where id=1;
select * from info where id>=1;
select * from info where id!=1;

(2)逻辑运算符

select * from info where name="吴佩奇" and age=19;   
select * from info where name="alex" or age=49;
select * from info where (name="李杰" or email="pyyu@live.com") and age=49;  

(3)between

select * from info where id between 2 and 4;

(4)in

select * from info where id in (1,4,6);
select * from info where id not in (1,4,6);
select * from info where id in (select id from depart);

(5)exists

select * from info where exists(select * from info where id=5);
select * from info where not exists(select * from info where id=5);

(6)二次查询

select * from (select * from info where id>2) as T where T.age>30;

(7)通配符

select * from info where email like "%y%";
select * from info where name like "_ony";

2.指定列

(1)选择所有数据

1.语法
select * from 表名;
2.示例
select * from course;

 

(2)选择指定列数据

1语法
select 列名1,列名2 from 表名;
2.示例
select cname,teacher_id from course;

(3)为选定列指定别名

1.语法
select 列名1 as 别名1,列名2 as 别名2 from 表名;
2.示例
select cname as u1,teacher_id as v1 from course;
说明:
as 在mysql中是为列名起别名的关键字。

(4)新增数据并指定列名

1.语法
select 列名1 as 别名1,列名2 as 别名2,"数值" as 新增列名 from 表名;
2.示例
select cname as u1,teacher_id as v1,"y" as w1 from course;

select cname as u1,teacher_id as v1,"y" as w1 from course;
代码解释:
SELECT:这是 SQL 中用于查询数据的关键字。
cname as u1:表示从 course 表中选择 cname 列,并将该列的名称在结果集中重命名为 u1。这样在最终的查询结果中,原本的 cname 列将显示为 u1 列。
teacher_id as v1:从 course 表中选择 teacher_id 列,并将其重命名为 v1 列。这在结果集中将以 v1 的名称显示该列的数据。
"y" as w1:这里是一个常量值 "y",将其作为一个名为 w1 的列添加到结果集中。无论表 course 中有多少行数据,w1 列的值都将始终为 "y"。这是一种在结果集中添加常量列的方法,在某些情况下可以用来补充信息或进行数据标记。
FROM course:指定了要查询数据的表,即 course 表。

 (5)动态获取关联数据并指定新增列名

select 
cname,
teacher_id,
(select tname from teacher where teacher.tid=teacher_id) as teacher
from course;

3.按指定列排序

1.顺序
select * from teacher order by 列名 desc;
2.倒序
select * from teacher order by 列名 asc;
3.示例
select * from teacher order by tname desc;
select * from teacher order by tname asc;
4.按多列排序
select * from info order by age,id desc;
优先按照age从小到大排序;如果age相同则按照id从大到小排序。

4.获取部分数据

1.获取排在前面一定行数的数据
select * from teacher limit 10;
2.获取指定行号后面的一定行数的数据
select * from teacher limit 10 offset 5;
从第5行开始但不包括第5行

5.分组

(1)关于对分组的理解:实际上是获取某个分组的统计数据。

1.语法
select 分组列名,分组统计函数 from 表名 group by 分组列名;
2.示例
select gender,count(gender) from student group by gender;
select gender,count(gender) as count from student group by gender;--为统计列重新命名

(2)筛选分组后的数据

 关键字:having

1.示例
select age,count(id) from info where id>4 group by age having count(id)>=2;
2.代码解释:
SELECT age, COUNT(id):
SELECT 关键字用于指定要从表中查询的列。在这里,我们要查询两个部分:
age:表示要选择 info 表中的 age 列。
COUNT(id):COUNT() 是一个聚合函数,用于计算 id 列的数量。在这个查询中,它会统计满足条件的每组 age 中 id 的数量。
FROM info:
这部分指定了要从哪个表中查询数据,这里是 info 表。
WHERE id > 4:
WHERE 子句用于筛选满足条件的数据行。在这里,它筛选出 id 大于 4 的记录。
GROUP BY age:
GROUP BY 子句用于将数据按照 age 列的值进行分组。对于 info 表中具有相同 age 的记录,会被分到同一组中。
HAVING COUNT(id) >= 2:
HAVING 子句用于对分组后的结果进行筛选。这里使用 HAVING 而不是 WHERE,是因为 WHERE 不能用于筛选聚合结果,而 HAVING 可以。它筛选出那些 id 数量(通过 COUNT(id) 计算)大于或等于 2 的组。

6.表关系(左右关系)

1.左外连接并获取所有列的数据
(1)语法
select * from 左表名 left outer join 右表名 on 左表名.对应列=右表名.对应列;
(2)示例
select * from student left outer join class on student.class_id=class.cid;
2.左外连接并获取指定列的数据
select sid,sname,gender,caption from student left outer join class on student.class_id=class.cid;
2.右外连接参左外连接
3.内连接,需要时查找笔记
4.上下连接,很少用,需要时查找笔记

7.外键约束

(1)创建表时设置外键

1.创建表时设置外建
constraint 外键约束名称 foreign key (需要设置外键的列名) references 关联表名(需要关联的列名)2.示例
constraint fk_student_class foreign key (class_id) references class(cid)3.代码解释:
CONSTRAINT:这是 SQL 中的关键字,用于在表中创建约束。约束用于确保数据的完整性和一致性。
fk_student_class:这是给外键约束取的一个名字,这个名字可以根据需要自定义,通常遵循一定的命名规则,以便后续的管理和维护,比如 fk_表名_关联表名 这样的命名约定,在这里表示这是一个与 student 表和 class 表关联的外键约束,其名称为 fk_student_class。
FOREIGN KEY (class_id):这部分指定了在当前表中哪个列将作为外键,这里是 class_id 列。外键列的值必须是另一个表中某列的值或者为 NULL(如果外键允许 NULL 值)。
REFERENCES class(cid):指定了外键所引用的表和列,这里表示 class_id 列引用了 class 表中的 cid 列。这意味着 class_id 列中的值必须是 class 表中 cid 列的值,或者为 NULL(如果外键允许 NULL)。

(2)为已有表添加外键约束

1.语法
alter table guardian add constraint 外键约束名称 foreign key (需要设置外键的列名) references 关联表名(需要关联的列名)
2.示例
alter table guardian add constraint fk_guardian_class foreign key guardian(class_id) references class(cid);

(3)删除外键

1.语法
alter table 表名 drop foreign key 外键约束名称;
2.示例
alter table guardian drop foreign key fk_guardian_class;

8.SQL语句顺序

from
join on
where
group by
having
(select执行顺序和书写顺序不一致)
order by
limit

结合老师课件写的示例,测试可以成功运行:
select *
from info 
left outer join depart on info.depart_id=depart.did
where id>1
group by age
having count(id)>1
order by age
limit 1;

特别舒适的MySQL语句写法 

1.示例代码
SELECT t1.column1, t2.column2, COUNT(t3.column3) AS count_column3
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.table1_id
LEFT JOIN table3 t3 ON t2.id = t3.table2_id
WHERE t1.column4 > 10
GROUP BY t1.column1, t2.column2
HAVING COUNT(t3.column3) > 2
ORDER BY t1.column1 ASC
LIMIT 10;
2.执行顺序解读
该 SQL 语句的执行顺序如下:
从 table1(FROM table1 t1)开始,这是左外连接中的左表。
执行 LEFT JOIN table2 t2 ON t1.id = t2.table1_id,将 table1 中的行与 table2 中匹配的行连接起来,如果 table2 中没有匹配的行,用 NULL 填充 table2 的列。
接着执行 LEFT JOIN table3 t3 ON t2.id = t3.table2_id,将上一步的结果与 table3 中的行进行连接,如果 table3 中没有匹配的行,用 NULL 填充 table3 的列。
使用 WHERE t1.column4 > 10 对连接后的结果集进行筛选。
根据 GROUP BY t1.column1, t2.column2 对筛选后的结果进行分组。
使用 HAVING COUNT(t3.column3) > 2 对分组结果进行筛选。
从分组筛选后的结果中,选择 t1.column1、t2.column2 和 COUNT(t3.column3) 作为结果列,并将 COUNT(t3.column3) 重命名为 count_column3(SELECT t1.column1, t2.column2, COUNT(t3.column3) AS count_column3)。
对结果集进行升序排序(ORDER BY t1.column1 ASC)。
最后,仅返回前 10 行(LIMIT 10)。

8.创建用户及授权

1.创建用户
create user happy_mydata@127.0.0.1 identified by "bai666";
2.查询用户
select user,authentication_string,host from mysql.user;
3.删除用户
drop user happy_mydata@127.0.0.1;
4.修改用户
rename user mydata_happy to mysql_happy@localhost;
5.修改用户密码(两种方法)
set password for 'mysql_happy'@'localhost'  = '111111';
alter user 'mysql_happy'@'localhost' identified by 'new_password';
set password for mysql_happy@localhost=password("6666");(新版本已作废,仅适用于5.7.6以前的版本)
6.授权(先执行6后执行7才会完成授权)
grant all privileges on *.* to mysql_happy@localhost;
7.授权生效
flush privileges;
8.查看授权
show grants for mysql_happy@localhost;
9.取消授权(先执行9后执行7才会完成取消授权)
revoke all privileges on *.* from mysql_happy@localhost;

111

相关文章:

MySQL笔记大总结20250108

Day2 1.where (1)关系运算符 select * from info where id>1; select * from info where id1; select * from info where id>1; select * from info where id!1;(2)逻辑运算符 select * from info where name"吴佩奇" and age19; select * from info wh…...

stm32week3

stm32学习 二.外设 8.TIM输出比较 OC(output compare)输出比较 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0、翻转操作,用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道 高级定时器的…...

uniapp 的uni.getRecorderManager() 录音功能小记

官网上明确说的是全局唯一并且只是获取对象,所以会导致一个问题就是,当你多个页面要用到这个对象的时候,会发现 onStop 方法会被覆盖,导致调用结果不是自己想要的 解决办法也简单粗暴,在需要用到的界面重新覆盖onStop…...

【面试题】技术场景 4、负责项目时遇到的棘手问题及解决方法

工作经验一年以上程序员必问问题 面试题概述 问题为在负责项目时遇到的棘手问题及解决方法,主要考察开发经验与技术水平,回答不佳会影响面试印象。提供四个回答方向,准备其中一个方向即可。 1、设计模式应用方向 以登录为例,未…...

RT-DETR代码详解(官方pytorch版)——参数配置(1)

前言 RT-DETR虽然是DETR系列,但是它的代码结构和之前的DETR系列代码不一样。 它是通过很多的yaml文件进行参数配置,和之前在train.py的parser argparse.ArgumentParser()去配置所有参数不同,所以刚开始不熟悉代码的时候可能不知道在哪儿修…...

腾讯云AI代码助手编程挑战赛-凯撒密码解码编码器

作品简介 在CTFer选手比赛做crypto的题目时,一些题目需要自己去解密,但是解密的工具大部分在线上,而在比赛过程中大部分又是无网环境,所以根据要求做了这个工具 技术架构 python语言的tk库来完成的GUI页面设计,通过…...

搭建docker私有化仓库Harbor

Docker私有仓库概述 Docker私有仓库介绍 Docker私有仓库是个人、组织或企业内部用于存储和管理Docker镜像的存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部…...

【Vim Masterclass 笔记09】S06L22:Vim 核心操作训练之 —— 文本的搜索、查找与替换操作(第一部分)

文章目录 S06L22 Search, Find, and Replace - Part One1 从光标位置起,正向定位到当前行的首个字符 b2 从光标位置起,反向查找某个字符3 重复上一次字符查找操作4 定位到目标字符的前一个字符5 单字符查找与 Vim 命令的组合6 跨行查找某字符串7 Vim 的增…...

GIC中断分组介绍(IMX6ull为例)

一、Cortex-A7内核中断 Cortex-A7内核具有多个中断类型,但其中最重要的是复位中断和IRQ(普通中断请求)中断。对于IMX6ULL而言,主要关注的是IRQ中断,因为外部设备和内部事件通常都会触发这类中断。 从左到右 中断控制…...

计算机网络期末复习(知识点)

概念题 在实际复习之前,可以看一下这个视频将网络知识串一下,以便更好地复习:【你管这破玩意叫网络?】 网络规模的分类 PAN(个人区域网络):用于个人设备间的连接,如手机与蓝牙耳机…...

Apache XMLBeans 一个强大的 XML 数据处理框架

Apache XMLBeans 是一个用于处理 XML 数据的 Java 框架,它提供了一种方式将 XML Schema (XSD) 映射到 Java 类,从而使得开发者可以通过强类型化的 Java 对象来访问和操作 XML 文档。下面将以一个简单的案例说明如何使用 Apache XMLBeans 来解析、生成和验…...

飞凌嵌入式i.MX8M Mini核心板已支持Linux6.1

飞凌嵌入式FETMX8MM-C核心板现已支持Linux6.1系统,此次升级不仅使系统功能更加丰富,还通过全新BSP实现了内存性能的显著提升。 基于NXP i.MX8M Mini处理器设计开发的飞凌嵌入式FETMX8MM-C核心板,拥有4个Cortex-A53高性能核和1个Cortex-M4实时…...

【数据链电台】洛克希德·马丁(Lockheed Martin)

洛克希德马丁公司(Lockheed Martin)是全球领先的航空航天、国防、先进技术和安全领域的供应商之一。 公司为美军及盟国军队提供了广泛的通信系统,包括数据链电台和相关的通信系统。 洛克希德马丁的许多产品用于战术通信、卫星通信、电子战、…...

python关键字(保留字)用法、保留的标识符类(1)

python关键字(保留字)用法、保留的标识符类(1) 一、python保留字(关键字) 1.1、python关键字 以下标识符为保留字,或称 关键字,不可用于普通标识符,即我们不能把它们用作任何标识符名称。 python 保留字(关键字) 关键…...

Ubuntu平台虚拟机软件学习笔记

Ubuntu平台上常见虚拟机软件 VirtualBox [Download]KVM/QEMU 1. VirtualBox 1.1 查看安装版本 VBoxManage -V2. KVM/QEMU KVM: Kernel-based Virtual Machine QEMU: Quick EMUlator 通义千问: virt-manager 既不是QEMU也不是KVM,而是用于管理和创建…...

【数据库系统概论】数据库恢复技术

目录 11.1 事务的基本概念 事务的定义 事务的开始与结束 事务的ACID特性 破坏ACID特性的因素 11.2 数据库恢复概述 11.3 故障的种类 1. 事务内部的故障 2. 系统故障 3. 介质故障 4. 计算机病毒 11.4 恢复的实现技术 如何建立冗余数据 数据转储 登记日志文件 11…...

R 语言科研绘图 --- 折线图-汇总

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

基于 Python 和 OpenCV 的人脸识别上课考勤管理系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

工业 4G 路由器赋能远程医疗,守护生命线

在医疗领域,尤其是偏远地区的医疗救治场景中,工业 4G 路由器正发挥着无可替代的关键作用,宛如一条坚韧的 “生命线”,为守护患者健康持续赋能。 偏远地区医疗资源相对匮乏,常常面临着专业医生短缺、诊疗设备有限等困境…...

Windows安装Ubuntu子系统图形化工具

Windows如何使用WSL方式安装Ubuntu,可以参考:https://blog.csdn.net/xiangzhihong8/article/details/145044370。接下来,我们说一下如何安装Ubuntu的图形化系统。 为了测试,这里介绍两种常见的图形化工具。第一种为VcXsrv Gnome…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...