mysql必知必会读书笔记(代码片段)

小杰312 小杰312     2023-03-11     125

关键词:

目录

第一章 --- 了解SQL    Day 4-20

1.1.1 什么是数据库?

1.1.2 表

1.1.3  列和数据类型

 1.1.4 行

 1.1.5  主键

 1.2 什么是SQL

 1.3 小结

第二章 ---  MySQL简介     Day 4-21

2.1 什么是mysql

2.1.1 客户机—服务器软件

2.1.2 MySQL版本

2.2 MySQL工具

2.2.1 mysql命令行实用程序

2.2.2 MySQL Administrator 

2.2.3 MySQL Query Browser

2.3 小结

第八章    --  用通配符进行过滤   Day 4-22

8.1 LIKE操作符

8.2 使用通配符的技巧 

8.3 小结


  • 本文纯粹就是小杰为了更加全面的了解学习mysql的读书笔记, 小杰觉得这本书写的相当不错, 感兴趣的朋友可以去读阅。小杰没有全读, 只是读那种小杰不熟悉的知识点, 但是这本书是真心写的超赞.
  • 小杰在文末也会附上它的pdf的云盘地址, 大家一起学习,共同进步, 知识不分高低, 计算机的学习小杰认为也是一个    量变   --->   质变    的过程
  • 天道酬勤, 水滴石穿, 在不同的阶段就干好自己当前阶段力所能及之事,  至少是没有在寝室的床上瘫着消磨时光                                                 --------   愿大家都学有所成,所获

第一章 --- 了解SQL    Day 4-20

1.1.1 什么是数据库?

简单来说数据库(database)就是一个保存数据的容器, 数据是按照一定的结构组织起来的.

理解数据库的一种最简单的办法是将其想象为一个文件柜。此文件柜是一个存放数据的物理位置,不管数据是什么以及如何组织的。 

注意: 特别区分数据库   和  数据库管理软件(eg: mysql)
  

1.1.2 表

表是一种结构化的文件.

表(table) 某种特定类型数据的结构化清单             ---  员工信息表, 学生表, 用户表 ...

表类比C语言中的struct结构体来理解

数据库中的每个表都有一个名字,用来标识自己。此名字是唯一的, 这表示数据库中没有其他表具有相同的名字。                                        ---   表名唯一性指的是同一个database中表名唯一

A数据库中的B表   和  C数据库中的B表     --- 两个B表表名一致, 但是并不冲突

1.1.3  列和数据类型

表是由列组成的, 列包含表的部分信息    eg:  学生表的  name 列  age 列  no. 列 grade 列.   --- 列也称字段, 一列就是表中的一个字段

 

  • 分解数据为列         ---   按照字段(列) 进行排序或者过滤出所需数据 

 数据库中每个列都有相应的数据类型。       ---  合理的定义列数据类型 (可以带来存储空间的节约  +  性能上的提升)         

 1.1.4 行

一行:存储的一条实际信息.     ---   一条记录.  eg:   员工表中具体的张三的一行记录信息    eg

  

 1.1.5  主键

表中每一行都应该有可以唯一标识自己的一列(或一组列)。

主键特性:  唯一存在   且不为null         ---   主键可以唯一标识一行 

(在查询的时候有着至关重要的作用, 因为确定主键就确定标识一行记录)     

eg  :   场景引入,现在存在一个学生表,存在s_id, s_name, s_age 三个字段, 我们需要查询s_id为3的学生s_name,     我们就可以通过  s_id = 3 确定对应记录   --- 进而确定 s_name      

 唯一标识表中每行的这个列(或这组列)称为主键。主键用来表示 一个特定的行。没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只涉及相关的行

 主键通常是定义一列, 但是也可以同时使用多个列复合构成一个主键, 复合主键      --- 组合唯一

 1.2 什么是SQL

SQL(发音为字母S-Q-L或sequel)是结构化查询语言(Structured Query Language)的缩写。SQL是一种专门用来与数据库通信的语言。    --- SQL并不是一款具体的数据库软件, 而是几乎所有的数据库软件都支持的结构化查询语言

 1.3 小结

这一章介绍了什么是SQL以及它 为什么很有用。因为SQL是用来与数据库打交道的,所以,我们也复习了一些基本的数据库术语。

读完一小练 :

 596. 超过5名学生的课

题目要求:  就是查找存在超过5名学生报名的课程 

解决方式1:group by + having 进行分组后的条件查询, 按照class 班级进行分组, 分组之后统计每个班级的学生人数 >= 5则是复合要求的

select 
    class 
from
    courses
group by
    class
having 
    count(distinct student) >= 5;

解决方式2:思路是一致的, 但是可以利用子查询的方式增加对于子查询的运用熟练度

查询每个班级的人数作为新的表, 然后直接按照 num >= 5删选结果就OK了, 产生临时表, 从临时表中查询, 复合查询

select 
    class
from 
    (select 
        class, 
        count(distinct student) as num 
     from 
        courses 
     group by 
        class) as temp_table
where 
    num >= 5;

607. 销售员

 

 

  •  如上是三张表, orders是一张中间表
  • 题目要求: 编写一个SQL查询,报告没有任何与名为 “RED” 的公司相关的订单的所有销售人员的姓名。
  • 解题思路: 很明显的我们需要利用主键锁定记录, 进而锁定记录中的 salesperson  -  name 信息
  1. 找到 name 和 RED 相关的所有orders记录
  2. 利用orders记录中的sales_id外键找到 salesperson中 的 对应记录,
  3. 将这些记录中的name除开即为ans. 
-- sales_id 筛选出来ans
select 
    name
from 
    salesperson
where 
-- 步骤 1, 2 通过中间表找到非RED公司对应的sales_id
    sales_id not in (
        select 
            o.sales_id 
        from 
            orders o inner join company c on o.com_id = c.com_id
        where 
            c.name = 'RED'
    );

626. 换座位

  •  题目要求:将连续的 id 号学生进行对换id,最后一个单的 id 不管, 最终结果按照id 升序返回, 所以最后需要进行一个order by 
  •  

 利用好select 实现id的对换, 题目要求很明晰了,  思路也是相当的easy : 兑换 id 说白了就是 将 奇数 id 进行 + 1  偶数 id 进行 - 1 操作, 使得, id 实现对换.   注意: 最后一条单独的奇数 id 不管 

写个伪代码逻辑  

    伪代码逻辑喔:
    if (id == 奇数 && id != end()) return id + 1 后移动
    else if (id == 偶数 && id != end()) return id - 1; 前移动
    else return id; 最后一个 不需要移动

实现:

-- IF(expr,v1,v2)如果表达式expr成立,返回结果v1;否则,返回结果v2。

select 
    (if(id % 2 = 0, id - 1,  -- 是偶数, 直接return id - 1 
    if(id != (select count(distinct id) from seat), 
    -- 是奇数, 进一步判断是不是end
    id + 1, id))) as id
    ,student
from 
    seat
order by id;

第二章 ---  MySQL简介     Day 4-21

2.1 什么是mysql

MySQL是一种DBMS,即它是一种数据库软件.

DBMS   ---  用于数据库中数据的存储,查询,增删查改等实际功能完成的一款管理数据库的软件 

MYSQL的最大优势:  开源, 开源带来了免费, 稳定, 可靠, 多人维护监督的好处

MYSQL的缺陷不足: 对于很多其他DBMS所提供的特性和功能不支持, 但是现在也在不断地完善支持

2.1.1 客户机—服务器软件

DBMS可分为两类:一类为基于共享文件系统的DBMS,另一类为基于客户机—服务器的DBMS.

MySQL是基于客户机—服务器的数据库。

MYSQL部件拆分

服务器部分是负责所有数据访问和处理的一个软件。这个软件运行在称为数据库服务器的计算机上。       

与数据文件打交道的只有服务器软件。关于数据、数据添加、删除 和数据更新的所有请求都由服务器软件完成。       

我们平时使用地其实是客户机, 我们在客户机上面地DBMS软件上发出请求, 进行操作, 这些请求都会通过网络提交到服务器软件上面去, 然后服务器软件对这些请求进行处理, 应答结果到客户机软件.

所有这些活动对用户都是透明的。数据存储在别的地方,或者数据库服务器为你完成这个处理这一事实是隐藏的。你不需要直接访问数据文件。事实上,多数网络的建立使用户不具有对数据的访问权,甚至不具有对存储数据的驱动器的访问权.                 ---   为何要间接访问数据, 避免客户机用户直接访问数据文件? 

这样的意义何在?因为为了使用MySQL,你需要访问运行MySQL服 务器软件的计算机和发布命令到MySQL的客户机软件的计算机。        

2.1.2 MySQL版本

仅作一点了解, 4版本开始有了innodb 引擎, 开始支持事务处理了.  

2.2 MySQL工具

如前所述,MySQL是一个客户机—服务器DBMS,因此,为了使用 MySQL,需要有一个客户机,即你需要用来与MySQL打交道(给MySQL 提供要执行的命令)的一个应用。 

MySQL工具     ---  是为了帮助我们使用MySQL, 给MySQL打交道用的.    种类一般是命令行终端    +     图形化界面工具

2.2.1 mysql命令行实用程序

命令行终端来给MySQL提供要执行地命令, 与MySQL打交道

每个MySQL安装都有一个名为mysql的简单命令行实用程序。

mysql命令行实用程序是使用最多的实用程序之一

2.2.2 MySQL Administrator 

MySQL Administrator(MySQL管理器)是一个图形交互客户机,用来简化MySQL服务器的管理。

2.2.3 MySQL Query Browser

MySQL Query Browser为一个图形交互客户机,用来编写和执行 MySQL命令。

2.3 小结

本章介绍了什么是MySQL,并引入了几个客户机实用程序(一个命令行实用程序,两个可选但强烈建议使用的图形实用程序)            --- 原来我们使用地命令行连接MySQL以及图形化工具连接MySQL服务器, 都是需要客户机实用程序的.  这个客户机实用程序其实就是在客户机上面运行的软件.   也称为MYSQL工具.

我们平时写的命令操作指令都是在MySQL实用程序上面写的, 并不是直接在MySQL上面写. 而是通过MySQL工具, 应用软件程序, 与MySQL进行交互

读完一小练:

1873. 计算特殊奖金

题目要求:   写出一个SQL 查询语句,计算每个雇员的奖金。如果一个雇员的id是奇数并且他的名字不是以'M'开头,那么他的奖金是他工资的100%,否则奖金为0。 (简单来说就是将偶数 or 'M'开头的 salary 变为 0)

b题目必备:  if 条件判断   +    模糊匹配   (like m%)   

like % : 匹配任意多个字符    _ : 匹配任意一个字符

if(表达式, 输出1, 输出2);    if 表达式为ture   输出1, 否则 输出2

select
    employee_id,
    if (employee_id % 2 = 0 or name like "M%", 0, salary) as bonus
from 
    employees;

解决方式2: 利用string 处理函数  left(str, 1) = 'M' 来完成判断是否以M开头的字符串

LEFT(str,len)获取字符串左边len个字符组成的字符串

​​​​​​

select
    employee_id,
    if (employee_id % 2 = 0 or left(name, 1) = 'M', 0, salary) as bonus
from 
    employees;

1757. 可回收且低脂的产品​​​​​​

题目要求: 查找既是低脂又是可回收的产品编号

解题思路: 就是一个简单的条件查询语句即可解决. 

-- 1. 需要可回收, 2. 需要低脂
-- 直接一个条件筛选就OK
select 
    product_id
from 
    products
where 
    low_fats = 'Y' && recyclable = 'Y';

627. 变更性别

题目要求:将男性性别换成女性, 女性性别换成男性

解题思路:  就简单的一个 if 语句即可

if (判断表达式, ans1, ans2);  如果表达式为true 返回 ans1, 否则返回ans2

update 
    salary -- 需要跟新的database
set 
    sex = if(sex = 'f', 'm', 'f'); --男变为女, 女变为男

第八章    --  用通配符进行过滤   Day 4-22

8.1 LIKE操作符

通配符(wildcard) 用来匹配值的一部分的特殊字符

为在搜索子句中使用通配符,必须使用LIKE操作符 LIKE指示MySQL, 后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较       ---  like相当于是告知MySQL 后面是一个通配符模糊匹配

like 用于模糊匹配.   比如说我们需要查找首字母为M开头的字符串.  

可以   like M% 进行模糊匹配以M开头的字符串

% : 匹配任意多个任意字符

 如下语句的含义就是匹配中间包含anvil的prod_name 记录

 _ : 匹配单个任意字符

8.2 使用通配符的技巧 

MySQL的通配符很有用。但这种功能是有代价的:通配 符搜索的处理一般要比前面讨论的其他搜索所花时间更长。这里给出一 些使用通配符要记住的技巧。

  1. 不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。(能使用其他操作符代替尽量使用其他操作符进行代替通配符, 因为通配符检索更耗时)
  2. 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的      (通配符尽量不放在开头)

8.3 小结

本章介绍了什么是通配符以及如何在WHERE子句中使用SQL通配符, 并且还说明了通配符应该细心使用,不要过度使用

链接:https://pan.baidu.com/s/1Noaxky-0OPQSN5ttt0_FQQ?pwd=sqkg 
提取码:sqkg 
--来自百度网盘超级会员V2的分享

感谢您看到此处, 小杰附上这本书籍的百度云盘链接, 授人以鱼不如授人以渔, 小杰还有很多没有读的,后面小杰会对其中对我自身有帮助,有提升的内容继续总结笔记, 您要是觉得这本书还不

错的, 也可以去看看这本书, 是真的很经典的书籍                                         

创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖

《正则表达式必知必会》读书笔记(代码片段)

注:《正则表达式必知必会》这本书很适合入门正则表达式,比网上很多教程都适合。其实正则表达式主要学习的就是各种元字符的使用,最后搭配起来就是一个完整的正则表达式。前8章重点学习掌握;第9章也... 查看详情

mysql必知必会读书笔记(代码片段)

目录第一章--- 了解SQL  Day4-201.1.1什么是数据库?1.1.2表1.1.3 列和数据类型 1.1.4行 1.1.5 主键 1.2什么是SQL 1.3小结第二章---  MySQL简介   Day4-212.1什么是mysql2.1.1客户机—服务器软件2.1.2MySQL版本2.2MySQL工具2.2.1mysql命令行实用程序... 查看详情

正则表达式必知必会读书笔记

架构图模拟小案例1.匹配美元 查看详情

《正则表达式必知必会》读书笔记

《正则表达式必知必会》读书笔记 *正则表达式入门1.正则表达式的两种基本用途:搜索和替换。2.正则表达式是一些用来匹配和处理文本的字符串。小结:正则表达式是文本处理方面功能最强大的工具之一,正则表达式语言... 查看详情

mysql学习--mysql必知必会(代码片段)

?上图为数据库操作分类:??下面的操作參考(mysql必知必会)创建数据库运行脚本建表:mysql>createdatabasemytest;QueryOK,1rowaffected(0.07sec)mysql>showdatabases;+--------------------+|Database|+--------------------+|infor 查看详情

mysql必知必会(代码片段)

姊妹篇——Hive必知必会(数据仓库):https://hiszm.blog.csdn.net/article/details/119907136文章目录第一章:数据库基础基本概念什么是SQL第二章:MySQL简介第三章:了解数据库和表第四章:检索数据SELECT语句第五章:... 查看详情

更新完毕正则表达式必知必会读书笔记

第二章匹配单个字符正则表达式可以包含纯文本(甚至可以是只包含纯文本)。绝大多数正则表达式引擎默认行为只是返回第1个匹配结果,但是正则有办法实现全部匹配。在JavaScript中,可选是g。正则默认区分大小写,如果不可... 查看详情

更新完毕正则表达式必知必会读书笔记

第二章匹配单个字符正则表达式可以包含纯文本(甚至可以是只包含纯文本)。绝大多数正则表达式引擎默认行为只是返回第1个匹配结果,但是正则有办法实现全部匹配。在JavaScript中,可选是g。正则默认区分大小写,如果不可... 查看详情

mysql必知必会(初级篇)(代码片段)

mysql1.基本概念2.SQL语言2.1DCL(数据控制语言)2.1.1创建用户2.1.2使用grant命令给用户授权2.1.3使用revoke命令撤销权限2.2DDL(数据定义语言)2.2.1mysql常用约束类型2.2.2使用alter命令修改表结构2.2.3使用drop命令删除表2.3DML(数据操纵语言)2.3.1使... 查看详情

mysql的必知必会------初识mysql(代码片段)

目录数据库简介MySQL简介MySQL的操作库操作基本数据类型字符串类型日期类型基础表操作一些小结和建议建表练习参考代码写在最后的话数据库简介我们都知道MySQL是数据库的一种,那么数据库是什么呢?数据库其实就是通过各种数... 查看详情

mysql的必知必会------初识mysql(代码片段)

目录数据库简介MySQL简介MySQL的操作库操作基本数据类型字符串类型日期类型基础表操作一些小结和建议建表练习参考代码写在最后的话数据库简介我们都知道MySQL是数据库的一种,那么数据库是什么呢?数据库其实就是通过各种数... 查看详情

mysql的必知必会------初识mysql(代码片段)

目录数据库简介MySQL简介MySQL的操作库操作基本数据类型字符串类型日期类型基础表操作一些小结和建议建表练习参考代码写在最后的话数据库简介我们都知道MySQL是数据库的一种,那么数据库是什么呢?数据库其实就是通过各种数... 查看详情

mysql必知必会语法和基础知识大总结(代码片段)

概述主键:唯一区分表中每个行(不可重复,不允许nullmysql:基于客户-服务器的数据库系统使用mysqlmysql是部署在主机上的,可以通过ssh建立mysql连接#显示数据库showdatabases;#选择数据库usedatabases;#显示库中的表s... 查看详情

mysql必知必会语法和基础知识大总结(代码片段)

概述主键:唯一区分表中每个行(不可重复,不允许nullmysql:基于客户-服务器的数据库系统使用mysqlmysql是部署在主机上的,可以通过ssh建立mysql连接#显示数据库showdatabases;#选择数据库usedatabases;#显示库中的表s... 查看详情

牛客mysql必知必会刷题总结(代码片段)

总的来说,关于要用having的时候会出错,此为不熟练。另外如通配符等函数运用属实是落后不了解。1.Mysql中表student_table(id,name,birth,sex),插入如下记录:(\'1001\',\'\',\'2000-01-01\',\'男\');(\'1002\',null,\'2000-12-21\',\'男\');(\'1003\',NULL,\'2000... 查看详情

mysql必知必会,详尽入门,一文帮你学会sql必知必会(代码片段)

目录前言数据库的概念和术语SQL语言和组成DDLshow: 展示当前已有的数据库或者表create:创建一个数据库或者一个表 drop:删除表、数据库对象或者视图alter:修改现有的数据库对象,例如 修改表的属性或者字段(... 查看详情

hive必知必会(代码片段)

hive: 基于hadoop,数据仓库软件,用作OLAPOLAP:onlineanalyzeprocess 在线分析处理OLTP:onlinetransactionprocess在线事务处理 事务: ACID A:atomic 原子性 C:consistent 一致性 I:isolation 隔离性 D:durability 持久性 1读未提交   脏读 //事务... 查看详情

crypto必知必会(代码片段)

crypto必知必会最近参加了个ctf比赛,在i春秋,南邮方面刷了一些crypto密码学题目,从中也增长了不少知识,在此关于常见的密码学知识做个小总结!Base编码Base编码中用的比较多的是base64,首先就说一下Base64编码方式将字符串以... 查看详情