您的位置:首页 > 娱乐 > 明星 > 厦门seo排名优化_企业信用公示信息网官网贵州_网站流量排名查询工具_百度云资源搜索引擎入口

厦门seo排名优化_企业信用公示信息网官网贵州_网站流量排名查询工具_百度云资源搜索引擎入口

2025/3/10 15:25:51 来源:https://blog.csdn.net/lymdcsdn/article/details/146091349  浏览:    关键词:厦门seo排名优化_企业信用公示信息网官网贵州_网站流量排名查询工具_百度云资源搜索引擎入口
厦门seo排名优化_企业信用公示信息网官网贵州_网站流量排名查询工具_百度云资源搜索引擎入口

网络编程 day05

  • 12. SQL 数据库
    • 概念
    • 常用数据库
      • MySQL与SQLite的区别
    • SQL基础
    • SQL语句使用
      • 基本语句的使用—命令行操作
        • sqlite3系统命令
        • sqlite命令
      • sqlite3编程—函数接口
  • 13. setsockopt:设置套接字属性

12. SQL 数据库

概念

 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
 数据库是存放数据的仓库。它的存储空间很大。以一定规则进行存放。

常用数据库

大型数据库 :Oracle
中型数据库 :Server是微软开发的数据库产品,主要支持windows平台
小型数据库 : MySQL是一个小型关系型数据库管理系统。开放源码 (嵌入式不需要存储太多数据)

MySQL与SQLite的区别

  1. 性能和规模:
     MySQL通常用于大型应用程序和网站,用来处理大量数据和高并发访问。
     SQLite适合于小型应用程序或移动设备,它是一个轻量级的数据库引擎,不需要独立的服务器进程,可以直接访问本地文件。
  2. 部署和配置:
     MySQL需要单独的服务器进程来运行,需要配置和管理数据库服务器。
     SQLite是一个嵌入式数据库,可以直接嵌入到应用程序中,不需要单独的服务器进程。
  3. 功能和特性:
      MySQL提供了更多的功能和高级特性,比如存储过程、触发器、复制和集群支持等。
     SQLite则是一个轻量级的数据库引擎,功能相对较少,但对于简单的数据存储和检索已经足够。
  4. 跨平台支持:
     SQLite在各种操作系统上都能够运行
     MySQL需要在特定的操作系统上安装和配置数据库服务器。
  5. 总结:
      MySQL适用于大型应用程序和网站,需要处理大量数据和高并发访问。
     SQLite适用于小型应用程序或移动设备,对性能和规模要求没有那么高。

SQL基础

SQL特性:

  1. 无需安装和管理配置
  2. 储存在单一磁盘文件中的一个完整的数据库
  3. 数据库文件可以在不同字节顺序的机器间自由共享
  4. 支持数据库大小至2TB(1024G = 1TB)
  5. 全部源码大致3万行c代码,250KB
  6. 比目前流行的大多数数据库对数据的操作要快

SQL语句使用

基本语句的使用—命令行操作

sqlite3系统命令

以”.“开头

  1. .help  // 查看所有支持的命令
  2. .quit  // 退出
  3. .tables  // 查看数据库中的表
  4. .schema listname  // 查看表的表头
sqlite命令

以“;”结尾

  1. 创建表
    create table <表名>(表头 数据类型,表头 数据类型……);
     1. 先写变量名,后写数据类型
     2. char 既可以表示字符,又可以表示字符串
     3. 设置主键:数据类型后面加上primary key
  2. 删除表
    drop table <表名>;
  3. 向表中插入数据
    insert into <表名> values(value1, value2……);
     1. 只插入部分字段:insert into <表名>(表头1) values(value1);
  4. 查找数据
     1. 查询表中所有数据:select * from <表名>;
      *表示查询到的内容显示全部的表头
     2. 按照条件查询:select * from <表名> where <条件>;
      1. 多个条件:条件1 and 条件2……条件1 or 条件2……
      2. 字符串作为条件:name = "xiaoming"
     3. 满足条件的列:select <某列的表头> from <表名> where <条件>;
      1. 多个列:<列1,列2……>
     4. 查询前n条记录:select * from <表名> limit n;
     5. 按照某列从大到小排序:select * from <表名> order by <表头> desc;
  5. 更新(修改)数据
    update <表名> set <修改内容1>,<修改内容2>,……where <条件>;
     修改内容:表头 = 内容
  6. 增加字段,增加一列
    alter table <表名> add column <变量名> <数据类型> default <默认值>;
  7. 删除字段,数据库不支持删除一个字段,删除是伪删除
     1. 创建一个新表,从旧表中将需要保留的字段复制到新表中
      create table <表名> as select <另一个表的表头>,<另一个表的表头>…… from <另一个表>;
     2. 删除原来的表
     3. 将新表重命名成旧表
      alter table <旧名> rename to <新名>;
  8. 删除一行
    delete from <表名> where <条件>;

sqlite3编程—函数接口

头文件

#include <selite3.h>

静态库编译方式

gcc sqlite.c -lsqlite3

官方手册

  1. 打开数据库
int splite3_open(char *path, sqlite3 **db);

功能:打开数据库
参数:
char *path:数据库文件路径
sqlite3 **db:数据库文件的句柄(相当于文件描述符)
返回值:成功返回SQLITE_OK(0),失败返回错误码
补充:句柄定义成一级指针,使用时传指针的地址

  1. 返回错误信息
char *sqlite3_errmsg(sqllite3 *db);

功能:获取错误信息
参数:sqlite3 **db:数据库文件的句柄
返回值:返回错误信息
函数的使用:

fprintf(stderr, "errmsg:%s\n", sqlite3_errmsg(db));
  1. 关闭数据库
int sqlite3_close(sqlite3 *db);

功能:关闭sqlite数据库
参数:sqlite3 **db:数据库文件的句柄
返回值:成功返回SQLITE_OK(0),失败返回错误码

  1. SQL语句
int sqlite3_exec(sqlite3 *db,const char *sql,int (*callback)(void*,int,char**,char**),void *arg,char **errmsg);

功能:执行SQL操作
参数:
sqlite3 **db:数据库文件的句柄
const char *sql:要执行的SQL命令,以字符串的形式
int (*callback)(void*,int,char**,char**):回调函数
void *arg:传递给回调函数的参数
char **errmsg错误信息指针的地址
返回值:成功返回SQLITE_OK(0),失败返回错误码
回调函数:

int callback(void *buf, int num, char **value, char **name)
{static int i = 0;if(i == 0){for(int j = 0; j < num; j++)printf("%s ", name[j]);putchar(10);}for(int j = 0; j < num; j++)printf("%S ", value[j]);putchar(10);
}

功能:select函数每次找到一个符合条件的记录就自动调用一次回调函数
参数:
void *bufsqlite3_exec()的第4个参数传递
int num:打印的列数
char **value:找到符合条件的数据,传递指针的地址
char **name:需要的表头,传递指针的地址
返回值:成功返回SQLITE_OK(0),失败返回-1,只有每次都饭hi0才会继续下一次回调

  1. 查询函数
int sqlite3_get_table(sqlite3 *db, const  char  *sql, char ***resultp,  int *nrow,  int *ncolumn, char **errmsg);

功能:执行SQL的查询操作
参数:
sqlite3 **db:数据库文件的句柄
const char *sql:要执行的SQL的查询命令,以字符串的形式
char ***resultp:用来存放查询的结果,包含表头,二级指针地址传递
int *nrow:存放查询到的行数,不包含表头,变量地址传递
int *ncolumn:存放查询到的列数,变量地址传递
char **errmsg:错误信息,一级指针地址传递
返回值:成功返回SQLITE_OK(0),失败返回错误码

  1. SQL命令的输入过程
char sql[256] = {};
char ch[128] = {};
int in = -1;
for(int i = 0; i < num;i++)
{sacnf(%s %d, ch, &in);sprintf(sql, "insert into stu values(%d, '%s')", in. ch);sqlite3_exec(db, sql, NULL, NULL.&errmsg);
}

13. setsockopt:设置套接字属性

int setsockopt(int sockfd,int level,int optname,void *optval,socklen_t optlen);

功能:设套接字属性
参数:
int sockfd:套接字的文件描述符
int level:协议层
int optname:选项名
void *optval:选项值
socklen_t optlen:选项值大小,int类型:允许1,不允许0
返回值:成功返回0,失败返回-1
SOL_SOCKET 应用层

选项名称说明数据类型
SO_BROADCAST允许发送广播数据int
SO_DEBUG允许调试int
SO_DONTROUTE不查找路由int
SO_ERROR获得套接字错误int
SO_KEEPALIVE保持连接int
SO_LINGER延迟关闭连接struct linger
SO_OOBINLINE带外数据放入正常数据流int
SO_RCVBUF接收缓冲区大小int
SO_SNDBUF发送缓冲区大小int
SO_RCVLOWAT接收缓冲区下限int
SO_SNDLOWAT发送缓冲区下限int
SO_RCVTIMEO接收超时struct timeval
SO_SNDTIMEO发送超时struct timeval
SO_REUSEADDR允许重用本地地址和端口int
SO_TYPE获得套接字类型int
SO_BSDCOMPAT与BSD系统兼容int

IPPROTO_IP IP层/网络层

选项名称说明数据类型
IP_HDRINCL在数据包中包含IP首部int
IP_OPTINOSIP首部选项int
IP_TOS服务类型int
IP_TTL生存时间int
IP_ADD_MEMBERSHIP将指定的IP加入多播组struct ip_mreq

IPPRO_TCP 传输层

选项名称说明数据类型
TCP_MAXSEGTCP最大数据段的大小int
TCP_NODELAY不使用Nagle算法int

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com