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,"辅助");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/787301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何快速有效地压缩图片大小?这款在线工具可保证图片质量

当你需要上传或发送大量图片时&#xff0c;大体积的图片文件往往会让我们感到困扰&#xff0c;如何快速有效的压缩图片大小成了比较关键的问题&#xff0c;在图片压缩时&#xff0c;我们还需要担心的就是会不会对图片质量有损害&#xff0c;想要做到图片无损压缩就需要用到一些…

c++ 小游戏(2种)

目录 介绍 游戏1 游戏2 介绍 因为DEV C的编译环境较小&#xff0c;所以大部分的游戏代码都无法在此上运行&#xff0c;我收集了一部分摸鱼小游戏的源码&#xff0c;在此呈现&#xff0c;如果有能在DEV C上运行的我会先作声明&#xff1a; 游戏1 扫雷 #include<stdio.…

go和Java该如何选择?

今天&#xff0c;每个企业都需要一个软件应用程序&#xff0c;从初创公司到大型公司如果你想以最有效的方式运行业务&#xff0c;你必须把它列在网上。竞争并没有就此结束 但重要的是您能够以多简单、多快速的方式创建软件应用程序-这是引领竞争的正确方式。 选择最适合您的软…

MegaSeg Pro for Mac v6.3.1 注册激活版 音视频DJ混音工具

MegaSeg Pro for Mac是一款专业的DJ和广播自动化软件&#xff0c;旨在为音乐专业人士提供强大的音乐播放和演播功能。这款软件具有多种功能&#xff0c;包括强大的音乐库管理&#xff0c;支持导入和组织大量音乐文件&#xff0c;可以轻松管理你的音乐收藏。它支持广泛的音频格式…

【Mysql】用户授权(GRANT)语法介绍和示例

【Mysql】用户授权&#xff08;GRANT&#xff09;语法介绍和示例 【一】Mysql用户授权&#xff08;GRANT&#xff09;语法【1】授予用户权限语法【2】GRANT语句中的<权限类型>的使用说明如下&#xff1a;&#xff08;1&#xff09;授予数据库权限时&#xff0c;<权限类…

WPF学习笔记-FlowDocument流文档基础知识和基本操作

文章目录 概述一、块元素和内联元素1.1 块元素&#xff08;Block类&#xff09;1.2 内联元素&#xff08;Inline类&#xff09;二、Paragraph元素2.1 基本属性设置2.2 将内联元素Inline添加到Inlines中2.3 设置中西文字体不一样 三、Table元素3.1 添加新的Table3.2 添加列3.3 添…

深度学习系列-python实现-初步学习构建神经网络

深度学习系列-python实现-初步学习构建神经网络 前言1.在Keras中加载MNIST数据集2.构建简单的神经网络模型3.训练模型4.模型的预测和评估5.总结 前言 在数字时代&#xff0c;数据已经成为了一种无处不在的资源。从商业分析到科学研究&#xff0c;从人工智能到机器学习&#xf…

2024.2.16力扣每日一题——二叉树的锯齿形层序遍历

2024.2.16 题目来源我的题解方法一 双端队列标志 题目来源 力扣每日一题&#xff1b;题序&#xff1a;103 我的题解 方法一 双端队列标志 层序遍历 利用双端队列和标志&#xff0c;判断当前应该往那个方向遍历 注意&#xff1a;在逆向遍历时&#xff0c;加入后续节点到队列中…

固态硬盘一年不通电数据就没了吗?丢失了怎么办

随着数字化时代的到来&#xff0c;数据的安全性和持久性变得尤为重要。作为现代电子设备中常见的存储设备&#xff0c;固态硬盘&#xff08;SSD&#xff09;以其高效、快速的特点受到广大用户的青睐。然而&#xff0c;有关固态硬盘长时间不通电后数据会丢失的担忧也时常困扰着用…

报错:AttributeError: module ‘numpy‘ has no attribute ‘unit8‘解决

错误问题&#xff1a; 解决方法&#xff1a; 哥们姐们仔细一点吧这个unit8是打错了&#xff0c;无非就是uint8写成了unit8 应该是【uint8】&#xff0c;以后敲代码仔细点哦

怎么理解React refs,在哪些场景下使用?

React的refs,提供了一种方式,让我们访问DOM节点或者在render方法中创建React元素。 创建ref的形式有三种: 传入字符串,使用的时候通过this.refs传入的字符串格式获取对应的元素传入对象,对象是通过React.createRef()方式创建的,使用时取到的对象存在current属性上。传入…

从零开始学数据分析之数据分析概述

当今世界对信息技术的依赖程度在不断加深&#xff0c;每天都会有大量的数据产生&#xff0c;我们经常会感到数据越来越多&#xff0c;但是要从中发现有价值的信息却越来越难。 这里所说的信息&#xff0c;可以理解为对数据集处理之后的结果&#xff0c;是从数据集中提炼出的可用…

【Leetcode】top 100 二分查找

35 搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。 基础写法&#xff01;&#xff01;&#xff01;牢记…

清华学霸引爆“长文本”大战,大模型的应用前景清晰了吗?

文 | 智能相对论 作者 | 沈浪 Long-LLM&#xff08;长文本大模型&#xff09;时代似乎来得有些突然&#xff0c;而引爆这场热潮的&#xff0c;竟是一家由清华学霸牵头的本土AI初创企业。 前不久&#xff0c;月之暗面&#xff08;Moonshot AI&#xff09;公司宣布旗下对话式 …

linux 环境安装配置

安装java17 1.下载安装包 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 2.解压到自定义目录/usr/local/java mkdir /usr/local/java tar zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/java 3.配置环境变量 echo export PATH$PATH:/…

金三银四面试题(十):Java基础问题(1)

这部分面试题多用于面试的热身运动&#xff0c;对很多找实习和准备毕业找工作的小伙伴至关重要。 访问修饰符 在 Java 中&#xff0c;提供了四种访问权限控制&#xff1a; public private protected 以及什么都不写&#xff08;default&#xff09; 修饰符当前类同包子包其他…

SSM学习——Spring AOP与AspectJ

Spring AOP与AspectJ 概念 AOP的全称为Aspect-Oriented Programming&#xff0c;即面向切面编程。 想象你是汉堡店的厨师&#xff0c;每一份汉堡都有好几层&#xff0c;这每一层都可以视作一个切面。现在有一位顾客想要品尝到不同风味肉馅的汉堡&#xff0c;如果按照传统的方…

【java】关于String、StringBuffer和StringBuilder的那些事

在之前的文章中我们曾简单介绍过String这个引用类型变量&#xff0c;其实它还有许多特性&#xff0c;还有StringBuffer和StringBuilder这两个方法在字符串操作中也有非常重要的地位&#xff0c;接下来就由小编带大家梳理一下吧&#x1f44a; 目录 一、String 1、构造方法 2、…

手游APP纷纷选择游戏盾SDK的原因是什么呢

手游APP纷纷选择游戏盾SDK的原因是什么呢&#xff1f;随着移动互联网的发展和智能手机的普及&#xff0c;手游APP的数量和用户人数也在不断增长。然而&#xff0c;随之而来的是手游APP面临的各种安全威胁和风险。为了确保手游APP的安全性和稳定性&#xff0c;越来越多的开发者和…

独立开发者用微信小程序赚钱

微信小程序能实现赚钱&#xff0c;赚多赚少的问题。 本人就上线了一款小程序 &#xff0c;集结者assemble &#xff0c;现在上了广告了&#xff0c;收益不是很多&#xff0c;但胜在持续&#xff0c;税后收入&#xff0c;也还在持续推广中。 开发小程序赚大钱得找到变现模式&a…