开开心心带你学习MySQL数据库之第五篇
😺欢迎来到我的博客, 记得点赞👍+收藏⭐️+留言✍️🐱
🐉做为一个怪兽,我的目标是少消灭一个奥特曼🐉
📖希望我写的博客对你有所帮助,如有不足,请指正📖
chatgpt 是否能够代替程序猿?
~~非常明确,太抬举chatgpt 了!!!
~~chatgpt屌 !但是是相比于之前的"人工智能",之前的"人工智能"其实是"人工智障",全靠同行衬托!!但是和正常的人类比,还是相差甚远的
~~chatgpt 本质上是大号搜索引擎(相当于谷歌,百度,bing 这些东西)升级版
~~它的功能是检索,是基于现有的知识,而程序猿做的很多工作,是创造,从无到有的根据问题/场景创造出东西(产品)
找工作的节奏~时间窗口
- 找实习 => 大三上学期 + 大三下学期3-4月份
(大三可以替换成研二)(但是正常的研究生基本没法出去实习.正常老板是不会放人)
拿到的是实习offer.至于能否转正留用,签劳动合同,看表现~~[不稳]
- 提前批 => 大三下学期7-8月份
一般是比较好的公司
拿到的是正式offer.(先签订三方协议,毕业了入职报道,签订劳动合同)~~[稳]
- 秋招 => 大四上学期9,10,11月份⭐️⭐️⭐️
绝大部分同学都是在这个时间点进行找工作,所有公司齐出动招聘的黄金时机.
拿到的是正式offer.(先签订三方协议,毕业了入职报道,签订劳动合同)~~[稳]
经历了秋招,绝大部分同学都有工作了.当然还有一部分同学还没找到~~
- 春招 => 大四下学期,年后到3,4月份
可以理解成补招.(秋招有些公司没招够人,再招招)
公司数量和质量都是远远不如秋招的.
春招的机会是秋招的十分之一.这样理解是不为过的~
~~如果春招了还没找到工作,基本凉了(跟失业差不多.就算不失业,基本难以进入互联网行业了)
~~当错过春招之后,就失去了最大的筹码 => 应届生身份!!!
~~从此之后,只能走社招 => 互联网公司社招都是要求工作经验的
~~由于没有工作经验,又不是应届生,基本很难进入互联网公司了,就算进互联网,也一定是最底层最差的公司(只能外包了)
“外包”:一类专门给别的公司干苦力的公司~~(没有技术壁垒,也没有自己产品的…)
存在一些公司,offer是点击就送的.
富士康,富士通,美林,道通,比亚迪,…
面试大概就是随便聊聊,也不问技术~~
(技术岗)6k,7k左右~~
select
- 全列查询
select * from 表名;
- 指定列查询
select 列名,列名 from 表名;
- 表达式查询
select 表达式 from 表名;
- 带别名的查询
select 表达式 as 别名 from 表名;
- 去重查询
select distinct 列名/表达式 from 表名;
- 排序查询
select 列名 from 表名 order by 列名[desc], 列名[desc];
- 条件查询
select 列名 from 表名 where 条件;
~~通过一组关系运算符和逻辑运算符描述.符合条件的结果保留,不符合的就pass
NULL 的查询:is [not] null
NULL / null ~~sql中不区分大小写的.表示表格里的这一项是空着的
null 和其他数值进行运算,结果还是null
null 结果在条件中,相当于 false 了.
null = null 结果还是 null => false
<=>使用这个比较相等运算,就可以处理null的比较!!
null <=> null => true
复习一下
分页查询: limit
很多地方都能见到
一共这么多数据,全都显式出来,一方面,用户看不过来,另一方面对于系统压力也比较大
limit限制查询结果是几个~~
语法:
-- 起始下标为 0 -- 从 0 开始,筛选 n 条结果 select ... from 表名 [where ...] [order by ...] limit n; -- 从 s 开始,筛选 n 条结果 select ... from 表名 [where ...] [order by ...] limit s, n; -- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用 select ... from 表名 [where ...] [order by ...] limit n offset s;
limit 3 offset 6; 等价于limit 6, 3; (不太推荐这么写)
update
update 表名 set 列名=值, 列名=值 .... where 条件;
update exam_result set math = 80 where name = '孙悟空’;
update exam_result set math = 60, chinese = 70 where name = '曹孟德’;
update exam_result set math = math + 30 order by chinese + math + English asc limit 3;
不写任何条件,修改就是针对所有行进行的!!
update exam_result set chinese = chinese / 2;
update操作非常危险!!
撤回不了
测试只能测试个大概.有可能你的bug是一个小概率触发的情况
delete
delete删除记录(行)
delete from 表名 where 条件;
order by / limit…
delete from exam_result where name like '孙%';
把条件匹配出来的结果,都删掉了!!!
delete from exam_result;
不写where 也没有limit就是全部了!!!
这个操作基本相当于删表(drop table)
delete from表还在,里面的数据没了.drop table表和数据都没了.
truncate也能清空表的内容,和delete from差不多.delete from是一条一条删,删的慢.truncate,直接一下就删没了…
如果某个sql语句执行时间很长,随时可以按ctrl + c取消
insert into 表名…
select from 表名…
update 表名…
delete from 表名…
关键字和表名之间,使用的这个介词不一样!!!~~这其实是一个比较糟糕的设计!!
接口设计风格的不一致性~~会提升使用成本,提升出错概率
C++这里做的更好.C++标准库里面统一都是使用 size()
std::array新式数组,都是符合上述的规范要求的~~
不仅仅是 size,各种操作,都是统一风格~~
数据库约束
约束,就是数据库针对里面的数据能写啥,给出的一组““检验规则”
这样的约束,可以是程序猿人工来保证,也可以是程序自动保证。
在程序猿里,谈到人,就意味着“不靠谱"(和计算机相比)
计算机的存储能力,远远超过人脑的,纪律性,也是远远超过人脑的
约束,就是为了提高效率,提高准确性,让数据库这个软件集成的一个针对数据校验的功能
约束类型
-
NOT NULL => 当前内容不为空,必填项
-
UNIQUE => 让列的值是唯一的(不和别的行重复) ~~如学号,手机号,身份证号
-
DEFAULT => 列没被赋值时的默认值
-
PRIMARY KEY => 主键 ,与NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
-
FOREIGN KEY => 外键=>保证一个表中的数据匹配另一个表中的值的参照完整性。
-
CHECK => 在mysql5版本中,不支持~~写了不会报错,但是没有实际效果,这个可以不学
给一个现有的表加约束,也可以
~~比较麻烦, 使用alter table语句,不过用起来麻烦(支持的功能多),很少会使用
1.not null
2.unique
插入/修改数据的时候,会先查询,先看看数据是否已经存在.如果不存在,就能够插入/修改成功.如果存在,则插入/修改失败!!
Map 的每个键值对,就相当于一个条目entry
数据库怎么知道的1存在?其实是在插入之前先查询了下~~(只不过查询操作,咱们感知不到) => 因此,这里是多了个查找数据的成本.
本质上是 程序运行效率 VS 程序猿开发效率
开发效率高了,加班就少了…开发效率低,干活干的慢,就得加班.从老板角度看,提高运行效率,节省的是买机器的成本(少数),提高开发效率,节省的是雇佣程序猿的成本(占大头)
Java之所以能够火起来,很大程度就是Java比CPP 开发效率更高(运行效率降低了)Python,PHP,Go也是在追求开发效率,而没过多关注运行效率
3.default
default~~设置默认值
默认值是在insert 指定列插入的时候,其他未被指定到的列就是按照默认值来填充~~
4.primary key
主键,一条记录 在表中的"身份标识" ~~手机号码,身份证号码,学号…
也是要求唯一.并且不能为空~~
主键 = unique + not null
mysql要求一个表里,只能有一个主键
~~创建主键的时候,可以使用一个列作为主键
~~也可以使用多个列作为主键(复合主键),很少见,可以不学
提问:如何给这个记录安排一个主键呢?
mysqI 自身只是能够检查是否重复.设置的时候还是靠我们自己来设置,此处,有很多办法.mysqI提供了一个简单粗暴的做法,自增主键~~ 由MySQL自动分配,分到到的是一个唯一值
常配搭自增长auto_increment来使用,换句话说,使用auto_increment的当前这一列就是自增主键
给自增主键插入数据的时候,可以手动指定一个值,也可以让 mysql自己分配.如果让mysql自己分配,就在insert语句的时候,把id设为null 即可了!
本质:mysql 给每个表维护了一个全局变量.每次分配一个id,就全局变量自增.下次分配接着上次的继续分配…
当前自增主键,就只需要用一个变量,记录序号的最大值就行了.每次都在这个基础上+1就好.
常配搭自增长auto_increment来使用,换句话说,使用auto_increment的当前这一列就是自增主键
相关文章:

开开心心带你学习MySQL数据库之第五篇
😺欢迎来到我的博客, 记得点赞👍收藏⭐️留言✍️🐱 🐉做为一个怪兽,我的目标是少消灭一个奥特曼🐉 📖希望我写的博客对你有所帮助,如有不足,请指正📖 chatgpt 是否能够代替程序猿?…...

Geotools对geojson的解析
在 GeoTools 中,对 GeoJSON 的支持是通过一个插件来完成的,用户同样可以在 Maven 的 pom.xml 配置文件中添加下述的依赖。 <dependency><groupId>org.geotools</groupId><artifactId>gt-geojson</artifactId><version&…...

【博客701】shell实现保留网络现场:ping失败时执行mtr
shell实现保留网络现场:ping失败时执行mtr 场景 当我们网络出现抖动,到某个目的地ping不通时,我们想知道路径上哪里出现问题时可以在那时候执行mtr并保留下现场以供排查 实现:ping_and_mtr.sh #!/bin/bash# 定义要ping的IP地址列…...

放弃手写代码吧!用低代码你能生成各种源码
很多同学不知道为什么要用Low-code做开发,传统IT开发不行么?当然可以。 传统IT自研软件开发,通过编程去写代码,还有数据库、API、第三方基础架构等。这个方式很好,但不可避免的会带来开发周期长、难度大,技…...

什么程度才算精通 Linux?
前言 Linux 的优秀之处自然不必多说。 如果将操作系统比作一辆汽车,那 Linux 就是一辆性能出色的多功能越野车,上山下海飞天无所不能。 如果你拥有了它,一定不会只满足于驾驶它上下班,不能只会挂挡、踩油门和控制方向之类的基本…...

jmeter中的__setProperty用法
__setProperty 是一个用于设置 JMeter 属性的函数,基本语法: __setProperty(property, value)** property : 是要设置的属性的名称 ** value : 是要设置的属性的值在 JMeter中,可以使用 __setProperty 函数的元素: BeanShell …...

vue基础知识六:v-show和v-if有什么区别?使用场景分别是什么?
一、v-show与v-if的共同点 我们都知道在 vue 中 v-show 与 v-if 的作用效果是相同的(不含v-else),都能控制元素在页面是否显示 在用法上也是相同的 <Model v-show"isShow" /> <Model v-if"isShow" />当表达式为true的时候&#…...

SpringBoot几个常用的注解
(1)RestController和Controller指定一个类,作为控制器的注解 (2)RequestMapping方法级别的映射注解,这一个用过Spring MVC的小伙伴相信都很熟悉 (3)EnableAutoConfiguration和Spri…...

腾讯JAVA后端秋招面试总结
腾讯秋招的面经,岗位是 java 后端开发。 说一下BIO、NIO和AIO 答: BIO是阻塞IO。在上一个线程的任务执行完之前,该线程必须阻塞等待上一个线程执行完毕。 NIO是非阻塞IO。一旦是响应事件发生了,该线程就会将对应的响应事件交给对应的事件处理器进行处理。 AIO是异步IO。主…...

随着iPhone 15降临,是时候扔掉所有的Lightning充电器了
自从苹果推出Lightning端口(一直追溯到iPhone 5)十多年后,你可能已经积累了相当多的Lightning电缆和配件。好吧,在下周的苹果活动之前,所有关于iPhone 15的传言都表明你不再需要它们了。 与最好的iPad和最好的MacBook…...

huggingface 使用入门笔记
概念 Hugging Face Hub和 Github 类似,都是Hub(社区)。Hugging Face可以说的上是机器学习界的Github。Hugging Face为用户提供了以下主要功能: 模型仓库(Model Repository):Git仓库可以让你管理代码版本、…...

ASP.NET Core 中的 Razor Pages
Razor Pages Razor Pages 是基于页面的 ASP.NET Core Web App 架构。 相比 MVC 模式,Razor Pages的生产效率更快。 Razer Pages 需要两个中间件: builder…Services.AddRazorPages 添加 Razor Pages servicesapp.MapRazorPages 添加 Razor Pages endpo…...

C语言入门 Day_14 for循环
目录 1.for循环 2.循环执行顺序 3.易错点 4.思维导图 前言 我们定义了一个数组以后,要使用(读取或者修改)数组元素的话,可以一个一个的读取,就前两课学的那样,代码类似这个结构。 int …...

深入解析 Socks5 代理与网络安全
作为网络工程师和网络文章主编,我们时刻关注着网络世界中的新趋势和技术发展。本文将探讨 Socks5 代理、代理IP、网络安全以及与之相关的 HTTP 协议,为您呈现一个深入的技术洞察。 引言 在今天的互联网时代,网络安全是至关重要的话题。攻击…...

Vue + Element UI 前端篇(十二):用户管理模块
Vue Element UI 实现权限管理系统 前端篇(十二):用户管理模块 用户管理模块 添加接口 在 http/moduls/user.js 中添加用户管理相关接口。 import axios from ../axios/* * 用户管理模块*/// 保存 export const save (params) > {ret…...

C# 设计保存文件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System...

Leetcode 1486.数组异或操作
给你两个整数,n 和 start 。 数组 nums 定义为:nums[i] start 2*i(下标从 0 开始)且 n nums.length 。 请返回 nums 中所有元素按位异或(XOR)后得到的结果。 示例 1: 输入:n 5, …...

【Java】Java核心API概述
Java核心API是Java编程语言的基础,包含了Java应用程序中常用的类和接口。本文将介绍Java核心API中的一些重要部分,包括输入输出流、异常处理、集合框架、多线程和网络编程等。 1、输入输出流 Java的输入输出流API是Java IO,它提供了处理输入…...

微信小程序检查版本更新
新建文件 version-util.js // 小程序启动时检查版本 class VersionUtil {/*** 检查更新*/checkUpdate(){const updateManager wx.getUpdateManager();updateManager.onCheckForUpdate((hasUpdate)>{if(hasUpdate){updateManager.onUpdateReady(()>{wx.showModal({title…...

Linux查看是虚拟机还是物理机
第一种方式:dmesg命令 [roottest ~]# dmesg | grep -i hypervisor [ 0.000000] Hypervisor detected: VMware [ 0.001000] TSC freq read from hypervisor : 2903.999 MHz [ 6.311621] [drm] Max dedicated hypervisor surface memory is 0 kiB第二种方式…...

【数据结构】二叉搜索树——二叉搜索树的概念和介绍、二叉搜索树的简单实现、二叉搜索树的增删查改
文章目录 二叉搜索树1. 二叉搜索树的概念和介绍2. 二叉搜索树的简单实现2.1二叉搜索树的插入2.2二叉搜索树的查找2.3二叉搜索树的遍历2.4二叉搜索树的删除2.5完整代码和测试 二叉搜索树 1. 二叉搜索树的概念和介绍 二叉搜索树又称二叉排序树,它或者是一棵空树&…...

通过linux定时任务删除es日志索引
能过linux定时任务删除es日志索引 项目用上了elk,产生的日志索引要定时,其一个方法,通过linux定时任务,调用es接口删除索引。 #!/bin/bash #删除ELK30天前的日志 #计算索引名称包含的日期,比如这里是 %Y.%m.%d (2023…...

【跟小嘉学 Rust 编程】二十二、常用 API
系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...

【ES6】Class中this指向
先上代码: 正常运行的代码: class Logger{printName(name kexuexiong){this.print(hello ${name});}print(text){console.log(text);} }const logger new Logger(); logger.printName("kexueixong xiong");输出: 单独调用函数p…...

Python 编程竟然如此幽默!揭秘程序员们的搞笑日常,快来看看吧!
食用原文效果更佳,原文链接 Python 编程竟然如此幽默!揭秘程序员们的搞笑日常,快来看看吧! 在 Python 编程的世界里,充满了智慧与创造力。 当然,也少不了轻松幽默的段子,这些段子让程序员们在…...

Linux c++开发-03-使用CMake组织工程
一、简单文件的编译 有如下的目录结构: 其中 helloworld.cpp如下: #include <iostream> using namespace std; int main() {printf("hello world my name is Ty!");return 0; }CMakeLists.txt如下: cmake_minimum_requir…...

【C++】函数重载 ④ ( 函数指针定义的三种方式 | 直接定义函数指针 | 通过 函数类型 定义 函数指针 | 通过 函数指针类型 定义 函数指针 )
文章目录 一、函数指针定义方法1、直接定义函数指针2、通过 函数类型 定义 函数指针3、通过 函数指针类型 定义 函数指针4、代码示例 - 不同方式定义函数指针 博客总结 : 重载函数 : 使用 相同 的 函数名 , 定义 不同 的 函数参数列表 ;判定标准 : 只有 函数参数 的 个数 / 类…...

异常-java
目录 一、异常的概念和体系结构 1.1 异常的概念 1.2 异常的体系结构 1.3 异常的分类 二、异常的处理 2.1 防御式编程 2.2 异常抛出 2.3 异常捕获 2.4 异常处理流程 三、自定义异常类 一、异常的概念和体系结构 1.1 异常的概念 程序员在开发过程中,想要将代码写得…...

软件测试/测试开发丨Selenium Web自动化测试 高级控件交互方法
点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27045 一、使用场景 使用场景对应事件复制粘贴键盘事件拖动元素到某个位置鼠标事件鼠标悬停鼠标事件滚动到某个元素滚动事件使用触控笔点击触控笔事件&am…...

深入Go语言:进阶指南
深入Go语言:进阶指南 欢迎来到深入Go语言的进阶指南。如果你已经熟悉Go语言的基础知识,想要更深入地探索这门语言的高级特性和技巧,那么本篇博客将为你提供有关Go语言的更多深入内容。 Go语言的并发编程 Go语言以其强大的并发支持而闻名。…...