八股文学习之路

一、数据库

【2023.3.20】
在这里插入图片描述
在这里插入图片描述

1概念

1.1 数据库和SQL的关系

数据库是用来存储数据的,在这个过程中,会涉及到
数据的新增
数据的删除数据的修改数据的查询
数据库、数据表的管理等等
而SQL语言,就是一种对数据库、数据进行操作、管理、查询的工具。
使用数据库软件去获得库->表->数据,这种数据组织、
存储的能力
并借助SQL语言,完成对数据的增删改查等操作

1.2 SQL

SQL全称: Structured Query Language,结构化查询语言,用于访问和处理数据库的标准的计算机
语言。
SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。
经过多年发展,SQL以成为数据库领域统一的数据操作标准语言,可以说几乎市面上所有的数据库系统
都支持使用
SQL语言来操作
简单来说,5QL语言就是操作数据库的专用工具

1.3 SQL语言分类

由于数据库管理系统(数据库软件)功能非常多,不仅仅是存储数据,还要包含:数据的管理、表的管理、库的管理、账户管理、权限管理等等。
所以,操作数据库的SQL语言,也基于功能,可以划分为4类:
数据定义:DDL ( Data Definition Language)
-库的创建删除、表的创建删除等
数据操纵:DML ( Data Manipulation Language)
-新增数据、删除数据、修改数据等
数据控制:DCL ( Data Control Language)
-新增用户、删除用户、密码修改、权限管理等
数据查询:DQL ( Data Query Language).
-基于需求查询和计算数据

1.4 SQL语言特征

不区分大小写
可以单行或多行书写,最后以;号结束
单行注释:–注释内容(–后面一定要有一个空格)
单行注释∶#注释内容(#后面可以不加空格,推荐加上)
多行注释:/注释内容/

【3.21】

2.指令

2.1DDL 库管理

查看数据库 SHOW DATABASES;
使用数据库 USE数据库名称;
创建数据库 CREATE DATABASE 数据库名称[CHARSET UTF8]
删除数据库 DROP DATABASE 数据库名称;
查看当前使用的数据库 SELECT DATABASE();

表管理
查看有哪些表 *SHOW TABLES;* 注意︰需要先选择数据库 删除表 DROP TABLE 表名称; DROP TABLE IF EXISTS 表名称; 创建表 *CREATE TABLE表名称;( 列名称 列类型, 列名称 列类型, )* 列类型有:int--整数 float--浮点数 varchar(长度)--文本,长度为数字,做最大长度限制 date--日期类型 timestamp--时间戳类型

2.2 DML

DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新。
关键字:

插入
INSERT INTO 表名[(1,列2......,列N)] VALUES(1,值2......,值N)[(1,值2,......,值N)..... .(1,值2......,值N)]

删除
DELETE FROM表名称[wHERE 条件判断] 不带where的话对表中所有数据都删除 需要where = > <之类的。

更新
UPDATE表名 SET=[WHERE 条件判断] ☆不带where的话对全表的列都更新 需要where = > <之类的。
2.3 DQL

在SQL中,通过SELECT关键字开头的SQL语句,来进行数据的查询。分为:基础查询、分组聚合、排序分页

基础查询
SELECT 字段列表|* FROM+字段前DISTNCT 对单列去除重复项

分组聚合
SELECT 字段|聚合函数 FROM[WHERE条件] GROUP BY 列
聚合函数有:- SUM()求和- AVG()求平均值- MIN()求最小值- MAX()求最大值- COUNT(|*)求数量

排序
SELECT|聚合函数|*FROMWHERE ...ORDER BY ..可以多列. [Asc代表升序|DESC代表降序]

限制
SELECT|聚合函数|*FROMWHERE ...GROUP BY ...ORDER BY ... [AsC | DESC] LIMIT n[从第几条开始,m显示几条]
SQL Server中 SELECT TOP number|或者百分比percent column_name(s) FROM table_name;

★执行顺序:FROM -> WHERE -> GROUPBY和聚合函数->SELECT ->ORDER BY ->LIMIT

2.4函数

在这里插入图片描述

常见字符串函数
CONCAT(S1,S2,..Sn) 字符串拼接,将S1,S2,...Sn拼接成一个字符串
LOWER(str) 将字符串str全部转为小写
UPPER(str) 将字符串str全部转为大写
LPAD(str,n,pad) 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
RPAD(str,n, pad) 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
TRIM(str) 去掉字符串头部和尾部的空格
SUBSTRING(str,start,len) 返回从字符串str从start位置起的len个长度的字符串
常见的数值函数如下:
CEIL(x) 向上取整
FLOOR(x) 向下取整
MOD(x.y) 返回x/y的模
RAND() 返回0~1内的随机数
ROUND(x,y) 求参数x的四舍五入的值,保留y位小数
常见的时间函数
CURDATE() 返回当前日期
CURTIME() 返回当前时间
NOW() 返回当前日期和时间
YEAR(date) 获取指定date的年份
MONTH(date) 获取指定date的月份
DAY(date) 获取指定date的日期
DATE_ADD(date,INTERVAL expr type) 返回一个日期/时间值加上一个时间间隔expr后的时间值
DATEDIFF(date1,date2) 返回起始时间date1和结束时间date2之间的天数
流程函数
if(value, t, f)	如果valuetrue,则返回t,否则返回f
ifnull(value1, value2)	如果value1不为null,返回value1,否则返回value2
case when [val1] then [res1]else [default] end	如果val1为true,则返回res1,否则返回default默认值
case [expr] when [val1] then [res1]else [default] end	如果expr的值等于val1,则返回res1,否则返回default默认值

2.5高级语法

【5.25】

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

SELECT column1, column2, ...FROM table_name WHERE column LIKE pattern;
配合使用的通配符
"%"  符号用于在模式的前后定义通配符(默认字母)。
"_"	 替代一个字符
[charlist]	   字符列中的任何单一字符
[^charlist][!charlist]	不在字符列中的任何单一字符
SELECT column1, column2, ...要选择的字段名称,可以为多个字段 FROM table_name 要查询的表名称 WHERE column IN (value1, value2, ...);//要查询的值,可以为多个值。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期
SELECT column1, column2, ... FROM table_name WHERE column BETWEEN value1 范围的起始值 AND value2 范围的结束值;
通过使用 SQL,可以为表名称或列名称指定别名,基本上,创建别名是为了让列名称的可读性更强。

SELECT column_name AS alias_name FROM table_name; //列的 SQL 别名语法
如果列名称包含空格,要求使用双引号或方括号
在下面的 SQL 语句中,我们把三个列(url、alexa 和 country)结合在一起,并创建一个名为 "site_info" 的别名:
SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_info FROM Websites;

下面的 SQL 语句选取 "菜鸟教程" 的所有访问记录。我们使用 "Websites""access_log" 表,并分别为它们指定表别名 "w""a"(通过使用别名让SQL 更简短)
SELECT w.name, w.url, a.count, a.date FROM Websites AS w, access_log AS a WHERE a.site_id=w.id and w.name="菜鸟教程";
自连接时会使用表重命名,查询一个表中比其中一个人高工资的leetcode题目


【3.23】

3.pymysql

from pymysql import Connection
#构建到MySQL数据库的链接
conn = Connection(
host = "localhost",#主机名(IP)port=3306,
#端口
user = "root" ,
#账户
password = "123456"#密码
#插入时自动确认提交
autocommit = True
)
#print(conn.get_server_info())#执行非查询性质SQL
cursorl = conn.cursor()
#获取到游标对象
#选择数据库
conn.select_db( "test" )#执行sql
#####执行非查询语句
cursor.execute( "create table test_pymysql(id int); ")##输入的指令可以不带分号

#####执行查询性质SQL
```python
cursor.execute( "SELECT *FROMstudent";#获取查询结果
results: tuple = cursor.fetcha171(for r in results:#变成了一个个的元组
print(r)

#####执行插入
cursor.execute("insert into student values(10001‘周杰轮',31,‘男')")
#通过commit确认
# conn.commit()

#关闭链接
conn.close()

【3.31】

####统计symbol情况
SELECT
	symbol,
	count( symbol ) AS number 
FROM
	stock_announcement
GROUP BY
	symbol 
HAVING
	count( symbol ) >= 1 
ORDER BY
	number DESC;

【4.1】自考数据库概念 原文链接:https://blog.csdn.net/imwhyang/article/details/120710231

第一章 数据库系统概述

1.1 数据库基本概念
数据:符号记录(文本或多媒体)
数据库(DB):长期储存、有组织、可共享 的数据集合
数据库管理系统(DBMS):建立与管理数据库的软件
基本功能:数据-定义、操纵。数据库运行管理、建立、维护。
数据库系统(DBS):数据库、管理系统、工具、程序、DBA、用户等。
1.2 数据库管理技术发展
人工管理阶段:记录无结构、整体无结构
文件系统阶段:长期保存、专门管理、可共享(差)、冗余大、记录内有结构、整体无结构
数据库系统阶段:数据集成、数据共享性高、冗余小、数据一致性、独立性高、统一管理控制、减少开发维护工作量。
1.3 数据库系统的结构
三级模式结构:
模式:概念模式或逻辑模式,指数据的逻辑关系与特征
外模式:数据的表现形式(程序或表)
内模式:数据的物理存储方式与结构
运行与应用结构:C/S or B/S
数据模型
特征与模型结成要素:
数据结构:静态属性
数据操作:动态特性
数据约束(域):正确、有效、相容性。
模型分类:
概念层:
信息基本概念:实体、属性、码键、域、实体型、实体集、联系
概念模型的表示:E-R图 实体型、属性、联系
逻辑层:
层次模型(树)
网状模型
关系模型、面向对象模型
物理层:
存储介质上的组织结构

第二章 关系数据库

第二节 关系数据模型
关系数据结构:单一数据结构-关系。
表 table:表就是关系,二维表由 表名、列、行数据组成。
关系 Relation
基本关系,基本表,真实存在数据。
查询表,查询结果对应表。
视图表,其它表导出表,虚表。
列 Column = 作字段Field = 属性Attribute
同表列唯一
属性 Attribute
同 ->列
属性的个数:元或度
行 Row
元组Tuple 或 记录Record
元组 Tuple
一行就是一个元组
分量 Component
元组中的每一个属性值都叫分量
码或键 Key
一个表中的若干属性值,在任何元组中都不相同(标识数据行唯一),这若干属性值称为该表的码或键。
超码或超键 Super Key
移去某个属性仍然是表的码,称超码。
默认超码:所有属性。也是最大超码。
候选码或候选键 Candidate Key
最小超码
不能去掉任何一个属性
主码或主键 Primary Key
候选码中选择其中一个作为元组唯一标识,称主键。
全码或全键 All-Key
表中所有属性。
主属性 Primary Attribute 和非主属性 Nonprimary Attribute
主属性:包含在候选码中的。
非主属性:不包含在候选码中的。
外码或外键 Foreign Key
当前表中的非主属性是另一表的主键,称为当前表的外键。
参照关系 Referencing Relation 和被参照关系 Referenced Relation
参照关系/从关系:外键为非候选码的。
被参照关系/主关系:外键为主键的表。
域 Domain
属性值的取值范围。
数据类型 Data Type
属性值的数据类型。
关系模式 Relation Schema
型:表结构不变
值:数据变化

【4.2】
第一节 关系数据库概述
关系数据库的特征
基本特征是使用关系数据模型组织数据,这种思想源于数学。

关系数据库的优点
高级的非过程语言接口;
较好的数据独立性;
为商品化的关系数据库管理系统的研制做好了技术上的准备。
第二节 关系数据模型
关系数据库模型三要素
关系数据结构
关系操作集合
关系完整性约束
关系数据结构
表:也称为关系,一个二维数据结构,由表名、构成表的列及若干行数据组成。每一个表有一个唯一的表名,每一行数据描述一条具体的记录值。
关系: 一个关系逻辑对应易掌柜二维表,可以为每个关系取一个名称进行标识。关系的三种类型: 1)基本关系;2)查询表;3)视图表。
列: 也称为字段或属性。表中每一列有一个名称,称为列名、字段名或属性名。每一列表示一个实体的属性。在表中,字段名必须唯一,不同的表中可以出现相同的字段名。
属性: 一列即为一个属性,每一个属性都有一个属性名。表中属性的个数称为关系的元或度。列的值称为属性值;属性的取值范围称为值域。
行: 也称为元组或记录。表中数据按行进行存储。表中的一行数据即为一个元组或一条记录,其每行由若干字段值组成。每个字段值描述该对象的一个属性或特征。
分量: 元组中的一个属性值,称为一个分量。
码或键: 即这些属性的值都能用来唯一标识该关系的元组,则称这些属性为该关系的码或键。
超码或超键: 如果在关系的一个码中移去某个属性,它仍然是这个关系的码,则称这样的码或键为该关系的超码或超键。
候选码或候选键: 如果在关系的一个码或键中,不能从中移去任何一个属性,否则它就不是这个关系的码或键。则称这样的码或键为该关系的候选码或候选键。 一个关系的候选码或候选键是这个关系的最小超码或超键。
主码或主键: 在一个关系的若干个候选码或候选键中指定一个用来唯一标识关系的元组,则称这个被指定的候选码或候选键为该关系的主码或主键。
全码或全键: 一个关系模式的所有属性集合是这个关系的主码或主键,则称这样的主码或主键为全码或全键。
主属性和非主属性: 关系中包含在任何一个候选码中的属性称为主属性或码属性,不包含在任何一个候选码中的属性称为非主属性或非码属性。
外码或外键: 当关系中的某个属性不是这个关系的主码或候选码,而是另一关系的主码时,称该属性为这个关系的外码或外键。
参照关系和被参照关系: 参照关系也称为从关系,被参照关系也称为主关系,它们是指以外码相关联的两个关系。以外码作为主码的关系称为被参照关系;外码所在的关系称为参照关系。被参照关系与参照关系是通过外码相联系的,这种联系通常是一对多的联系。
域: 表示属性的取值范围。
数据类型: 表中每个列都有相应的数据类型,它用于限制该列中存储的数据。
关系模式: 同数据模型一样,数据库也有型和值之分。在关系数据库中,关系模式是型,关系是值,即关系模式是对关系的描述。关系模式是静态的、稳定的,而关系是动态的、随时间**不断变化的。**这是因为关系操作在不断地更新着数据库中的数据。人们常常会把关系模式和关系都笼统地称为关系。
关系数据库
关系数据库是以关系模式作为数据的逻辑模型,并采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上。 在一个给定的应用领域中,所有关系的集合构成一个关系数据库。
关系数据库对关系是有限定的,具体要求如下:
每一个属性都是不可分解的。
每一个关系仅仅有一种关系模式。
每一个关系模式中的属性必须命名,在同一个关系模式中,属性名必须是不同的。
同一个关系中不允许出现候选码或候选键值完全相同的元组。
在关系中元组的顺序是无关紧要的,可以任意交换。
在关系中属性的顺序是无关紧要的,可以任意交换。
关系操作集合
基本的关系操作有:1)查询操作;2)插入、删除、修改操作。
查询操作: 选择、投影、连接、除、并、差、交、笛卡尔积等。
关系操作的特点是集合操作方式,即操作的对象和结果都是集合、这种操作方式也称为一次一集合的方式。
关系操作的分类: 关系代数语言、关系演算语言以及兼具两者双重特点的语言。共同特点是:语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够独立使用也可以嵌入高级语言中使用。
关系代数
三大要素:操作对象、操作符、操作结果。
关系运算符:

关系完整性约束
指数据库中数据的正确性、相容性和一致性。
关系模型中有三类完整性约束,分别是实体完整性约束、参照完整性约束和用户定义完整性约束。

实体完整性约束
是指关系的主属性,即主码的组成不能为空,也就是关系的主属性不能是空值 NULL。

参照完整性约束
参照完整性约束就是定义外码和主码之间的引用规则,它是对关系间引用数据的一种限制。描述定义:若属性 F 是基本关系 R 的外码,它与基本关系 S 的主码 K 相对应,则对 R 中每个元组在 F 上的值只允许两种可能,即要么取空值,要么等于 S 中某个元组的主码值。

用户定义完整性约束
用户定义的完整性约束是针对某一应用环境的完整性约束条件,它反映了某一具体应用所涉及的数据应满足的要求。

关系模型完整性约束的校验
为了维护关系数据库中数据的完整性,在对关系数据库执行插入、删除和更新操作时,需要检验是否满足上述三类完整性约束。

关系数据库的规范化理论
关系模式存在的问题
数据冗余
更新异常
插入异常
删除异常
什么是函数依赖?
函数依赖是指关系中属性间的对应关系。

几种函数依赖关系
完全函数依赖;
部分函数依赖;
传递函数依赖。
什么是关系规范化过程?
一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。

第一范式
设 R 为任一给定关系,若果 R 中每个列与行的交点处的取值都是不可再分的基本元素,则 R 为第一范式。
第一范式是一个不含重复组的关系,其中不存在嵌套结构。不满足第一范式的关系为非规范关系。

第二范式
设 R 为任一给定关系,若 R 为 1NF,且其所有非主属性**都完全函数依赖于候选关键字,**则 R 为第二范式。

第三范式
设 R 为任一给定关系,若 R 为 2NF,且其每一个**非主属性都不传递函数依赖于候选关键字,**则 R 为第三范式。

BCNF
设 R 为任一给定关系, X、 Y 为其属性集, F 为其函数依赖集,若 R为 3NF,且其 F 中所有函数依赖 X→Y(Y 不属于 X)中的 X 必包含候选关键字,则 R 为 BCNF。

关系规范化理论的应用
关系规范化理论主要应用于数据库设计中的概念设计阶段。在实现设计中当将E-R 图向关系模型转换时,还可以用它来分析并发现概念设计中可能存在的遗漏或不当之处,特别是联系实体是否不单独转换为一独立关系而集成到与之相联的基本实体中去处理时,规范化理论是最有效的评价准则。

二、计算机网络

OSI参考模型
TCO/IP参考模型

数据交换方式【4.23】
1.电路交换: 传输时延最小
2.报文交换
3.分组交换:原理和报文基础上,将文件分成128B的packet包。比报文交换的时延小,比较适合计算机间的突发式数据通信。
在这里插入图片描述
(1)数据报方式
(2)虚电路方式:但不是独占链路
传输介质:
在这里插入图片描述
中继器:对数字信号进行再生和还原
集线器(多口中继器):对信号进行再生放大和转发

数据链路层
透明传输:
1.字符计数法
2.字符填充法:适用于文本传输,由规定的开头和结尾帧包装
3.零比特填充法:首尾帧内容相同
4.违规编码法:用编码中不会出现的方法作为帧开头和结尾
差错控制:
1.比特错误
(1)检错编码
①奇偶校验码:规定发送数据中1的奇偶个数,检错能力50%
②循环冗余码CRC:只能做到凡是接收的帧就认为没有差错
在这里插入图片描述 (2)纠错编码

流量控制【4.25】
停止-等待协议:先发送然后等待确认下一个发送消息后发送方才再移动到下一个发送数据位置
滑动窗口协议:发送时同时移动到下一个发送数据上
在这里插入图片描述

后退N帧协议(GBN):
接收方只按照顺序接收帧,不是顺序内的就丢弃
等待超时计时器再次发送

选择重传协议(SR):
改进后退N帧的缺点,接收方当0帧没确认时可以接收1帧,也就是说发送方只重传出错的帧

介质访问控制:
静态划分信道
频分多路复用FDM
时分多路复用TDM
波分多路复用WDM
码分多路复用CDM
动态划分信道
轮询访问介质访问控制-令牌传递协议
随机访问介质访问控制
ALOHA:随机发送、想发就发
CSMA:发送之前、监听信道 缺点是如果发送的数据发生冲突后还是要坚持把数据帧发送完,造成了浪费
在这里插入图片描述 CSMA/CD(carrier sense multiple access with collision detection):发送之前先监听信道,边发送时边监听信道,发生冲突停止发送
CSMA/CA

TCP三次握手

为什么不能两次握手

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bu volcano

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值