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.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)
级别: 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. 非…...
服务器配置Huggingface并git clone模型和文件
服务器配置Huggingface并git clone模型和文件 参考:https://huggingface.co/welcome 1 注册hugging face 官网注册,并获取token【https://huggingface.co/settings/tokens】,用于登录 2 安装 2.1 安装lfs https://stackoverflow.com/qu…...
Rust 开发的高性能 HTTP 请求工具
一、简述 在现在的软件开发领域,HTTP请求的快速验证变得越来越重要。特别是对于后端开发人员和测试工程师来说,能够快速创建、执行并验证HTTP请求对于提升开发效率至关重要。近期有一个名为Hurl的开源项目,它被设计来高效执行HTTP请求&#…...
Android Studio 通过 WIFI 调试手机 app
操作流程 首先第一步,PC 和手机都需要连在同一个局域网 WIFI。 第二步,手机 USB 连上 PC,确保能查看到通过 USB 连上的设备: >>adb devices List of devices attached CSXasjdhwjqwjhqdh device (最好只看到一个连上的设置…...
RabbitMQ高级笔记
视频链接:【黑马程序员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. 算法还原 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长…...
考研数学|《1800》+《660》精华搭配混合用(经验分享)
肯定不行,考研数学哪有这么容易的! 先说说这两本习题册,李永乐老师推出的新版660题,相较于18年前的版本,难度略有降低,更加适合初学者。因此,对于处于基础阶段的学习者来说,新版660…...
【Redis 二】Redis客户端(Jedis、SpringDataRedis、RedisTemplate)
1. Redis客户端 Jedis 以redis命令作为方法名称,学习成本低,但是Jedis实例是线程不安全的,多线程环境下需要基于连接池来使用(必须为每个线程分配独立的Jedis连接) lettuce 基于Netty实现,支持同步、异步和…...
Java中Filter和Interceptor的区别
概述 本文阐述Java中Filter和Interceptor的区别。 执行顺序不同 FIlter->Servlet->Interceptor->Controller 配置方式不同 FIlter在web.xml中配置 Interceptor在spring中的配置文件中、使用注解 是否依赖servlet Filter依赖servlet,而Interceptor不…...
记一次 pdfplumber 内存泄漏导致的服务器宕机
有一个项目需求,要在每天凌晨5点的时候执行一个任务,获取一系列的PDF文件并解析。 后端是Django框架,定时任务用Celery来实现的。 本地跑没什么问题,但是一放到服务器上跑就会宕机,而且是毫无征兆的宕机,…...
SpringBoot单元测试剖析
SpringBoot作为一种流行的Java框架,其单元测试的重要性不言而喻。在这篇博客中,我们将深入剖析SpringBoot单元测试的底层原理。 单元测试的概念 单元测试是软件开发过程中的一个重要环节,它是对软件中的最小可测试单元进行检查和验证。对于…...
【华为OD机试C++】计算某字符出现次数
文章目录 描述输入描述输出描述示例代码 描述 写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母) 数据范围: 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是没问题的: update( select …...
验证码demo(简单实现)
前言 我们注意到我们登录网站的时候经常会用到网络验证码,今天我们就简单实现一个验证码的前后端交互问题,做一个小demo 准备 我们这里并不需要依靠原生的java来实现,而是只需要引入一个maven依赖,使用现成的封装好的即可,这是我使用的是hutool工具包 网址:Hutool🍬…...
C#面:虚函数和抽象函数的区别
C#中的虚函数和抽象函数都是实现多态性的重要概念,但它们有一些区别。 定义方式: 虚函数:在基类中使用 virtual 关键字定义,可以在派生类中被重写。抽象函数:在抽象类或接口中使用abstract 关键字定义,必…...
Vidmore Video Fix for Mac 视频修复工具
Vidmore Video Fix for Mac是一款功能强大且易于使用的视频修复工具,专为Mac用户设计。它凭借先进的视频修复技术,能够帮助用户解决各种视频问题,如视频文件损坏、无法播放、格式不支持等。 软件下载: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.环境 (1)主机 表1 主机 系统架构版本IP备注LinuxopenEuler22.03 LTS SP2 192.168…...
328——二维矩阵值变为1最小操作次数 next、nextInt、nextLine
一、next、nextInt、nextLine区别 1.next() next()不光是接收键盘输入的内容,而且还进行分割。例如默认分隔符为空格 Scanner sc new Scanner(System.in);while (true){String str sc.next();System.out.println(str "A");}// 输出结果 input&#…...
HarmonyOS 应用开发之同步任务开发指导 (TaskPool和Worker)
同步任务是指在多个线程之间协调执行的任务,其目的是确保多个任务按照一定的顺序和规则执行,例如使用锁来防止数据竞争。 同步任务的实现需要考虑多个线程之间的协作和同步,以确保数据的正确性和程序的正确执行。 由于TaskPool偏向于单个独…...
基于MiniExcel的三种常用导出Excel方法(固定列导出、动态列导出、按模板导出)
为了方便代码编写和测试,把很多代码都放在一个class里面,实际开发根据需要放到对应的目录下即可。 1.使用nuget下载安装miniexcel; 2.编写对应的测试接口,具体代码如下: using Microsoft.AspNetCore.Authorization; using Micr…...
MATLAB科研绘图与学术图表绘制从入门到精通
💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…...
C++核心高级编程 --- 1、内存分区模型 2、引用
文章目录 第一章:1.内存分区模型1.1 程序运行前1.2 程序运行后1.3 new操作符 第二章:2.引用2.1 使用2.2 注意事项2.3 做函数参数2.4 做函数返回值2.5 本质2.6 常量引用 第一章: 1.内存分区模型 4个区域: 代码区:存放…...
winform日历控件_进度条控件
在 Windows Forms 应用程序中使用日历控件 (如 MonthCalendar 或 DateTimePicker) 和进度条控件 (如 ProgressBar) 是一个很好的练习,以了解这些控件的工作方式。以下是一些基本的步骤来实践这些控件: 日历控件: 添加 MonthCalendar 控件&am…...
Java进阶-反射的详解与应用
本文深入探讨了Java反射机制的核心概念、应用实例及其在现代Java开发中的重要性。文章首先介绍了反射的基本原理和能力,包括在运行时动态获取类信息、操作对象字段和方法的能力。随后,通过具体代码示例,展示了如何利用反射进行字段访问、方法…...
蓝桥杯算法题——暴力枚举法
先估算这个数小于3的50次方 cnt0 for i in range(50):for j in range(50):for k in range(50):a3**ib5**jc7**kif a*b*c<59084709587505:cnt1 print(cnt-1)#当ijk都为0时,a*b*c1不是幸运数字所以要减去...
【教程】Kotlin语言学习笔记(六)——泛型
写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【Kotlin语言学习】系列文章 第一章 《认识Kotlin》 第二章 《数据类型》 第三章 《数据容器》 第四章 《方法》 第五章 《L…...
【中文视觉语言模型+本地部署 】23.08 阿里Qwen-VL:能对图片理解、定位物体、读取文字的视觉语言模型 (推理最低12G显存+)
项目主页:https://github.com/QwenLM/Qwen-VL 通义前问网页在线使用——(文本问答,图片理解,文档解析):https://tongyi.aliyun.com/qianwen/ 论文v3. : 一个全能的视觉语言模型 23.10 Qwen-VL: A Versatile…...
【Qt 学习笔记】Qt 背景介绍
博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt 背景介绍 文章编号:Qt 学习笔记 / 01 文章目录 Qt 背景…...
C++递推算法
数塔问题 #include<bits/stdc.h> using namespace std; void f(int,int,int); int a[100][100]; int n; int main() {cin>>n;for(int i0;i<n;i){for(int j0;j<1i;j){cin>>a[i][j];}}for(int in-2;i>0;i--){for(int j0;j<i1;j){a[i][j]a[i][j]ma…...
郑州做网站好/品牌宣传策划方案
1、在虚拟机上安装 linux 首先到官网上下载centos 点击找到get centos 或者 download等进入下载页面点击 DVD ISO 进入(isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso) 选择一个镜像文件下载,这里选择了163下载…...
企业网上推广方式/windows优化大师免费
LeetCode 1401. 圆和矩形是否有重叠 难度 中等 给你一个以 (radius, x_center, y_center) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2),其中 (x1, y1) 是矩形左下角的坐标,(x2, y2) 是右上角的坐标。 如果圆和矩形有重叠的部分,请…...
中国互联网协会是什么单位/seo快照推广
一、从一个微信Bug说起 问题:在微信Android客户端,一张七牛CDN上的HTTPS链接的图片,用微信浏览器打开可以正常访问,但是,长按图片保存时,却提示下载图片失败。发现这个问题后,我用了一个简单的测…...
出名的wordpress模板/教你如何快速建站
compile 编译 / 测试 / 运行都会引入该 jar, 是 scope 的默认值 provided 编译 / 测试会引入该 jar, 运行时, 认为环境会自带这个 jarruntime 只在运行时, 引入该 jartest 在执行测试类时, 引入该 jarsystem 不去本地仓库搜索该 jar, 一般会搭配 systemPath 引用本地绝对路径上…...
网站优缺点/百度软文推广怎样收费
2019独角兽企业重金招聘Python工程师标准>>> chart.js 基于H5的canvas,轻量级的图表插件。 有6中图表类型:折线图、条形图、雷达图、饼图、柱状图、极地区域图 关于柱状图的绘制,追加 、更新、删除数据等操作的总结 原文来自于:h…...
安卓开发技术/seo站长工具综合查询
一、数据类型1、列表:# 列表中的每个元素都是可变的# 列表的元素是有序的,# 列表用中括号表示ab [ ]# ab.insert(‘位置’,‘元素‘) ## 在指定位置插入某个元素# ab.append() # 在末尾增加元素# ab.remove(1) # 删除‘1‘这个元素# ab.po…...