SQL数据库某个表中的PSSWORD设置数字密码 为什么不能用 还要翻译吗
发布网友
发布时间:2022-04-30 08:03
我来回答
共2个回答
懂视网
时间:2022-04-30 12:24
sqlite是一个开源的嵌入式文件数据库,sqlite以动态链接库的方式供应用程序调用,所有的数据库对象都存储在同一个文件中。 sqlite动态库非常小,最新的3.8.11版本也只有500k左右。sqlite虽然小,但功能并不弱,它支持sql-92标准中大部分SQL规范, 支持表,索引,视图,触发器等对象,同时它还支持事务,满足ACID特性,因此非常适合嵌入式设备存储数据,尤其是手机,君不见微信,支付宝其实都在用哦。鉴于sqlite在嵌入式 领域非常流行,本人最近也在学习这个数据库,后面在学习的过程中,会整理些笔记,希望对大家有帮助。
下载源代码
在sqlite官网上http://www.sqlite.com/download.html下载最新的源代码,目前最新的版本是3.8.11。sqlite的源码包有两类,一类是sqlite-amalgamation-3081101.zip,这个包里面的 的源码只有一个源码文件sqlite3.c,包含了sqlite各个模块的所有代码;另外一类是sqlite-src-3081101.zip,这个包按sqlite模块拆分成了很多小文件。如果你想学习源代码,建议使用sqlite-src-3081101.zip,而如果用来熟悉sqlite功能,则建议使用sqlite-amalgamation-3081101.zip,因为就一个文件,方便将代码整合到自己的工程。下文,都假设采用只有一个文件的包。
编译&安装
拿到源码后,我们看到除了sqlite3.c源文件,还有shell.c文件。因为sqlite3.c只是一个动态库的源文件,因此通过整合shell.c可以生成sqlite执行码,简单来说就是sqlite3的客户端。
1) 编译命令行管理工具
gcc shell.c sqlite3.c -lpthread -ldl -o sqlite3
2) 编译动态链接库
gcc sqlite3.c -lpthread -ldl -fPIC -shared -o libsqlite3.so
备注:
-fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的,动态载入时是通过代码拷贝的方式来满足不同进程的需要, 这样,N个进程就就需要N个动态库的拷贝,不能达到真正代码段共享的目的。
-shared:表示生成一个共享目标文件,即我们所说的动态链接库。它可以和其他目标文件连接产生可执行文件。
-lpthread系统库用于支持线程操作。
-dl系统库用于支持动态装载。
3) 编译静态库
gcc -c sqlite3.c -lpthread -ldl -o sqlite3.o
ar -r libsqlite3.a sqlite3.o
将列出的各个目标文件一起打包成一个静态库libsqlite3.a
sqlite3基本操作
经过第一步和第二步,我们已经有了动态库和可执行码,这一节主要讲讲sqlite客户端的基本操作。由于sqlite支持sql-92标准,因此,在sqlite中使用sql语句与其他关系型数据库并没有太多差别。
1) 创建名为test.db的数据库
sqlite3 test.db
2) 创建表t,并添加索引idx_c1
create table t1(id int primary key, c1 varchar(100));
create index idx_c1 on t1(c1);
3) 创建视图
create view view_t1 as select * from t1;
4) 元数据查询命令
a) .databaes 显示数据库对象
b) .tables 显示表对象
c) .schema 显示表对象创建语句
d) .indices 显示索引对象
5) sqlite_master元数据表
sqlite中所有数据都存储在一个db文件中,其中sqlite_master用于存储元数据信息。第4节讲到的命令输出的数据,实质都是来源于sqlite_master表。Sqlite_master表结构如下
type
|
name
|
tbl_name
|
rootpage
|
sql
|
对象类型
|
对象名
|
表名
|
对象B树存储的根页
|
创建对象语句
|
比如,查询当前数据库的所有对象
6) .show 显示格式
默认查询输出结果可能不太容易看,可以通过设置以下参数来调整输出。.show命令显示了当前各种输出参数的设置,比如我们输出结果时,需要输出列名,可以使用.headers on即可。其他参数,大家可以逐个试试。
sqlite> .show
echo: off
explain: off
headers: on
mode: column
nullvalue: ""
output: stdout
separator: "|"
width:
7) 导入&导出
sqlite备份恢复相当容易,直接拷贝db文件就完事了。同样sqlite也支持导入导出功能,相对于拷贝物理文件方式,导出的对象更灵活,可以只导出数据库中的指定对象,另外导出文件存储的是SQL语句,物理文件存储的是二进制数据。
a) 导出
.dump 默认导出数据库所有对象到屏幕
b) 导出 t1和t2表到文件,需要设置.output参数
.output filename
.dump t1 t2
.output stdout
c) 导入
.read filename
Sqlite学习笔记(一)
标签:
热心网友
时间:2022-04-30 09:32
二.Windows下的SQLite的源代码是哪个软件压缩包?
sqlite-amalgamation-3_6_22.zip是SQLite的windows下源码文件
三.Window下的SQLite命令行工具
sqlite-3_6_22.zip
四.Window下的SQLite开发库,即动态链接库以及DEF文件
sqlitedll-3_6_22.zip
五.SQLite最新版本是:3.6.22
六.b<=a && a <= c 的SQL语句如何写
在SQLite中, 表达式"a BETWEEN b AND c"等于表达式 "a >= b AND a <= c",在比较表达式时,a可以是具有任何亲和性
七.a的值是x,y,z其中一个值,SQL语句如何写
SQLite把表达式 "a IN (x, y, z)" 和 "a = z OR a = y OR a = z"视为相等.
八.如何创建制定目录的数据库
sqlite3 D:/Project/SyncML/Lib/debug/atsync.db
九.创建数据的注意事项
如果不往数据库里面添加任何的表,这个数据库等于没有建立,不会在硬盘上产生任何文件,如果数据库已经存在,则会打开这个数据库。
十.如何添加一张数据表
create table student(name varchar(10), age smallint);
十一.如何往数据表中添加数据
insert into student values('张三', 20);
十二.如何通过sqlite3.dll与sqlite3.def生成sqlite3.lib文件
LIB /DEF:sqlite3.def /machine:IX86
十三.如何查询SQLite工具的软件版本
也就是sqlite3.exe应用程序小工具的版本号
方法一:进入sqlite3.exe所在目录,在命令行执行如下命令
sqlite3 –version
方法二:
select sqlite_version();
十四.如何在字符串中使用单引号(')?
SQL 标准规定,在字符串中,单引号需要使用逃逸字符,即在一行中使用两个单引号
十五.如果删除了大量数据,而又想缩小数据库文件占用的空间,执行 VACUUM 命令
vacuum;
十六.在SQLite中,如何在一个表上添加或删除一列?
SQLite 有有限地 ALTER TABLE 支持。你可以使用它来在表的末尾增加一列,可更改表的名称。 如果需要对表结构做更复杂的改变,则必须重新建表。 重建时可以先将已存在的数据放到一个临时表中,删除原表, 创建新表,然后将数据从临时表中复制回来。
如,假设有一个 t1 表,其中有 "a", "b", "c" 三列, 如果要删除列 c ,以下过程描述如何做:
开始事物处理
BEGIN TRANSACTION;
创建临时表格t1-backup
CREATE TEMPORARY TABLE t1_backup(a,b);
将数据库表t1中的所有数据拷贝到表t1-backup中
INSERT INTO t1_backup SELECT a,b FROM t1;
删除表格t1
DROP TABLE t1;
创建表格t1
CREATE TABLE t1(a,b);
将数据库表t1-backup中的所有数据拷贝到表t1中
INSERT INTO t1 SELECT a,b FROM t1_backup;
删除备份表格t1-backup
DROP TABLE t1_backup;
事物提交
COMMIT;
十七.如何查询当前的编码的编码格式
pragma encoding;
十八.SQLite支持哪些数据类型些?
NULL 值为NULL
INTEGER 值为带符号的整型,根据类别用1,2,3,4,6,8字节存储
REAL 值为浮点型,8字节存储
TEXT 值为text字符串,使用数据库编码(UTF-8, UTF-16BE or UTF-16-LE)存储
BLOB 值为二进制数据,具体看实际输入
但实际上,sqlite3也接受如下的数据类型:
smallint 16 位元的整数
interger 32 位元的整数
decimal(p,s) p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值 ,s是指小数点後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。
float 32位元的实数。
double 64位元的实数。
char(n) n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n) 和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。 这个形态是为了支援两个字元长度的字体,例如中文字。
vargraphic(n) 可变长度且其最大长度为 n 的双字元字串,n不能超过 2000。
date 包含了 年份、月份、日期。
time 包含了 小时、分钟、秒。
timestamp 包含了 年、月、日、时、分、秒、千分之一秒。
十九.如果将某个字段设置为INTEGER PRIMARY KEY属性,有什么特性?
如果将声明表的一列设置为 INTEGER PRIMARY KEY,则具有:
1.每当你在该列上插入一NULL值时, NULL自动被转换为一个比该列中最大值大1的一个整数;
2.如果表是空的, 将会是1;
注意该整数会比表中该列上的插入之前的最大值大1。 该键值在当前的表中是唯一的。但有可能与已从表中删除的值重叠。要想建立在整个表的生命周期中唯一的键值,需要在 INTEGER PRIMARY KEY 上增加AUTOINCREMENT声明。那么,新的键值将会比该表中曾能存在过的最大值大1。
二十.字段声明中有AUTOINCREMENT属性,有什么与众不同的含义?
要想建立在整个表的生命周期中唯一的键值,需要在 INTEGER PRIMARY KEY 上增加AUTOINCREMENT声明。那么,新的键值将会比该表中曾能存在过的最大值大1。
2010年SQLite学习笔记之二
一.建立数据库
SQL数据库某个表中的PSSWORD设置数字密码 为什么不能用 还要翻译吗
SQL 标准规定,在字符串中,单引号需要使用逃逸字符,即在一行中使用两个单引号 十五.如果删除了大量数据,而又想缩小数据库文件占用的空间,执行 VACUUM 命令 vacuum;十六.在SQLite中,如何在一个表上添加或删除一列?SQLite 有有限地 ALTER TABLE 支持。你可以使用它来在表的末尾增加一列,可更改表...
sql 数据库备份与还原命令时什么?怎么用?急!!!
3.恢复数据库 Restore Database db_name From device With Restricted_User File=恢复具有多个备份子集的备份介质中的那个备份子集 Pssword= MediaName= MediaPassword= Keep_Replication Move file to file Norecovery|Recovery|Standby=数据库恢复操作的UNDO文件(恢复数据库文件或文件组使用Norecovery选项)No...
如何把EXCEL的内容导入word指定的位置
打开word文档,点击“插入”栏目---对象---由文件创建---浏览excel表格文件的路径---插入---再勾上选显示为链接到文件:是指把excel里的文件直接在word里显示;而显示为图标就会在word文档里只显示excel的图标---确定即可。显示为链接到文件:显示为图标:...