0x10 网络编程与数据库
1. TCP/IP 模型
- 应用层: 用于提供常见的网络应用服务
- FTP、POP3、SMTP、HTTP(S)、DHCP、DNS
- 应用层: 用于提供常见的网络应用服务
- 传输层:提供端口到端口之间的通信功能
- TCP(传输控制协议)、UDP(用户数据包协议)
- 传输层:提供端口到端口之间的通信功能
- 网络互连层:用于在IP主机和路由间传输信息
- IP、ICMP、ARP
- 网络互连层:用于在IP主机和路由间传输信息
- 网络接口层:用于将数据从一个设备传输到另一个设备
- SLIP、PPP
- 网络接口层:用于将数据从一个设备传输到另一个设备
2. 网络编程
- 网络编程基础
- 在Windows中,无论使用何种方式进行网络编程,第一个调用的函数始终是WSAStartup()
- 套接字分为三种,分别是流式套接字(TCP),数据报套接字(UDP),原始套接字(RAW)
- 在网络传输中,通常使用的是大端模式,可以通过 htonX(l\h) 函数将主机序(小端)转为网络序(大端)
- 0x00 00 00 01 -> 服务器 0x01 00 00 00
- 什么是TCP?
- TCP是一种面向连接的、可靠的的传输层通信协议。
- 客户端不需要绑定端口设置接听,需要使用connect连接目标服务器
- 什么是UDP?
- UDP是一种面向无连接的、不可靠的传输层通信协议
- 因为UDP传输基于无连接,所以没有等待连接和连接的部分
| TCP 连接流程 | UDP 连接流程 |
| —- | —- |
| TCP是一种面向连接的、可靠的的传输层通信协议 | UDP是一种面向无连接的、不可靠的传输层通信协议 |
|
|
|
3. SQL语法
SQL约束
- 主键(PRIMARY KEY): 唯一标识数据库表中的每条记录,通常有且只能有一个。
- 外键(FOREIGN KEY):一个表中的外键通常绑定到另一个表的主键,可以有多个。
- 唯一(UNIQUE): 规定该字段的数据是唯一的,可以有多个。
- 非空(NOT NULL): 规定该字段不能为NULL,可以有多个。
- 默认(DEFAULT):指定当不设置数据时的默认值,可以有多个。
- 检查(CHECK): 用于检查设置的值是否合理,可以有多个。
数据库指令 ```cpp
创建一个不存在的数据库并指定编码
CREATE DATABASE IF NOT EXISTS test;
删除一个已存在的数据库
DROP DATABASE IF EXISTS test;
显示所有的数据库
SHOW DATABASES;
- **表操作指令**
```cpp
# 创建一个表
Create table 表名
(
Id int primary key, #主键约束
Name varchar(20) unique, #唯一约束
Age int not null, #非空约束
Sex varchar(5) check(Sex=’男’ or Sex=’女’), #检查约束
Ethnic varchar(5) default ’汉’ #默认约束
);
# 显示所有表
SHOW TABLES;
# 删除一张表
DROP TABLE name;
# 修改列名以及属性名
ALTER TABLE table4 CHANGE name2 char(20);
# 删除一个已存在的列
ALTER TABLE table4 DROP name3;
向表中添加多列数据
INSERT INTO name(column1, column2) VALUES (1,2),(3,4);
更新表中指定字段的所有数据
UPDATE name SET column = xxx;
更新表中满足条件的指定字段
UPDATE name SET column = xxx [WHERE];
删除表中的指定列
DELETE FROM 表名 [WHERE];
删除表中所有数据
delete from 表名;
- **查询数据**
```cpp
# 查询表中的所有记录
SELECT * FROM 表名;
# 查找指定字段
SELECT 字段名 FROM 表名;
# 条件查询
# 常见的比较运算符有: > < <= >= = <>
# 可以使用 and or not 组成多个条件的判断
SELECT 字段名 FROM 表名 WHERE 字段名 = ?;
# 模糊查询: % 匹配任意长度字符
select * from 表明 where name like '1%2'
# 模糊查询: _ 匹配任意一个字符
select * from 表明 where name like '_M_'