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

MySQL学习笔记(持续更行ing)

级别:

1. 了解,面试概率10%

2. 掌握,面试概率50%

3. 重点,面试概率80%

目录

1. 数据库****

1.1. 概念****

1.2. 分类****

1.2.1. 关系型数据库****

1.2.1.1. SQL****

1.2.2. 安装****

1.2.2.1. Navicat****

1.2.3. 非关系型数据库****

2. SQL语句****

2.1. 常用数据类型****

2.2. 数据库****

2.3. 表****

2.3.1. 字段约束****

2.4. 数据****

2.4.1. 增 insert****

2.4.2. 删 delete****

2.4.3. 改 update****

2.4.4. 查 select****

2.4.4.1. 条件查询where****

2.4.4.1.1. 比较运算符****

1. 等于=****

2. 小于<****

3. 小于等于<=****

4. 大于>****

5. 大于等于>=****

6. 不等于!=****

2.4.4.1.2. 逻辑运算符****

1. 与and****

2. 或or****

3. 非not****

2.4.4.1.3. 模糊查询****

1.  %****

2.  _****

2.4.4.2. 范围查找****

2.4.4.2.1. 连续范围 between..and..****

2.4.4.2.2. 非连续范围 in****

2.4.4.3. Null****

2.4.4.4. 别名 as****

1. 表的别名****

2. 字段的别名****

2.4.4.5. 排序order by****

1. 单字段排序****

2. 多字段排序****

2.4.4.6. 聚合函数/统计****

1. 总数Count****

2. 去重 Distinct****

3. 最大值max****

4. 最小值min****

5. 求和sum****

6. 平均avg****

2.4.4.7. 数据分组group by****

1. 单字段分组****

2. ****

3. 多字段分组****

2.4.5. 练习****


1. 数据库****

1. 为什么学习数据库?

(1) 测试理论,测试对象,源程序,目标程序,各种文档,数据

(2) 几乎所有软件的数据都存储在数据库中

(3) 方便更深层的定位bug

① 如:刚从页面注册成功的用户,无法登录

② 如:用户注册登录都没有问题

面试常见的问题:你在测试数据的过程中发现过拿些bug

1.1. 概念****

数据库 DB:英文是database,简单来说就是一个存储数据的地方

DB是DBMS(database management system 数据管理系统)所创建的管理数据的容器

如:一个企业(DBMS)创建了一个动物园(DB),包括很多动物(Datas)

表 table:数据库中存储数据的基本单位,数据按照分类存储到不同的表中

如:为了方便管理各种动物,在一个动物园(DB)中,把一群老虎(data)放在老虎分园(table)中

1.2. 分类****

1.2.1. 关系型数据库****

概念:由多张有关联的表组成的数据库

核心数据:

1. 数据库:表的集合,一个数据库中可以有多张表

2. 表:由行和列组成的二维表

3. 行:记录,即一条数据

4. 列:字段

产品:

1. Oracle:用于大型项目,如:银行、电信等项目,付费

2. Mysql:开源免费,互联网时代使用最广泛的关系型数据库

3. Sqlserver:微软平台项目常用,使用极小

4. Sqlite:轻量级数据库,主要应用于移动平台

1.2.1.1. SQL****

定义:结构化查询语言

Sql是一门语言,专门用来操作关系型数据库,可以操作oracle、mysql、sqlserver、sqlite

Sql语言不区分大小写

1.2.2. 安装****

MySQL :: Download MySQL Installer (Archived Versions)

MySQL :: Download MySQL Installer

MySQL :: Download MySQL Community Server (Archived Versions)

1.2.2.1. Navicat****

客户端连接数据库

1.2.3. 非关系型数据库****

2. SQL语句****

2.1. 常用数据类型****

面试题:

1. 数据库中常见的数据类型

2. 工作中有没有遇见和数据类型有关的bug

有的。我记得当时开发的是一个论坛项目,在一次开发评审会议上,后端设计的数据表里,文章标题用的数据类型是varchar(10),后来我做了调研,发现10个字符根本不够,后来建议改为20个字符的限制。

2.2. 数据库****

显示所有数据库:show databases;

使用指定的数据库:use 数据库名称;

显示指定数据库的所有表:show tables;

2.3. ****

创建表:

1. create table 表名(  2.     字段名 数据类型(长度) 约束,  3.     字段名 数据类型(长度) 约束 4. );  

删除表:包括表结构+表数据

1. drop table 表名; #若表不存在,则会报错2. drop table if exists 表名  #若表不存在,也不会报错

2.3.1. 字段约束****

常用约束****

1. 主键primary key:表示值是唯一的,不可重复,auto_increment代表自动增长

2. 非空not null:此字段不允许填写控制

3. 默认值default:当不填写此字段的值时,会使用默认值

面试题【3】

Delete、truncate、drop的区别

Delete删表数据时,会保留主键记录和表结构

Truncate删表数据,会同时删除主键记录,保留表结构

Drop 删表,表结构、主键记录、表数据全被删除

2.4. 数据****

2.4.1. 增 insert****

插入单条:

1. insert into 表名 values(值1,值2,值3);

   

插入多条:

1. insert into 表名 values2. (值1,1,1),3. (值2,2,2),4. (值3,3,3);

指定字段插入:

1. insert into 表名 (字段1,字段2) values(值1,值2);  

 

面试题

1. 什么时候需要插入数据

没有硬件设备:如,查询商品出库信息,如果没有出库信息,就可以插入一条出库的记录,以此来准备测试环境。

需要付款的时候,如,游戏客户端上有个按钮,可以查询游戏皮肤,此时就可以插入一条数据,将账户和皮肤id信息关联起来。

2.4.2. 删 delete****

 delete from 表名 where 条件;   

 Truncate****

删除表中所有数据,保留表结构

 truncate table 表名;   

2.4.3. 改 update****

update 表名 set 字段=值,字段=值 where 条件;  

2.4.4. 查 select****

生活中的软件需要查询数据的场景

1. 购物类型的软件:搜商品、看详情、看评价、看物流、看订单

2. 学生管理系统:搜学生、看班级信息、看成绩

3. 聊天系统:搜附近、搜在线、看朋友圈、看对方详情、看聊天记录

4. ....

查询所有字段

 select * form 表名; 

查询指定字段

 Select 字段1,字段2, from 表名;  
2.4.4.1. 条件查询where****

1. select *****/字段 from 表名 where 条件;

补充:where关键字也可以在update和delete语句中使用

 # 查询students表中id为1的数据  select * from students where id=1;  # 查询students表中age为30的名字name和班级class  select name,class from students where age=30; 

工作中用到where的场景:

1. 搜商品:where在商品名或者商品介绍中包含搜索的关键字

2. 看详情,where id为具体某一个商品

3. 搜学生,where id或者name为具体某一个学生

4. 搜附近,where 距离小于多少公里

5. ....

2.4.4.1.1. 比较运算符****
1. 等于=****
 select * from students where name=’周瑜’;  
2. 小于<****
select * from students where age<25;  
3. 小于等于<=****
select * from students where age<=25;  
4. 大于>****
select * from students where age>25;  
5. 大于等于>=****
1. select * from students where age>=25;  
6. 不等于!=****
1. select * from students where age!=25;  

2.4.4.1.2. 逻辑运算符****
1. 与and****
1. # 查询age小于30,且sex为女的学生记录  2. select * from students where age<30 and sex='女'; 

2. 或or****
1. # 查询sex为女,或者class为1的学生记录  2. select * from students where sex='女' or class=1;  

3. 非not****
1. # 查询position非辅助的学生记录  2. select * from students where position!='辅助';  
2.4.4.1.3. 模糊查询****

Like实现模糊查询

1.  %****

代表任意多个字符

1. # 查询名字里带白的学生记录  

2. select * from students where name like '%白%';  

2.  _****

代表任意一个字符

3. # 查询姓白的二字学生记录  4. select * from students where name like '白_';  
2.4.4.2. 范围查找****
2.4.4.2.1. 连续范围 between..and..****
1. # 查询age为25-30的学生记录  2. select * from students where age between 25 and 30; 

2.4.4.2.2. 非连续范围 in****
1. # 查询position是 刺客、射手、辅助的学生记录  2. select * from students where position in ('刺客','射手','辅助');  
2.4.4.3. Null****

Null在sql中代表空,不是0

Is null 判断为空

Is not null 判断非空

Null 不能用比较运算符判断

2.4.4.4. 别名 as****
1. 表的别名****
1. # 给表起别名 stu  2. select * from students as stu; 3. # as 可以省略4. select * from students  stu;

2. 字段的别名****
1. # 给字段起别名  2. select name as 姓名,sex as 性别 from students;  

2.4.4.5. 排序order by****

1. order by 字段名 asc/desc    

Asc:升序 从小到大

Desc:降序 从大到小

1. 单字段排序****
1. # 按age从小到大给students排序  2. select * from students order by age asc  
2. 多字段排序****
1. # 按age从小到大给students排序  2. # 当年龄相同时再按id从大到小排序  3. select * from students order by age asc,id desc;  
2.4.4.6. 聚合函数/统计****
1. 总数Count****

1. count(字段名/*)  

1. # 查询students学生总数  2. select count(*) from students   3. # 查询students表中所有男性学生总数  4. select count(*) from students where sex='男'; 5. select count(id) from students where sex='男';  

6.  Count*和countid查询结果是一样的,效率不同,大量数据时后者更快

2. 去重 Distinct****
7. # 查询students学生总数  8. select count(distinct class) from students 
3. 最大值max****

1. max(字段)  

1. # 查询students表中的最大年龄  2. select max(age) from students;   3. # 查询students表中女生最大年龄  4. select max(age) from students where sex='女'; 

4. 最小值min****

1. M in(字段)  

1. # 查询students表中的最小年龄  2. select m in(age) from students;   3. # 查询students表中女生最小年龄  4. select m in(age) from students where sex='女'; 
5. 求和sum****

1. sum(字段)  

1. # 查询students表中的年龄总和 2. select sum(age) from students;   3. # 查询students表中女生总和  4. select sum(age) from students where sex='女'; 

6. 平均avg****

1. avg(字段)  

1. # 查询students表中的平均年龄  2. select avg(age) from students;   3. # 查询students表中女生平均年龄  4. select avg(age) from students where sex='女'; 
2.4.4.7. 数据分组group by****
1. 单字段分组****

1. group by(字段)  

2. select 聚合函数 form 表 group by 字段名;  

3. select 字段名,聚合函数 from 表 where 条件 group by 字段名;  


1. #按照不同性别分组来查询students表中男女的总数  2. select sex,count(*) from students group by sex;  
2. ****
3. 多字段分组****

2.4.5. 练习****

数据准备****

1. #创建表2. create table student(  3.     id INT PRIMARY KEY auto_increment,  4.     name VARCHAR(20) not null,  5.     sex CHAR(1),  6.     age TINYINT UNSIGNED,  7.     class TINYINT UNSIGNED,  8.     position VARCHAR(5)  9. ); 
1. #插入数据2. insert into students values  3. (1,"白起","男",40,1,"坦克"),  4. (2,"猪八戒","男",80,2,"坦克"),  5. (3,"花木兰","女",22,3,"战士"),  6. (4,"狂铁","男",30,1,"战士"),  7. (5,"娜可露露","女",20,2,"刺客"),  8. (6,"李白","男",28,3,"刺客"),  9. (7,"妲己","女",18,1,"法师"),  10. (8,"周瑜","男",25,2,"法师"),  11. (9,"孙尚香","女",18,3,"射手"),  12. (10,"鲁班","男",16,3,"射手"),  13. (11,"庄周","男",21,3,"辅助"),  14. (12,"瑶","女",18,3,"辅助");

相关文章:

MySQL学习笔记(持续更行ing)

级别&#xff1a; 1. 了解&#xff0c;面试概率10% 2. 掌握&#xff0c;面试概率50% 3. 重点&#xff0c;面试概率80% 目录 1. 数据库**** 1.1. 概念**** 1.2. 分类**** 1.2.1. 关系型数据库**** 1.2.1.1. SQL**** 1.2.2. 安装**** 1.2.2.1. Navicat**** 1.2.3. 非…...

服务器配置Huggingface并git clone模型和文件

服务器配置Huggingface并git clone模型和文件 参考&#xff1a;https://huggingface.co/welcome 1 注册hugging face 官网注册&#xff0c;并获取token【https://huggingface.co/settings/tokens】&#xff0c;用于登录 2 安装 2.1 安装lfs https://stackoverflow.com/qu…...

Rust 开发的高性能 HTTP 请求工具

一、简述 在现在的软件开发领域&#xff0c;HTTP请求的快速验证变得越来越重要。特别是对于后端开发人员和测试工程师来说&#xff0c;能够快速创建、执行并验证HTTP请求对于提升开发效率至关重要。近期有一个名为Hurl的开源项目&#xff0c;它被设计来高效执行HTTP请求&#…...

Android Studio 通过 WIFI 调试手机 app

操作流程 首先第一步&#xff0c;PC 和手机都需要连在同一个局域网 WIFI。 第二步&#xff0c;手机 USB 连上 PC&#xff0c;确保能查看到通过 USB 连上的设备&#xff1a; >>adb devices List of devices attached CSXasjdhwjqwjhqdh device (最好只看到一个连上的设置…...

RabbitMQ高级笔记

视频链接&#xff1a;【黑马程序员RabbitMQ入门到实战教程】 文章目录 1.发送者的可靠性1.1.生产者重试机制1.2.生产者确认机制1.3.实现生产者确认1.3.1.开启生产者确认1.3.2.定义ReturnCallback1.3.3.定义ConfirmCallback 2.MQ的可靠性2.1.数据持久化2.1.1.交换机持久化2.1.2.…...

【Qt】QtCreator交叉编译环境配置Qt mkspec

1、问题描述 在QtCreator中配置TI AM437x的交叉编译环境后,编译时报错,错误信息如下 error: gnu/stubs-soft.h: No such file or directory2、原因分析 1)环境变量CC 搜索网络,解决方法为修改交叉编译工具目录下环境配置脚本,即执行source时的文件。 本人环境为:linux…...

点点数据K参数加密逆向分析(RPC方案跟加密算法还原)

文章目录 1. 写在前面2. 接口分析3. 断点分析4. RPC调用5. 算法还原 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长…...

考研数学|《1800》+《660》精华搭配混合用(经验分享)

肯定不行&#xff0c;考研数学哪有这么容易的&#xff01; 先说说这两本习题册&#xff0c;李永乐老师推出的新版660题&#xff0c;相较于18年前的版本&#xff0c;难度略有降低&#xff0c;更加适合初学者。因此&#xff0c;对于处于基础阶段的学习者来说&#xff0c;新版660…...

【Redis 二】Redis客户端(Jedis、SpringDataRedis、RedisTemplate)

1. Redis客户端 Jedis 以redis命令作为方法名称&#xff0c;学习成本低&#xff0c;但是Jedis实例是线程不安全的&#xff0c;多线程环境下需要基于连接池来使用&#xff08;必须为每个线程分配独立的Jedis连接&#xff09; lettuce 基于Netty实现&#xff0c;支持同步、异步和…...

Java中Filter和Interceptor的区别

概述 本文阐述Java中Filter和Interceptor的区别。 执行顺序不同 FIlter->Servlet->Interceptor->Controller 配置方式不同 FIlter在web.xml中配置 Interceptor在spring中的配置文件中、使用注解 是否依赖servlet Filter依赖servlet&#xff0c;而Interceptor不…...

记一次 pdfplumber 内存泄漏导致的服务器宕机

有一个项目需求&#xff0c;要在每天凌晨5点的时候执行一个任务&#xff0c;获取一系列的PDF文件并解析。 后端是Django框架&#xff0c;定时任务用Celery来实现的。 本地跑没什么问题&#xff0c;但是一放到服务器上跑就会宕机&#xff0c;而且是毫无征兆的宕机&#xff0c;…...

SpringBoot单元测试剖析

SpringBoot作为一种流行的Java框架&#xff0c;其单元测试的重要性不言而喻。在这篇博客中&#xff0c;我们将深入剖析SpringBoot单元测试的底层原理。 单元测试的概念 单元测试是软件开发过程中的一个重要环节&#xff0c;它是对软件中的最小可测试单元进行检查和验证。对于…...

【华为OD机试C++】计算某字符出现次数

文章目录 描述输入描述输出描述示例代码 描述 写出一个程序&#xff0c;接受一个由字母、数字和空格组成的字符串&#xff0c;和一个字符&#xff0c;然后输出输入字符串中该字符的出现次数。&#xff08;不区分大小写字母&#xff09; 数据范围&#xff1a; 1 \le n \le 1000 …...

ORA-01779 BYPASS_UJVC 11.2后废弃了

有这么个update语句 update A t set status 1 where exists (select 1 from B B where B.code A.code) 因性能问题需要修改写法。 在oracle10G这么update是没问题的&#xff1a; update( select …...

验证码demo(简单实现)

前言 我们注意到我们登录网站的时候经常会用到网络验证码,今天我们就简单实现一个验证码的前后端交互问题,做一个小demo 准备 我们这里并不需要依靠原生的java来实现,而是只需要引入一个maven依赖,使用现成的封装好的即可,这是我使用的是hutool工具包 网址:Hutool&#x1f36c;…...

C#面:虚函数和抽象函数的区别

C#中的虚函数和抽象函数都是实现多态性的重要概念&#xff0c;但它们有一些区别。 定义方式&#xff1a; 虚函数&#xff1a;在基类中使用 virtual 关键字定义&#xff0c;可以在派生类中被重写。抽象函数&#xff1a;在抽象类或接口中使用abstract 关键字定义&#xff0c;必…...

Vidmore Video Fix for Mac 视频修复工具

Vidmore Video Fix for Mac是一款功能强大且易于使用的视频修复工具&#xff0c;专为Mac用户设计。它凭借先进的视频修复技术&#xff0c;能够帮助用户解决各种视频问题&#xff0c;如视频文件损坏、无法播放、格式不支持等。 软件下载&#xff1a;Vidmore Video Fix for Mac v…...

Docker容器与虚拟化技术:OpenEuler 部署 Docker UI

目录 一、实验 1.环境 2.OpenEuler 部署 docker-compose-ui 2.OpenEuler 部署 docker ui 3.使用cpolar内网穿透 二、问题 1.docker run -w 的作用 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统架构版本IP备注LinuxopenEuler22.03 LTS SP2 192.168…...

328——二维矩阵值变为1最小操作次数 next、nextInt、nextLine

一、next、nextInt、nextLine区别 1.next() next()不光是接收键盘输入的内容&#xff0c;而且还进行分割。例如默认分隔符为空格 Scanner sc new Scanner(System.in);while (true){String str sc.next();System.out.println(str "A");}// 输出结果 input&#…...

HarmonyOS 应用开发之同步任务开发指导 (TaskPool和Worker)

同步任务是指在多个线程之间协调执行的任务&#xff0c;其目的是确保多个任务按照一定的顺序和规则执行&#xff0c;例如使用锁来防止数据竞争。 同步任务的实现需要考虑多个线程之间的协作和同步&#xff0c;以确保数据的正确性和程序的正确执行。 由于TaskPool偏向于单个独…...

5步搞定开源工具试用限制解除方案:设备标识符重置完整指南

5步搞定开源工具试用限制解除方案&#xff1a;设备标识符重置完整指南 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro.…...

CnDataSeed 发布:中国城市公共服务空间匹配数据库(CUSMD)

一、数据简介透视城市公共服务供需格局&#xff0c;量化空间公平与发展质量&#xff01;在城市高质量发展与共同富裕持续推进的背景下&#xff0c;公共服务体系的评价标准正在从“资源供给规模”逐步转向“居民真实可达体验”。教育、医疗、文化体育、交通与公共安全等公共服务…...

03-LlamaIndex节点解析:文本分块策略与NodeParser深度应用

03-LlamaIndex节点解析&#xff1a;文本分块策略与NodeParser深度应用 系列导航 01 核心概念与RAG处理管线02 多源数据加载与Data Connectors03 文本分块策略与NodeParser ← 当前04 向量存储与混合索引策略05 Retriever、Query Engine与Chat Engine06 Agent与Workflow编排07 多…...

Fish Speech-1.5多语种支持实战:阿拉伯语右向文本语音生成注意事项

Fish Speech-1.5多语种支持实战&#xff1a;阿拉伯语右向文本语音生成注意事项 1. 引言 语音合成技术正在改变我们与数字世界的交互方式&#xff0c;而多语言支持更是让这项技术真正走向全球化。Fish Speech-1.5作为一款强大的文本转语音模型&#xff0c;支持包括阿拉伯语在内…...

抖音无水印下载工具:高效批量下载解决方案

抖音无水印下载工具&#xff1a;高效批量下载解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在短视频内容创作与数字资产管理领域&#xff0c;抖音平台的海量内容为创作者提供了丰富的素材来源。然…...

GIL已死,但并发未生:从字节码级剖析无锁Python的7类竞态陷阱与4种Lock-Free算法选型矩阵

第一章&#xff1a;GIL已死&#xff0c;但并发未生&#xff1a;无锁Python并发范式的认知重构Python的全局解释器锁&#xff08;GIL&#xff09;长期被视为并发编程的“原罪”&#xff0c;但自CPython 3.13起&#xff0c;GIL在I/O密集型路径中已被条件性移除&#xff0c;而3.14…...

xhs:突破小红书数据采集壁垒的5个实战方法

xhs&#xff1a;突破小红书数据采集壁垒的5个实战方法 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 从反爬困境到合规采集的完整解决方案 在数字化营销与市场研究领域&am…...

s2-pro镜像管理:容器健康检查脚本编写与自动化服务恢复方案

s2-pro镜像管理&#xff1a;容器健康检查脚本编写与自动化服务恢复方案 1. 引言 s2-pro作为专业级语音合成模型镜像&#xff0c;在实际业务场景中承担着重要角色。当服务出现异常时&#xff0c;如何快速发现问题并自动恢复成为运维工作的关键。本文将详细介绍如何为s2-pro编写…...

如何从视频中智能提取PPT幻灯片:终极免费工具使用指南

如何从视频中智能提取PPT幻灯片&#xff1a;终极免费工具使用指南 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 在当今数字化教学和远程办公的时代&#xff0c;视频中常常包含重要…...

KITTI 3D目标检测评估工具evaluate_object.cpp编译与使用避坑指南(附修改代码)

KITTI 3D目标检测评估工具深度解析&#xff1a;从编译优化到实战技巧 在自动驾驶算法研发领域&#xff0c;KITTI数据集及其评估工具链已成为行业事实上的黄金标准。作为计算机视觉与自动驾驶研究的重要基础设施&#xff0c;KITTI评估工具的正确使用直接关系到算法性能评估的准确…...