SQLite常用命令

==========================SQLite常用命令======================================
1、查找帮助命令									.help
2、退出SQLite命令								.q 	.quit	.exit
3、显示各种设置的当前值					.show
4、查看表的create模式						.schema		.schema name
5、显示当前打开的数据库文件			.database
6、显示数据库中所有的表名				.tables
7、创建或者打开一个数据库				sqlite3 xxx.db1、创建新表
create table 表名(id integer ,name text,passwd integer);-->未指定类型默认字符串,字符串添加新纪录时用""2、删除表
drop table 表名3、查询表中记录
select * from 表名 	------> 所有记录
select * from 表名 where id<2;5、向表中添加新纪录
insert into 表名 values(1,"zhangsan",123);
insert into 表名(id ,name ,passwd) values(1,"zhangsan",123);6、按指定条件删除表中的记录
delete from 表名 where id=1;7、更新表中记录
update 表名 set name="xiaoming",passwd=555 where id=1;8、在表中添加字段()
alter table 表名 add column age integer;==========================sqlite3_open函数=================================**************** open和close()  *******************************
int sqlite3_open(const char *fileName, sqlite3 **ppDB); 
int sqlite3_close(sqlite3 *pDB);
fileName	--->待打开的数据库文件名称,包括路径,以’\0’结尾特别说明:SQLite支持内存数据库,内存方式存储使用文件名":memory:" 
ppDB			--->返回打开的数据库句柄
返回值		执行成功返回SQLITE_OK(0),否则返回其他值
功能sqlite3_open()打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。如果 filename 参数是 NULL':memory:',将会在 RAM 中创建一个内存数据库,	这只会在 session 的有效时间内持续。否则将打开或创建该名称的数据库文件。sqlite3_close()关闭一个打开的数据库,对象被成功地销毁,并且所有相关的资源都被解除分配。
注意 sqlite3_open()将参数filename视为UTF-8编码const char *sqlite3_errmsg(sqlite3 *pDB);
功能获取最近调用的API接口返回的错误说明,这些错误信息UTF-8的编码返回并且在下一次调用任何SQLiteAPI函数时被自动清除		
返回值错误说明的字符串指针************************* sqlite3_exec() *****************************
int sqlite3_exec(sqlite3 *ppDB,constchar *sql,sqlite_callback callback,void *para,char **errMsg);
ppDB			--->打开的数据库句柄,sqlite3_open的返回值
sql			--->待执行的SQL语句字符串,'\0'结尾
callback	--->回调函数,用来处理查询结果,如果不需要回调(比如做insert或者delete操作时)可输入NULL,一般select使用
para			--->用户传入的参数,可以为NULL,该参数指针最终会被传给回调函数callback,供用户在回调函数中使用
errMsg		--->返回错误信息,注意是指针的指针printf(%s/n”,errMsg)得到一串字符串信息,这串信息告诉你错在什么地方-----------------------------回调函数用法()-------------------------------------
typedef int(*sqlite_callback)(void*para,int columnCount,char **columnValue,char **columnName);
para					--->是你在 sqlite3_exec 里传入的 void * 参数
columnCount	--->是这一条记录有多少个字段 (即这条记录有多少列)
columnValue	--->是个关键值,查出来的数据都保存在这里,它实际上是个1维数组(不要以为是2维数组)每一个元素都是一个 char * 值,是一个字段内容(用字符串来表示,以\0结尾)
columnName		--->跟 column_value是对应的,表示这个字段的字段名称
一般有以下写法
sqlite3_exec(ppDb,"select * from mytable;",show_message,NULL,&errMsg);
show_message(void*para,int columnCount,char **columnValue,char **columnName)
for( i = 0 ; i < columnCount; i ++ )
{printf("字段名:%s , 字段值:%s\n",  columnName[i], columnValue[i] );
}		return 0;   //一定要有
-----------------------------------------------------------------------------
返回值
执行成功返回SQLITE_OK,否则返回其他值。
功能
当回调函数不为 NULL, 则它对每一个行查询结果都会调用该回调函数;如果没有回调函数被指定, 
sqlite3_exec() 只是简单地忽略查询结果。如果回调函数返回非零,sqlite3_exec() 立即中断查询,
并且不再执行后续的 SQL 语句,也不再调用回调函数, sqlite3_exec() 将返回 SQLITE_ABORT 结束执行。 
当发生错误时, 执行将中断。如果 errmsg 参数不为空,错误信息将会被写入(errmsg 由 sqlite3_malloc() 分配内存空间,
由sqlite3_free() 释放该内存空间)。如果 errmsg 参数不为 NULL, 并且没有错误发生, errmsg 被设置为 NULL。 
通常情况下callback在select操作中会使用到,如果不需要回调函数。第三第四个参数设为NULL。	注意
此接口是一个对sqlite3_prepare_v2, sqlite3_step, sqlite3_finalize接口的便捷封装
以便应用程序可以用少量的代码来运行多条SQL语句。
sqlite3_free(errmsg);************sqlite3_get_table()********
int sqlite3_get_table(sqlite3 *db,const char *zSql,char ***pazResult,int *pnRow,int *pnColumn,char **pzErrmsg);
void sqlite3_free_table(char **result);参数db			--->打开的数据库句柄,sqlite3_open的返回值zSql		--->sql语句,跟sqlite3_exec 里的sql 是一样的。是一个很普通的以\0结尾的char*字符串pazResult	--->查询结果,它依然一维数组(不要以为是二维数组,更不要以为是三维数组)。它内存布局是:第一行是字段名称,后面是紧接着是每个字段的值pnRow		--->查询出多少条记录(即查出多少行,不包括字段名那行)pnColumn	--->多少个字段(多少列)pzErrmsg	--->错误信息,跟前面一样result		--->释放pazResult指向的那块内存返回值执行成功返回SQLITE_OK,否则返回其他值功能不使用回调查询数据库获取表的信息		========字段类型=======================integer 				--->整数,可以是123468个字节,SQLite会根据数值大小自动调整。real 					--->实数(浮点数),一律使用8个字节存储text 					--->文本,最大支持长度为1,000,000,000个字符的单个字符串blob 					--->二进制对象,最大支持长度为1,000,000,000个字节null 					--->没有值char(size)  		--->固定长度的字符串,size规定字符串的长度varchar(size) 	--->可变长度的字符串,size规定字符串的最大字符个数=========约束==========================
约束是用来限制插入到表中的数据类型。确保数据库中数据的准确性和可靠性。
约束可以是列级或表级。列级约束仅适用于列,表级约束被应用到整个表。
以下是在 SQLite 中常用的约束。NOT NULL 约束		--->确保某列不能有 NULL 值。DEFAULT 约束		--->当某列没有指定值时,为该列提供默认值。UNIQUE 约束			--->确保某列中的所有值是不同的,不可重复。PRIMARY KEY约束	--->(主键)唯一标识数据库表中的各行/记录,不可为空,不可重复。CHECK 约束			--->用于限制列中值的范围,(CHECK score >=0 and score <= 100)
主键和unique字段的区别:A、 主键不可为null(如果为null系统为自动递增),unique字段可以是nullB、 一个表有且只有一个主键,但可以有0个或多个unique字段C、 逻辑设计上,主键用以标识记录,而unique字段就是说明不重复一言以蔽之:primary key  = unique + not nullNOT NULL 约束
默认情况下,列可以保存 NULL 值。如果您不想某列有 NULL 值,那么需要在该列上定义此约束,指定在该列上不允许 NULL 值。
NULL 与没有数据是不一样的,它代表着未知的数据。

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

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

相关文章

麒麟V10+飞腾处理器源码编译qt

1.下载qt源码 2.百度解压命令,进行解压 3.cd进文件目录 4.使用./configure命令进行配置(重点:记得看说明) Usage: configure [-h] [-prefix <dir>] [-prefix-install] [-bindir <dir>] [-libdir <dir>][-docdir <dir>] [-headerdir <dir&g…

sqli-labs-master靶场训练笔记(38-53|boss战)

2024.2.4 level-38 &#xff08;堆叠注入&#xff09; 这题乍一看感觉又是来卖萌的&#xff0c;这不是和level-1一模一样吗 然后仔细看了一下源代码&#xff0c;根据 mysqli_multi_query 猜测这题的本意应该是堆叠注入 mysqli_multi_query() 是 PHP 中用于执行多个 SQL 查…

【学习笔记】【内核】container_of 的用法

根据结构体变量成员的指针获取整个结构体的指针 #include <stdio.h> …

品牌如何营造生活感氛围?媒介盒子分享

「生活感」简而言之是指人们对生活的感受和意义&#xff0c;它往往没有充斥在各种重要的场合和事件中&#xff0c;而是更隐藏在细碎平凡的生活场景中。在营销越来越同质化的当下&#xff0c;品牌应该如何打破常规模式&#xff0c;洞察消费情绪&#xff0c;找到更能打动消费者心…

2023:AI疯狂进化年

嘿&#xff0c;大家好&#xff01;让我们一起来回顾一下这疯狂的 2023 年吧&#xff01;记得那个二月初吗&#xff1f;ChatGPT 上线了&#xff0c;然后呢&#xff1f;短短两个月&#xff0c;用户数量就像火箭一样突破了 1 亿&#xff01;这速度&#xff0c;简直比超级赛亚人还快…

前端JavaScript篇之对执行上下文的理解

目录 对执行上下文的理解创建执行上下文 对执行上下文的理解 当我们在执行JavaScript代码时&#xff0c;JavaScript引擎会创建并维护一个执行上下文栈来管理执行上下文。执行上下文有三种类型&#xff1a;全局执行上下文、函数执行上下文和eval函数执行上下文。 在写代码的时…

记录 | python importlib.import_module()用法

先入为主 背景 一个函数运行需要根据不同项目的配置&#xff0c;动态导入对应的配置文件运行。 解决 文件结构 a #文件夹│a.py│__init__.py b #文件夹│b.py│__init__.py├─c#文件夹│c.py│__init__.py# c.py 中内容 args {a:1}class C:def c(self):pass 目的 向a模…

(6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理

目录 一、为什么要使用Adaboost建模? 二、泰坦尼克号分析(工作环境) (插曲)Python可以引入任何图形及图形可视化工具 三、数据分析 四、模型建立 1、RandomForestRegressor预测年龄 2、LogisticRegression建模 引入GridSearchCV 引入RandomizedSearchCV 3、Deci…

【Network Management】谁来触发CanNm状态机跳转及CanNm如何知道主(被)动唤醒

目录 前言 正文 1.网络管理基本概念 2.CanNm和BswM模块交互 2.1 BswNMControl配置容器

第三百一十回

我们在上一章回中介绍了"再谈ListView中的分隔线"&#xff0c;本章回中将介绍showMenu的用法.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在第一百六十三回中介绍了showMenu相关的内容&#xff0c;它主要用来显示移动PopupMenu在页面中的位置…

C++中的作用域

在C中&#xff0c;作用域是指程序中变量、函数和其他命名实体的可见性和可访问性范围。作用域规定了在代码中的哪些位置可以引用或使用特定的标识符。C中有多种类型的作用域&#xff0c;包括全局作用域、局部作用域和命名空间作用域。 全局作用域&#xff1a; 全局作用域是在整…

13.JS实现深拷贝的方式

实现方式1&#xff08;JSON.stringfy&#xff09; JSON.parse(JSON.stringify(obj))是目前比较常用的深拷贝方法之一&#xff0c;它的原理就是利用JSON.stringify 将js对象序列化&#xff08;JSON字符串&#xff09;&#xff0c;再使用JSON.parse来反序列化(还原)js对象。这个…

C语言第二十一弹---指针(五)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 转移表 1、转移表 总结 1、转移表 函数指针数组的用途&#xff1a;转移表 举例&#xff1a;计算器的⼀般实现&#xff1a; 假设我们需要做一个能够进行加减…

CoreSight学习笔记

文章目录 1 Components1.1 ROM Table 2 使用场景2.1 Debug Monitor中断2.1.1 参考资料 2.2 Programming the cross halt2.2.1 编程实现2.2.2 参考资料 2.3 CTI中断2.3.1 编程实现2.3.1.1 准备工作2.3.1.2 触发中断2.3.1.3 中断响应 2.3.2 参考资料 1 Components 1.1 ROM Table…

TCP和UDP相关问题(重点)(4)——4.使用TCP的协议有哪些?使用UDP的协议有哪些?

4.使用TCP的协议有哪些&#xff1f;使用UDP的协议有哪些&#xff1f; 使用TCP的协议有&#xff1a;HTTP3.0之前的HTTP协议、HTTPS、FTP、SMTP、SSH... 使用UDP的协议有&#xff1a;HTTP3.0、DNS、DHCP...

mybatis-plus使用apply进行字符串拆分后进行包含查询

首先数据库是 PostgreSql&#xff0c;有一个字段要进行模糊查询&#xff0c;我们一般是通过 like 就好了&#xff0c;但是偏偏这个字段是逗号分割的字符串&#xff0c;这个时候如果使用 like 也可以&#xff0c;只有字符串唯一&#xff0c;比如是 uuid 这类&#xff0c;但是啊&…

Java序列化详解

目录 一、什么是序列化 二、什么是反序列化 三、序列化和反序列化的作用 四、序列化和反序列化应用案例 五、常见序列化协议对比 5.1 JDK 自带的序列化方式 5.2 JDK序列化的缺陷 1. 无法跨语言 2. 易被攻击 3. 序列化后的流太大 4. 序列化性能太差 5.3 Kryo 5.4 Pr…

P8772 [蓝桥杯 2022 省 A] 求和--2024蓝桥杯冲刺省一

点击跳转例题 思路&#xff1a;简单数乘法结合律&#xff0c;然后前缀和的模板题&#xff1a; 前缀和的知识&#xff1a; 本题的代码&#xff1a;前缀和知识--模板&#xff1b; #include <bits/stdc.h> #define int long long //(有超时风险) #define PII pair<in…

rust语言tokio库底层原理解析

目录 1 rust版本及tokio版本说明1 tokio简介2 tokio::main2.1 tokio::main使用多线程模式2.2 tokio::main使用单线程模式 3 builder.build()函数3.1 build_threaded_runtime()函数新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图…

输入:123 输出321

给出一个 32 位的有符号整数&#xff0c;你需要将这个整数中每位上的数字进行反转。若翻转后超出取值范围&#xff0c;则输出0即可输入&#xff1a;123 输出321输入&#xff1a;-123 输出-321 #include <stdio.h> int main(int argc, char const *argv[]) { printf("…