MySql--SQL语言
目录
SQl---DDL 结构定义
创建、删除 数据库
代码
运行
设计表
数据类型
整数
浮点数
主键
约束
主键自增长
默认值
字段注释
创建、删除 表
代码
运行
代码
代码
运行
SQL---DML 数据操纵
插入数据
代码
运行
代码
运行
代码
运行
代码
运行
修改数据
代码
运行
删除数据
代码
运行
SQL---DQL 数据查询
基础查询
特定列查询,全部列查询
代码
运行
代码
运行
算数运算符 + - * /
代码
运行
排除重复行
代码
运行
条件查询
代码
运行
模糊查询
like
代码
运行
between and
代码
运行
in
代码
运行
is null /is not null
代码
运行
union
代码
运行
union all
代码
运行
排序
代码
运行
数量限制
代码
运行
分组查询
代码
运行
代码
运行
代码
运行
函数 查询结果处理
单行函数
字符函数
代码
运行
代码
运行
代码
运行
代码
运行
代码
运行
代码
运行
代码
运行
代码
运行
代码
运行
代码
运行
逻辑处理
代码
运行
代码
运行
代码
运行
数学函数
代码
运行
代码
运行
代码
运行
日期函数
代码
运行
代码
运行
编辑
代码
运行
代码
运行
编辑
代码
运行
分组函数
代码
运行
SQl---DDL 结构定义
创建、删除 数据库
代码
-- 创建数据库
CREATE DATABASE IF NOT EXISTS schooldb CHARSET utf8
-- 删除数据库
DROP DATABASE IF EXISTS schooldb
运行
-- mysql中数据库一旦创建,名字不能修改
-- 修改数据库字符集
ALTER DATABASE schooldb CHARSET utf8
设计表
数据类型
char(n) 可变长度的字符串 n是最大长度 如果只存储2个字符,实际占有2个空间位置
varchar(n) 可变长度的字符串 n是最大长度 如果只存储2个字符,实际占有2个空间位置
data 日期,包含年,月,日
datetime 年月日,时分秒
整数
signed 有符号,默认为无符号
unsigned 无符号
浮点数
decimal(M,D)
M:精度,数据的总长度;
D:标度,小数点后的长度。
主键
在一张表中代表唯一的一条记录,不能为空且不能重复
约束
主键约束 PRIMARY KEY
不能为空约束 NOT NULL
唯一性约束 UNIQUE
主键自增长
主键自增长,设置主键自增长后,只能为整数类型
AUTO_INCREMENT
默认值
DEFAULT default_value
字段注释
comment'注释'
创建、删除 表
-- 创建表
-- 确定表名 学生信息表
-- 确定表中字段(列) 学号,姓名,性别,生日,电话,身高,注册时间
-- 确定字段(列)的数据类型 以及长度
-- 确定列的约束
-- 创建表语法
代码
CREATE TABLE student(number INT,NAME VARCHAR(6),gender CHAR(1),birthday DATE,phone VARCHAR(11),height DECIMAL(3,2),reg_time DATETIME)
运行
-- 删除表结构,删除后表中数据就不存在了
代码
DROP TABLE student
-- 创建表 并添加约束规则
-- PRIMARY KEY 设置主键约束 ,添加主键约束后,值不能重复,一个表中只能有一个列是主键
-- 主键列可以唯一
-- mysql中主键可以设置为自动增长 AUTO_INCREMENT
-- NOT NULL 不能为空约束
-- UNIQUE 唯一性约束
-- 检查约束 设置条件
代码
CREATE TABLE student(number INT PRIMARY KEY AUTO_INCREMENT COMMENT '学号主键',NAME VARCHAR(6) NOT NULL COMMENT '姓名',gender CHAR(1) NOT NULL COMMENT '性别',birthday DATE NOT NULL,phone VARCHAR(11) NOT NULL UNIQUE,height DECIMAL(3,2) CHECK(height<3),reg_time DATETIME
)
运行
SQL---DML 数据操纵
常用语句:insert into,update,delete
插入数据
方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);
代码
INSERT INTO student(NAME,gender,birthday,phone,height,reg_time)VALUES('杜兰特','男','2019-6-8','12345678913',1.98,NOW())
INSERT INTO student(NAME,gender,birthday,phone,height,reg_time)VALUES('科比','男','2019-6-8','12345678912',1.98,NOW())
运行
方式2: INSERT INTO 表名 set 列名1=值1,..列名n=值n;
代码
INSERT INTO student SET NAME='詹姆斯',gender='男',birthday='1986-2-3',phone='12345678911'
运行
方式3: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n);
代码
INSERT INTO student(NAME,gender,birthday,phone,height,reg_time)VALUES('科比','男','1988-6-8','12345678914',1.88,NOW()),('库里','男','1987-6-8','12345678915',2.12,NOW())
运行
方式4:INSERT INTO 表名(列1,列2……,列n) 查询语句(查询的列数与插入列数匹配。
代码
-- 复制表结构
CREATE TABLE stu LIKE student
INSERT INTO stu(number,NAME,gender,birthday,phone,height,reg_time)SELECT * FROM student
运行
修改数据
-- 修改记录 修改时一定注意条件
UPDATE 表名 SET 列名 = ‘新值’WHERE 条件
代码
UPDATE stu SET NAME='c罗',height=1.70 WHERE number = 1
运行
删除数据
DELETE FROM 表名 WHERE 条件
TRUNCATE TABLE 表名;清空整张表
代码
-- 删除
DELETE FROM student WHERE number = 4
-- 修改表名
RENAME TABLE student TO stu
RENAME TABLE stu TO student-- 复制表结构
CREATE TABLE stu LIKE student
运行
SQL---DQL 数据查询
-- select 结果 from 表名
基础查询
特定列查询,全部列查询
select column1,column2 from table
代码
-- 查询指定的列
SELECT NAME,gender,birthday,phone FROM student
运行
select * from table
代码
-- 查询所有的列 *-表示所有的列 查询的结果是虚拟的表格,不能操作,是只读的,不能写入
SELECT * FROM student
运行
算数运算符 + - * /
代码
-- 查询结果进行算术运算 + - * /
SELECT NAME,height+1 FROM student
运行
排除重复行
select distinct column1,column2 from table
代码
-- 去除重复数据 查询结果中所有的列都相同,就视为重复数据
-- DISTINCT关键字去除重复数据
SELECT DISTINCT NAME,gender FROM student
运行
条件查询
select 结果 from 表 where 条件 【group by 条件 order by 列 limit】
-- select * from 表名 where 条件
-- =
-- and 并且
-- >
-- or 多个条件只需要满足一个即可
-- !=
-- <>
代码
SELECT * FROM student WHERE gender = '男' AND height > 1.90
SELECT * FROM student WHERE gender = '男' OR height > 1.70
SELECT * FROM student WHERE gender != '男'
SELECT * FROM student WHERE gender <> '女
运行
模糊查询
like
是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值 或数值型.
通配符: % 任意多个字符
代码
-- like '库%' 模糊匹配
SELECT * FROM student WHERE NAME LIKE '库%'
运行
between and
两者之间,包含临界值;
代码
-- between 1.65 and 1.98 两者之间
SELECT * FROM student WHERE height>=1.65 AND height<=1.98
SELECT * FROM student WHERE height BETWEEN 1.65 AND 1.98
运行
in
判断某字段的值是否属于in列表中的某一项
代码
-- in(值1,值2,值n) 在给定的值中
SELECT * FROM student WHERE height =1.78 OR height =1.88 OR height =1.98
SELECT * FROM student WHERE height NOT IN(1.78,1.88,1.98)
运行
is null /is not null
为空的/不为空的
代码
-- 查询身高为null的数据
SELECT * FROM student WHERE height IS NULL
SELECT * FROM student WHERE height IS NOT NULL
运行
union
mysql 会把结果集中重复的记录删掉
代码
-- union 将多个查询的结果合并,合并时注意列数一致,会去除重复数据
SELECT NAME,gender FROM student WHERE gender = '男'UNION
SELECT NAME,gender FROM student WHERE number>1
运行
union all
mysql 会把所有的记录返回,且效率高于union
代码
-- union all 只是将查询的多个结果合并,不会去除重复数据
SELECT NAME,gender FROM student WHERE gender = '男'UNION ALL
SELECT NAME,gender FROM student WHERE number>1
运行
排序
order by 排序列
asc代表的是升序,desc代表的是降序,如果不写,默认是升序
代码
-- order by 列 asc(升序) desc(降序)
SELECT * FROM student WHERE number>0 ORDER BY number ASC
SELECT * FROM student WHERE number>0 ORDER BY number DESC
SELECT * FROM student WHERE number>0 ORDER BY height DESC
SELECT * FROM student WHERE number>0 ORDER BY reg_time ASC
SELECT * FROM student WHERE number>0 ORDER BY height ASC,reg_time DESC
运行
数量限制
limit子句:对查询的显示结果限制数目 (sql语句最末尾位置)
代码
-- 数量限制 实现分页查询
-- limit 开始位置,每次查询的数量
SELECT * FROM student WHERE number>0 ORDER BY number ASC LIMIT 0,3
SELECT * FROM student WHERE number>0 ORDER BY number ASC LIMIT 3,3
SELECT * FROM student WHERE number>0 ORDER BY number ASC LIMIT 6,3
运行
分组查询
-- 分组--在一些统计场景中,按照某一个条件进行区分(分组)
-- 统计时,按照性别,班级,年级,部门,年份,月份
-- 把满足某一个条件的数据分到同一个组中,每一个组内单独进行处理
select 分组函数,列(要求出现在group by的后面)
from 表
[where 筛选条件]
group by 分组的列表
[having 分组后的筛选]
[order by 子句]
-- 查询男生,女生各有多少人 每个年级各有多少人 每个部门各有多少人
-- 分组统计 男生组统计一次,女生组统计一次
代码
SELECT COUNT(*),gender FROM student GROUP BY gender SELECT MAX(height),gender FROM student GROUP BY gender SELECT COUNT(*),DATE_FORMAT(reg_time,'%Y-%m') FROM student GROUP BY DATE_FORMAT(reg_time,'%Y-%m')
运行
-- 统计男生女生各多少人
代码
SELECT COUNT(*),gender FROM student GROUP BY gender
运行
代码
-- 男生和女生谁的人数大于2
-- having count(*)>2 having 条件 是对分组后的结果进行条件筛选
SELECT COUNT(*),gender FROM student GROUP BY gender HAVING COUNT(*)>2
运行
函数 查询结果处理
-- 单行函数:会对查询中的每一行数据进行处理
-- 分组函数 聚合函数(查询多行,返回一行) 统计函数
单行函数
字符函数
-- length(列名) 以字节为单位
代码
SELECT LENGTH(NAME),NAME,gender FROM student
运行
-- char_length(列名) 以字符为单位
代码
SELECT CHAR_LENGTH(NAME),NAME,gender FROM student
运行
-- concat(str1,str2,str3) 连接多个字符串 as 别名
代码
SELECT CONCAT(NAME,":",CHAR_LENGTH(NAME)) AS NAME,gender FROM student
运行
-- upper() 转大写 lower() 转小写
代码
SELECT UPPER(NAME),LOWER(NAME) FROM student
运行
-- substring(字符串,开始位置,截取长度) 开始位置从1开始
代码
SELECT SUBSTRING(NAME,1,2) FROM student
运行
-- instr(字符串,指定的字符)获取指定字符首次出现位置,找不到返回0
代码
SELECT INSTR(NAME,'o') FROM student
运行
-- trim(字符串) 默认是去掉字符串前后空格的
代码
SELECT TRIM(NAME),NAME FROM student
运行
-- trim(指定的子串 from 字符串) 可以去掉前后指定的子串
代码
SELECT TRIM('a' FROM NAME),NAME FROM student
运行
-- 左填充 右填充到指定长度
代码
SELECT LPAD(NAME,5,'a'),RPAD(NAME,5,'b') FROM student
运行
-- replace(列,'old','new')字符串的替换
代码
SELECT REPLACE(NAME,'o','O') FROM student
运行
逻辑处理
-- case when 条件 then 条件成立结果 else 不成立结果 end;
代码
SELECTNAME,gender,(CASE WHEN height>=2 THEN '高个子' ELSE '正常身高' END) AS height
FROMstudent
SELECTNAME,gender,(CASE WHEN height>=2 THEN 'A'WHEN height>=1.8 THEN 'B'ELSE 'C' END) AS height
FROMstudent
运行
-- ifnull(列名,'为空时默认信息')
代码
SELECTNAME,gender,IFNULL(reg_time,'暂未录入') AS reg_time
FROMstudent
运行
-- if(条件,'结果1','结果2')
代码
SELECTNAME,gender,IF(height>=2,"高个子","正常") AS height
FROMstudent
运行
数学函数
-- round(数值) 四舍五入
-- ceil(数值) 向上取整,返回>=该参数的最小整数
-- floor(数值) 向下取整,返回<=该参数的最大整数
代码
SELECT NAME,gender,ROUND(height),CEIL(1.1),FLOOR(1.9) FROM student
运行
-- mod(被除数,除数) 取余,被除数为正,则为正;被除数为负,则为负
代码
SELECT height,number,MOD(height,number) FROM student
运行
-- truncate(数值,保留小数的位数) 截断,小数点后截断到几位
-- rand() 获取随机数,返回0-1之间的小数
代码
SELECT NAME,gender,TRUNCATE(height,1),height,RAND() FROM student
运行
日期函数
-- now() 年月日 时分秒 获取系统当前时间
-- curdate() 年月日
-- curtime() 时分秒
代码
SELECT NOW(),CURDATE(),CURTIME() FROM student
运行
-- year(日期) 将日期格式化为年
-- month(日期) 将日期格式化为月
代码
SELECT YEAR(birthday),MONTH(birthday) FROM student
SELECT * FROM student WHERE MONTH(birthday) = 6
SELECT COUNT(*),YEAR(birthday) FROM student GROUP BY YEAR(birthday)
运行
-- str_to_date('2022-3-6','%Y-%m-%d') 将字符串日期格式化为日期类型
代码
SELECT STR_TO_DATE('2022-3-6','%Y-%m-%d') FROM student
运行
-- date_format(birthday,'%Y-%m') 将日期格式化为指定的字符串
代码
SELECT DATE_FORMAT(birthday,'%Y-%m') FROM student
SELECT COUNT(*),DATE_FORMAT(reg_time,'%Y-%m') FROM student GROUP BY DATE_FORMAT(reg_time,'%Y-%m')
运行
- datediff(CURDATE(),birthday) 计算两个日期之间相差的天数
代码
SELECT DATEDIFF(CURDATE(),birthday) FROM student
运行
分组函数
-- sum() 求和
-- avg() 平均值
-- max() 最大值
-- min() 最小值
-- count() 统计个数
代码
SELECT SUM(height) FROM student
SELECT AVG(height) FROM student
SELECT MAX(height) FROM student
SELECT MIN(height) FROM student
SELECT COUNT(*) FROM student
运行
相关文章:

MySql--SQL语言
目录 SQl---DDL 结构定义 创建、删除 数据库 代码 运行 设计表 数据类型 整数 浮点数 主键 约束 主键自增长 默认值 字段注释 创建、删除 表 代码 运行 代码 代码 运行 SQL---DML 数据操纵 插入数据 代码 运行 代码 运行 代码 运行 代码 …...

【网络安全】2030年十大新兴网络安全威胁
欧盟网络安全局(ENISA)已发布了一份全面的清单,列出了预计到2030年将影响数字领域的十大新兴网络安全威胁。 该预测是为期八个月的广泛研究的成果,融合了ENISA前瞻专家小组、CSIRTs网络以及欧盟CyCLONe专家的见解。 这项研究突显…...

python数据分析-CO2排放分析
导入所需要的package import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import datetime %matplotlib inline plt.rcParams[font.sans-serif] [KaiTi] #中文 plt.rcParams[axes.unicode_minus] False #负号 数据清洗…...

2024宝藏工具EasyRecovery数据恢复软件免费版本下载
在这个数字化的时代,数据已经成为我们生活中的重中之重。无论是工作中的重要文件,还是手机中珍贵的照片,我们都依赖着这些数据。然而,数据丢失的情况时有发生,可能是误删,可能是设备故障,更可能…...
【EventSource错误解决方案】设置Proxy后SSE发送的数据只在最后接收到一次,并且数据被合并
【EventSource错误解决方案】设置Proxy后SSE发送的数据只在最后接收到一次,并且数据被合并 出错描述 出错原因与解决方案 出错描述 SSE前后端一切正常,但是fetchEventSource 的onmessage回调函数只在所有流都发送完毕后,才会执行一次。 前…...
如何在linux命令行(终端)执行ipynb 文件。可以不依赖jupyter
1.安装 runipy pip install runipy 2.终端运行 runipy <YourNotebookName>.ipynb 在终端命令行执行shell脚本,(也可以在crontab 中执行): (base) [recommendapp-0-5-B-006 script]$ cat run1.sh #!/bin/bashcd /home/recom…...

基于YOLOv8的车牌检测与识别(CCPD2020数据集)
前言 本篇博客主要记录在autodl服务器中基于yolov8实现车牌检测与识别,以下记录实现全过程~ yolov8源码:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite 一、环境配置 …...

驱动开发之新字符设备驱动开发
1.前言 register_chrdev 和 unregister_chrdev 这两个函数是老版本驱动使用的函数,现在新的 字符设备驱动已经不再使用这两个函数,而是使用 Linux 内核推荐的新字符设备驱动 API 函数。 旧版本的接口使用,感兴趣可以看下面这个博客&#…...
【JMU】21编译原理期末笔记
本拖延症晚期患者不知不觉已经有半年没写博客了,天天不知道在忙什么。 乘着期末周前赶紧先把编译原理上传了,我记得我这科是86分,有点小遗憾没上90,但是总体不错。 链接:https://pan.baidu.com/s/1gO8pT7paHv1lkM_ZpkI…...

就业信息|基于SprinBoot+vue的就业信息管理系统(源码+数据库+文档)
就业信息管理系统 目录 基于SprinBootvue的就业信息管理系统 一、前言 二、系统设计 三、系统功能设计 1前台功能模块 2后台功能模块 4.2.1管理员功能 4.2.2学生功能 4.2.3企业功能 4.2.4导师功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设…...

一.架构设计
架构采用 ddd 架构,不同于传统简单的三层的架构,其分层的思想对于大家日后都是很有好处的,会给大家的思想层级,提高很多。 传统的项目 现有的架构 采取ddd架构,给大家在复杂基础上简化保留精髓,一步步进行…...

<学习笔记>从零开始自学Python-之-实用库篇(一)-pyscript
由Anaconda创建的PyScript是一项实验性的但很有前途的新技术,它使python运转时在支撑WebAssembly的浏览器中作为一种脚本言语运用。 每个现代常用的浏览器现在都支撑WebAssembly,这是许多言语(如C、C和Rust)能够编译的高速运转时…...
Vue项目中npm run build 卡住不执行的几种情况(实战版)
方法一 一:比较常见是镜像导致的原因 我们可以找到build/check-versions文件 将这段代码注释,重新运行就可以解决这个问题 if (shell.which(npm)) {versionRequirements.push({name: npm,currentVersion: exec(npm --version),versionRequirement: packageConfig.en…...

《Python源码剖析》之pyc文件
前言 前面我们主要围绕pyObject和pyTypeObject聊完了python的内建对象部分,现在我们将开启新的篇章—python虚拟机,将聚焦在python的执行部分,搞懂从“代码”到“执行”的过程。开启新的篇章之前,你也许会有一个疑惑:我…...

Python零基础-中【详细】
接上篇继续: Python零基础-上【详细】-CSDN博客 目录 十、函数式编程 1、匿名函数lambda表达式 (1)匿名函数理解 (2)lambda表达式的基本格式 (3)lambda表达式的使用场景 (4&…...
回溯 leetcode
22. 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:["((()))","(()())","(())()","()(())"…...
Android firebase消息推送集成 FCM消息处理
FirebaseMessagingService 是 Firebase Cloud Messaging (FCM) 提供的一个服务,用于处理来自 Firebase 服务器的消息。它有几个关键的方法,你提到的 onMessageReceived、doRemoteMessage 和 handleIntent 各有不同的用途。下面逐一解释这些方法的作用和用…...

react中怎么为props设置默认值
在React中,你可以使用ES6的类属性(class properties)或者函数组件中的默认参数(default parameters)来定义props的默认值。 1.类组件中定义默认props 对于类组件,你可以在组件内部使用defaultProps属性来…...

企业如何做好 SQL 质量管理?
研发人员写 SQL 操作数据库想必一定是一类基础且常见的工作内容。如何避免 “问题” SQL 流转到生产环境,保证数据质量?这值得被研发/DBA/运维所重视。 什么是 SQL 问题? 对于研发人员来说,在日常工作中,大部分都需要…...

半年不在csdn写博客,总结一下这半年的学习经历,coderfun的一些碎碎念.
前言 自从自己建站一来,就不在csdn写博客了,但是后来自己的网站因为资金问题不能继续维护下去,所以便放弃了自建博客网站来写博客,等到以后找到稳定,打算满意的工作再来做自己的博客网站。此篇博客用来记录自己在csdn…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
js 设置3秒后执行
如何在JavaScript中延迟3秒执行操作 在JavaScript中,要设置一个操作在指定延迟后(例如3秒)执行,可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法,它接受两个参数: 要执行的函数&…...

使用VMware克隆功能快速搭建集群
自己搭建的虚拟机,后续不管是学习java还是大数据,都需要集群,java需要分布式的微服务,大数据Hadoop的计算集群,如果从头开始搭建虚拟机会比较费时费力,这里分享一下如何使用克隆功能快速搭建一个集群 先把…...
软件工程教学评价
王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中,您通过丰富的实例,将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻,让这些理论不再是停留在纸面的名词,而是可以指导…...

Spring AI中使用ChatMemory实现会话记忆功能
文章目录 1、需求2、ChatMemory中消息的存储位置3、实现步骤1、引入依赖2、配置Spring AI3、配置chatmemory4、java层传递conversaionId 4、验证5、完整代码6、参考文档 1、需求 我们知道大型语言模型 (LLM) 是无状态的,这就意味着他们不会保…...
从0开始一篇文章学习Nginx
Nginx服务 HTTP介绍 ## HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 ## HTTP工作在 TCP/IP协议体系中的TCP协议上&#…...