开开心心带你学习MySQL数据库之第四篇

🚀🌈欢迎各位 => 点赞👍+收藏⭐️+留言✍️😍😍🌈🚀

🎆🎆慢品人间烟火色,闲观万事岁月长🎆🎆

📖希望我写的博客对你有所帮助,如有不足,请指正📖✍️

数据库

1.查看数据库里所有的表 show tables;

2.创建表 create table 表名(列名 类型,列名 类型……)

3.查看指定表结构 desc 表名;

~~ 其实mysql里也有一个关键字,就是describe,效果和desc一样

4.删除表 drop table 表名;

~~ 删除表操作和删除数据库操作的危险程度是一样的

~~ 一旦删除,就很难恢复了

~~ 像备份,写数据库的时候写多份,设置权限……能够一定程度上的解决这个问题


数据插入

insert into 表名 values (值,值……);

insert into 表名 (列名,列名……) values (值,值……);

insert into 表名 (列名,列名……) values (值,值……), (值,值……)…….;

针对datetime类型的列

~~可以指定‘2023-09-04 22:11:00’字符串作为时间日期

~~也可以用now()这个函数获取当前的系统时间


查询数据 select

针对SQL增删改查,最重要的就是查询

1.全列查询

select * from 表名;select * from student;

image-20230904233620856

解决查询时候返回的数据量过大,从而造成服务器死机,可以将服务器弄成“双网卡”的

image-20230904224420337

2.指定列查询

select 列名,列名……from 表名;select name, gender from student;

image-20230904233925699

🌈我的代码被喵星人🐱🐱吃掉了😭😭🌈

~~ 建议使用git这样的版本工具,及时上传代码

~~本地(电脑)上的代码出现状况,也可以从gitee客户端克隆回来

git最关键的作用在于多人协同开发

3.查询还可以是表达式

~~查询过程中,可以做一些简单的运算

~~这个是进行 列 和 列 之间的运算

案例样表

   -- 创建考试成绩表 DROP TABLE IF EXISTS exam_result; CREATE TABLE exam_result ( id INT, name VARCHAR(20), chinese DECIMAL(3,1), math DECIMAL(3,1), English DECIMAL(3,1)                        ); -- 插入测试数据 INSERT INTO exam_result (id,name, chinese, math, english) VALUES (1,'唐三藏 ', 67, 98, 56), (2,'孙悟空 ', 87.5, 78, 77), (3,'猪悟能 ', 88, 98.5, 90), (4,'曹孟德 ', 82, 84, 67), (5,'刘玄德 ', 55.5, 85, 45),(6,'孙权 ', 70, 73, 78.5), (7,'宋公明 ', 75, 65, 30);

(1)可以在查询的时候,针对分数进行变换.比如让查询的math成绩都在原来基础上+10分

select name, math + 10 from exam_result;

上述这样的查询,数据库服务器硬盘的数据,是否发生了改变??
如果咱们再次查询math,此时的结果是+10之前的还是++10之后的呢?

image-20230905082259692

MySQL是一个“客户端-服务器”结构的程序!!!

~~用户在客户端输入的sql,通过请求发送给服务器.
~~服务器解析并执行sql把查询的结果从硬盘读取出来通过网络响应还给客户端.
~~客户端把这些数据以临时表的形式展示出来.
~~只是在客户端这里显示一下的临时表.(显示一下就销毁了)和服务器那边的硬盘上的表没啥关系…

108.0出现在的是临时表里,和原始的表没啥关系,decimal(3,1)这个类型是原始的表的类型,它不能约束临时表.

临时表里的类型就是一个单纯的double / decimal不是一个带有有效数字的版本了.

(2)查询每个同学的总成绩

select * from exam_result;select name, math + chinese + English from exam_result;

表达式查询,是让列和列之间进行运算,而不是行和行之间

行和行之间的运算,是聚合查询

image-20230905095126764

4.查询的时候指定别名

指定别名,就相当于是起了个"小名"/“外号”更方便的来理解含义

水浒中的诨名

黑旋风~李逵 小李广~花荣 豹子头~林冲

浪里白条~张顺 及时雨~宋江 神行太保~武松

针对列起别名

select name, math + chinese + English as 别名 from exam_result;select name, math + chinese + English as total from exam_result;

image-20230905102628949

as 可以省略,但是不建议,影响可读性

select name, math + chinese + English total from exam_result;

5.去重查询

(1)distinct针对指定列进行去重(把重复的行只保留一个)

select math from exam_result;

~~ 98分重复了

math
98
78
98
84
85
73
65
7 rows in set (0.00 sec)

~~去重结果

select distinct math from exam_result;  
math
98
78
84
85
73
65
6 rows in set (0.00 sec)

(2)distinct指定多个列

distinct指定多个列的时候,要求这些列的值都相同,才视为重复

6.按照查询结果排序

(1)order by 字句,指定某些列进行排序

~~排序可能是升序,也可能是降序

按照数学成绩进行升序排序

select name, math from exam_result order by math asc;

~~asc表示升序排序,但是asc可以省略不写默认就是升序

select name, math from exam_result order by math;

对于mysql来说,如果一个sql没有指定order by,此时查询结果集的数据顺序,是不可预期的

~~像三体书中的乱纪元一样,不知道太阳升起和落下的规律

~~代码逻辑中是不能依赖这里的查询顺序的

image-20230905133133429

注意!!!order by 相当于是针对大量的数据进行排序

~~数据量大到什么程度了?内存是存不下的,很多排序算法由于是针对内存上的数据排的,都无法使用

~~针对硬盘上的数据进行排序,采用的是归并排序

按照数学成绩进行降序排序

 select * from exam_result order by math desc;

~~这里的desc是单词descend单词的缩写,不是describe

image-20230905135739206

(2)order by 可以指定多个列进行排序,多个列之间使用,分割

~~这个列越靠前,就越是关键的排序依据

~~先按第一列排序,如果第一列的值相同了,再按照第二列排序……以此类推

先按照数学成绩排序,在数学相同的情况下,按照语文成绩来进行排序

 select * from exam_result order by math desc, chinese desc;

日常生活中,遇到的排序,大多是按照多个列来排序的.咱们最关键要做的就是明确排序的列的主次关系~~

7.条件查询

在查询的时候指定筛选条件 => 符合条件的数据留下,不符合的直接pass

~~需要先描述条件 => 在sql里通过一系列的运算符来表示条件

通过where子句,搭配上条件表达式,就可以完成条件查询

~~条件查询,相当于,针对数据库的表,进行遍历.

~~取出每一行数据,把数据代入到条件中,看条件是否符合.如果是真,这个记录就保留,作为结果集的一部分.如果是假,这个记录就pass,直接下一条

比较运算符:

运算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于, NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1
!=不等于
BETWEEN a0 AND a1范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, …)如果是 option 中的任意一个,返回 TRUE(1)
IS NULL是 NULL
IS NOT NULL不是 NULL
LIKE模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字 符

逻辑运算符:

运算符说明
AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT条件为 TRUE(1),结果为 FALSE(0)

注: and的优先级高于or,即一个where中既存在and又存在or,先执行and后执行or,

~~在同时使用时,需要使用小括号()包裹优先执行的部分

~~写代码的时候记得多加括号


案例:

(1)基本查询:

~~1.查询英语不及格的同学及英语成绩 ( < 60 )

select name, English from exam_result where English < 60; 

image-20230905174940477

~~2.查询语文成绩好于英语成绩的同学

条件查询,可以直接拿两个列进行比较

select name, chinese, English from exam_result where chinese > English; 

image-20230905175006668

~~3.查询总分在 200 分以下的同学

条件查询,可以使用表达式来作为条件

where条件可以使用表达式,但不能使用别名

原因: sql语句不是从前往后的执行,是按照特定的规则进行执行的

~~此处total别名不能作为where 条件,和当前sql的执行顺序有关

~~mysql对于语法规定的一部分

以下面的sql语句为例, 执行规则:

  1. 遍历每一行.

  2. 把这一行带入到where 的条件中.

  3. 符合条件的结果,再根据select这里指定的列,进行查询/计算

where条件的判定在total别名之前,导致where条件中的total未定义出错

select name, chinese + math + English as 总分 from exam_result  where chinese + math + English < 200; 

image-20230905175044019

(2)and与or

~~1.查询语文成绩大于80分,且英语成绩大于80分的同学

select * from exam_result where chinese > 80 and English > 80;   

image-20230905182552244

~~2.查询语文成绩大于80分,或英语成绩大于80分的同学

select * from exam_result where chinese > 80 or English > 80;  

image-20230905182527289

(3)范围查询

  1. between… and …

~~查询语文成绩在 [80, 90] 分的同学及语文成绩

select name, chinese from exam_result where chinese between 80 and 90; 

~~使用 and 也可以实现

select name, chinese from exam_result where chinese >= 80 and chinese <= 90; 
  1. in

~~查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);  

~~使用 or 也可以实现

SELECT name, math FROM exam_result WHERE math = 58 OR math = 59 OR math
= 98 OR math = 99;  
  1. 模糊查询:LIKE

~~ % 匹配任意多个(包括 0 个)字符

SELECT name FROM exam_result WHERE name LIKE '孙%';//匹配到孙悟空、孙权

~~_ 匹配严格的一个任意字符

SELECT name FROM exam_result WHERE name LIKE '孙_';//匹配到孙权  
  1. NULL 的查询:IS [NOT] NULL

    ……留有一点花絮待日后完善!!!博主累了,不想写了😢😭😭😭


谈论实习和学校的关系,以及实习本身及其重要性

大几?

如果是大三,老实准备秋招

大二可以.

要注意找实习的时间差不多要花2-3个月

如果决定去实习,要做的事情就是一个字溜!!!绝对不要让导员知道.绝对不要让学校知道.请假基本不太靠谱!!!

大家要想清楚一点,谁是敌人,谁是盟友!!

学校是否支持大家实习?不可能!!!

去实习,大概率要耽误学校的课程的.

1.学校不清楚实习对你就业的意义.(有实习经历秋招随便乱杀)

⒉.学校担心安全问题.(去公司,自然你的安全问题公司负责的)

3.更担心你打着实习的名义,实际上不知道干啥去了(传销…)(有人帮你把关)

学校为了方便管理不会支持你去实习的!!!

你要想实习,必须要绕过学校的监管溜出去~~

不要挂科.保证考试的时候请假回来考~~只要不挂科,都好办

至于被发现

1.低调,不要去张扬.有的同学拿了个实习offer先发个朋友圈得瑟得瑟…不被发现才怪~~

2.上课找代课.(实习一个月赚5,6k问题不大,拿出500找个代课,给你服务的服服帖帖)

3.如果还是不幸被导员发现了,不要和导员硬刚,也不要说自己去实习了,就说回家了,让父母给导员打个电话啥的…赶紧返校,后面找机会再溜~~

总结下来:只要思想不滑坡,办法总比困难多

当你踏出实习这一步~~你就已经超出了99%的同学,甚至超出了一大波清华北大的研究生!!!

实习只是少数同学的事情,大多数同学是没有资格去实习的.(不是客观资格,而是主观上因为一些原因,克服不了上述麻烦…)

但凡是能在比较好的公司实习几个月的同学,秋招中无一不是大佬中的大佬.嘎嘎乱杀~~

实习带来的更多的是其他方面的成长.最主要的是要经历社会的毒打~~

难度大大低于秋招,基本是点击就送~~

对于大部分同学来说,所谓复习,就是单纯浪费时间…没啥卵用~~很多同学的复习,就是对着录频看,看着看着就走神瞌睡,就玩手机了效率是非常低的!!!

相比之下,更好的复习方式,是去找实习,你面试几次,面试中被面试官虐过了,就会了~~

面试有无数次机会的,不是一次就没了!!

难道你是想一发入魂,一次就能上岸?正常的同学,前五次面试是必然凉凉的!!!

面的是美团!!

美团这是 top10的公司

用学校来类比,大概就是复旦,浙大,南大这样的水平

进大厂自然难~~

即使是大厂,实习还是比秋招容易很多!!!

题目都差不多.但是hc会差别很大~~

实习,hc是很充裕.(竞争压力小)

秋招的话,清北的同学都反应过来了,你就要和他们一起卷~~

对于大三的同学来说, 实习再香,和你没关系~~不要纠结这些事情了,好好准备秋招准备提前批就行了



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部