1.20号网络

数据库基本概念

能够输入计算机并能被计算机程序识别和处理的信息集合数据库 (Database)

数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合

常用的数据库

1)大型数据库Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率名列前茅。IBM 的DB2是第一个具备网上功能的多媒体关系数据库管理系统,支持包Linux在内的一系列平台。中型数据库Server是微软开发的数据库产品,主要支持windows平台。

2)小型数据库mySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司,2008年被Sun公司收购,开放源码。

3)基于嵌入式的数据库

基于嵌入式Linux的数据库主要有SQLite, Firebird, Berkeley DB, eXtremeDBFirebird是关系型数据库,功能强大,支持存储过程、SQL兼容等SQLite关系型数据库,体积小,支持ACID事务Berkeley DB中并没有数据库服务器的概念,它的程序库直接链接到应用程序中 eXtremeDB是内存数据库,运行效率高

sqlite3命令语句

sqlite数据库创建

sqlite3   xxxxx.db

如果sq.db存在则直接打开sq.db数据库,如果不存在则先创建再打开;

系统命令

系统命令,需要以 . 开头,不需要以 ; 结尾

.quit 退出数据库

.exit 退出数据库

.help 显示帮助信息,获取所有系统命令; ​

.table 查看当前数据库下的所有表格;

.schema 查看表的结构

sql语句

以分号(;)结尾;不区分大小写;

没有char*类型,用char类型代替

记录:是某一行信息

字段:某一列信息

创建表格

create table 表名 (字段名 数据类型, 字段名 数据类型);

create table if not exists 表名 (字段名 数据类型, 字段名 数据类型); ​

eg: CREATE TABLE stu (id int, name char, score float);

CREATE TABLE if not exists stu1 (id int, name char, score float); ​

注意:数据库不支持严格的数据类型检查,数据类型写错了,创建是能够成功的,不会有错误提示;

删除表格

drop table 表名; ​

eg: drop table stu1;

插入记录

字符串类型可以使用单引号,也可以使用双引号 ​

1) 全字段插入 insert into 表名 values (数据1, 数据2, 数据3);

eg: INSERT INTO stu VALUES (2, 'ls', 99);

INSERT INTO stu VALUES (1, "zs", 59);

注意: 1.数据输入的顺序要与创建时候字段的顺序一致;

2) 部分字段插入 insert into 表名 (字段名1, 字段名2) values (数据1, 数据2);

eg: INSERT INTO stu (id, name) values (9, 'ww');

注意: 1.数据的顺序要与指定的字段名1,字段名2对应;

查看记录

1) 查看所有记录
    select * from 表名;
    eg:
        SELECT * FROM stu;
        
2) 查看某几行
    select * from 表名 where 限制条件;
    逻辑与 and     逻辑或 or
    eg:
        SELECT * FROM stu WHERE id<3 AND score>90;
        SELECT * FROM stu WHERE id<2 OR id>3;
    
3) 查看某几列
    select 字段1, 字段2 from 表名;
    select 字段1, 字段2 from 表名 where 限制条件;
    eg:
        SELECT id, name FROM stu;
        SELECT id, name FROM stu WHERE score>90;

修改记录

update 表名 set 字段=数值 where 限制条件;

eg:
    UPDATE stu SET score=60 WHERE id=1;
注意:该语句中的where表明去修改指定的记录,如果没有加where,则表明将所有记录的该值都更新

删除记录

delete from 表名 where 限制条件;

eg:
    DELETE FROM stu WHERE id=1;
    delete from stu;    删除表格中的所有数据;

主键(primary key)

primary key 主键;
create table 表名(字段名 数据类型 primary key, 字段名 数据类型 );
primary key主键:唯一标识表格中的每一条记录;
            例如:id字段为主键,当表格中有id==1的记录时,不允许再插入id为1的记录了;
eg:
    CREATE TABLE stu (id int PRIMARY KEY, name char, score float);

注意:主键的值必须唯一。每一张表格都应该设置一个主键,而且只能设置一个。

拷贝

从a中拷贝所有数据到b中:
    create table b as select * from a;
从a中拷贝指定字段到b中:
    create table b as select 字段,字段,字段 from a;

 CREATE TABLE stu1 AS SELECT * FROM stu;
 CREATE TABLE stu2 AS SELECT id, name, score FROM stu;

增加列

alter table 表名 add column 字段名 数据类型;
alter table stu add column score int;

修改表名

alter table 旧表名 rename to 新表名;

alter table stu rename to stuinfo;

修改字段名(列名)

不支持直接修改列名
1.将表重新命名(a改成b)
    alter table stuinfo rename to stu;
2.新建修改名字后的表(新建一个a)
    create table stuinfo (name char, age1 int, sex char, score int);
3.从旧表b中取出数据,插入到新表a中;
    insert into stuinfo select * from stu;

删除列

不支持直接删除列;
1.创建一个新表b,并复制旧表a需要保留的字段信息;
    create table stu as select name, age1, sex from stuinfo;
2.删除旧表a;
    drop table stuinfo;
3.修改新表b的名字a;
    alter table stu rename to stuinfo;

sqlite3 API

头文件: #include <sqlite3.h>

编译时候要加上-lsqlite3

gcc a.c -lsqlite3

sqlite3_open

int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */ 
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);
功能:打开一个数据库,如果数据库不存在,则创建一个数据库
参数1:要打开的数据库的名字,是一个字符串
参数2:数据库操作句柄,是一个二级指针,需要我们传入一级指针的地址,如果打开数据库成功,则数据库指针由该参数返回
返回值:成功返回SQLITE_OK,失败返回一个错误码(非linux的错误码),可以使用sqlite_errmsg来获取错误信息,由sqlite3_errcode返回错误码值
注意:无论打开数据库是否成功,在不使用数据库时都应该使用sqlite3_close将其关闭

sqlite3_close

int sqlite3_close(sqlite3*);

功能:关闭数据库,断开句柄所拥有的资源

参数:数据库指针

返回值:成功返回SQLITE_OK,失败返回其他错误码

sqlite3_errmsg

const char *sqlite3_errmsg(sqlite3*);

功能:通过出错的句柄返回错误信息

参数:出错的句柄

返回值:对应的错误信息,是一个字符串

sqlite3_errcode

int sqlite3_errcode(sqlite3 *db)

功能:通过错误句柄返回错误码

参数:错误句柄

返回值:错误码

sqlite3_exec

int sqlite3_exec(
  sqlite3* db,                                  /* An open database */
  const char *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void *arg,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);
功能:调用该函数,执行sql语句
参数1:已经被打开的数据库句柄
参数2:要执行的sql语句
参数3:回调函数,主要用于数据库查找时,处理查找的结果集的函数,如果不需要处理sql语句的结果,则填NULL即可
参数4:参数3的第一个参数
参数5:错误信息
返回值:成功返回SQLITE_OK,失败返回其他错误码

回调函数

int callback(void* arg,int cols,char** value_text,char** value_name)
功能:对执行sql语句后的每一条记录,执行该函数,函数功能可以由用户自定义
参数1:主调函数传递的参数,就是sqlite3_exec的第四个参数,该参数可以用于主调函数和回调函数之间数据交流
参数2:记录查询结果的列的个数
参数3:查询结果数据的起始地址
参数4:查询结果的表头的起始地址
返回值:成功返回0,失败返回错误码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据处理,Pandas与SQL高效读写大型数据集

大家好&#xff0c;使用Pandas和SQL高效地从数据库中读取、处理和写入大型数据集&#xff0c;以实现最佳性能和内存管理&#xff0c;这是十分重要的。 处理大型数据集往往是一项挑战&#xff0c;特别是在涉及到从数据库读取和写入数据时。将整个数据集加载到内存中的传统方法可…

opencv#33 边缘检测

边缘检测原理 图像的每一行每一列都可以看成是一个连续的信号经过离散后得到的数值&#xff0c;例如上图左侧给出的图像由黑色到白色的一个信号&#xff0c;也就是图像中某一行像素变化是由黑色逐渐到白色&#xff0c;我们将其对应在一个坐标轴中&#xff0c;将像素值的大小对应…

Pytorch线性代数

1、加法运算 A torch.arange(20, dtypetorch.float32).reshape(5, 4) B A.clone() # 通过分配新内存&#xff0c;将A的一个副本分配给B A, A B# tensor([[ 0., 1., 2., 3.], # [ 4., 5., 6., 7.], # [ 8., 9., 10., 11.], # [12., 13.,…

Linux系统创建并自动启用交换文件

在Linux系统中&#xff0c;交换空间&#xff08;Swap Space&#xff09;被用作当物理内存&#xff08;RAM&#xff09;不足时的额外内存。尽管现代计算机通常配备有大量的RAM&#xff0c;但在某些情况下&#xff0c;如运行内存密集型应用或程序时&#xff0c;交换空间仍然非常有…

鼠标移入/点击子组件,获取选中子组件事件

不管是移入&#xff0c;或者是点击事件 都要知道是触发的哪个组件 这里子组件是个通用小标题title 所以&#xff0c;通过标题内容&#xff0c;获取触发的哪个子组件子组件 <template><div mouseover"tMouseover" mouseleave"tMouseLeave" class&…

[AIGC大数据基础] Spark 入门

大数据处理已成为当代数据领域的重要课题之一。为了高效地处理和分析大规模数据集&#xff0c;许多大数据处理引擎应运而生。其中&#xff0c;Spark作为一个快速、通用的大数据处理引擎备受关注。 本文将从“是什么、怎么用、为什么用”三个角度来介绍Spark。首先&#xff0c;我…

【Flutter跨平台插件开发】如何实现kotlin跟C++的相互调用

【Flutter跨平台插件开发】如何实现kotlin跟C的相互调用 kotlin 调 c 在 Kotlin 中&#xff0c;可以使用 JNI (Java Native Interface) 来调用 C 代码 调用步骤: 创建 C 文件并实现函数。 // example.cpp #include <jni.h>extern "C" JNIEXPORT jstring J…

SQL 系列教程(二)

目录 SQL DELETE 语句 DELETE 语句 演示数据库 DELETE 实例 删除所有行 SQL TOP, LIMIT, ROWNUM 子句 TOP 子句 演示数据库 SQL TOP、LIMIT 和 ROWNUM 示例 SQL TOP PERCENT 实例 添加WHERE子句 SQL MIN() 和 MAX() 函数 MIN() 和 MAX() 函数 演示数据库 MIN() …

spring eureka集群相关问题

一、集群节点信息如何更新&#xff1f; EurekaServer节点启动的时候&#xff0c;DefaultEurekaServerContext.init()方法调用PeerEurekaNodes.start()方法&#xff0c;start方法中resolvePeerUrls()会从配置文件读取serviceUrl属性值获得集群最新节点信息&#xff0c;通过upda…

电池回收产业东风中,吉利科技集团如何先行一步?

随着绿色低碳可持续发展理念深入人心&#xff0c;全球能源变革和转型升级持续推进&#xff0c;新能源行业不断涌现新的机遇。 动力电池回收和再利用&#xff0c;就是近在眼前的“红利型”产业。 我国新能源汽车市场近年来爆发式增长&#xff0c;动力电池生产紧随电动车普及步…

【代码管理】TortoiseGit 图标没有显示

当TortoiseGit在Windows系统中没有正确显示文件和目录的图标状态时&#xff0c;可能的原因和解决方法如下&#xff1a; 原因与解决方案&#xff1a; TortoiseGit未集成到资源管理器&#xff1a; 请确保TortoiseGit已正确安装&#xff0c;并在安装过程中选择了“将TortoiseGit集…

C++区间覆盖(贪心算法)

假设有n个区间&#xff0c;分别是&#xff1a;[l1,r1], [l2,r2], [l3,r3].....[ln,rn] 从这n个区间中选出某些区间&#xff0c;要求这些区间满足两两不相交&#xff0c;最多能选出多少个区间呢&#xff1f; 基本思路&#xff1a; 按照右端点从小到大排序&#xff0c;再比较左端…

深度学习中RGB影像图的直方图均衡化python代码and对图片中指定部分做基于掩模的特定区域直方图均衡化

深度学习很重要的预处理步骤 就是需要对做直方图均衡化 其中主要分成灰度图以及RGB图的直方图均衡化 这俩的方法和代码不同 想要去看具体原理的朋友可以查看下面这篇博客的内容 写的很详细颜色直方图均衡化(https://www.cnblogs.com/wancy/p/17668345.html) 我们这个场景中会用…

【RT-DETR有效改进】FasterNet一种跑起来的主干网络( 提高FPS和检测效率)

前言 大家好&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持ResNet32、ResNet101和PP…

Google murmur3 hashString用法

如下为将String获取hashcode&#xff0c;转为Long的方法&#xff0c;主要是在海量数据的flink程序里&#xff0c;为了节省状态的存储空间&#xff0c;所以尝试用long来存储。 同样的还可以hash其他格式的数据。 评估了下&#xff0c;murmur3最高用的是128位的hash值&#xff…

圈子论坛社交实名制系统---H5小程序APP,三端源码交付,允许二开!PHP系统uni书写!

圈子系统是一种社会化网络平台&#xff0c;它的核心是以用户为中心&#xff0c;围绕用户的兴趣、爱好、经历和职业等因素&#xff0c;将具有相同特质的个体聚集起来&#xff0c;形成具有共同话题和兴趣的社交圈子。这样的系统旨在帮助用户拓宽社交范围&#xff0c;提升社交效率…

uniapp+vue开发微信小程序,image标签图片IOS可以正常回显,安卓回显不出

仅代表个人遇到的问题&#xff0c;仅代表个人遇到的问题&#xff0c;仅代表个人遇到的问题&#xff0c; 1.先说最快的解决方案&#xff0c;直接在src下面额外添加一段url&#xff0c;https://images.weserv.nl/?url&#xff0c; <imagestyle"width: 180rpx; height: 2…

封装 element el-date-picker时间选择区间

基于el-date-picker 处理满足项目需求。&#xff08;&#xff1a;最多选择7天&#xff09; 效果&#xff1a; 1 大于当前时间的以后日期禁选。2 选中时间的前后七天可选 &#xff08;最多可查询7天数据&#xff09;3 <template><section class"warning-contai…

FPGA硬件架构——具体型号是xc7k325tffg676-2为例

1.共如下图14个时钟域&#xff0c;XmYn(按坐标理解) 2.IOB(IOB为可编程输入输出单元,当然在普通Bank上的IOB附近还有很多时钟资源&#xff0c;例如PLL&#xff0c;MMCM资源。), 2.1 FPGA的Bank分为HP Bank和HR Bank&#xff0c;二者对电压的要求范围不同&#xff0c;HR支持更大…

Spark 的宽依赖和窄依赖

Apache Spark 中的依赖关系指的是转换操作&#xff08;transformations&#xff09;之间的依赖类型。这些依赖关系决定了任务是如何在集群上分布执行的。依赖关系分为两类&#xff1a;宽依赖&#xff08;Wide Dependency&#xff09;和窄依赖&#xff08;Narrow Dependency&…