SQLite常用命令

==========================SQLite常用命令======================================
1、查找帮助命令									.help
2、退出SQLite命令								.q 	.quit	.exit
3、显示各种设置的当前值					.show
4、查看表的create模式						.schema		.schema name
5、显示当前打开的数据库文件			.database
6、显示数据库中所有的表名				.tables
7、创建或者打开一个数据库				sqlite3 xxx.db

1、创建新表
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字段可以是null
	B、 一个表有且只有一个主键,但可以有0个或多个unique字段
	C、 逻辑设计上,主键用以标识记录,而unique字段就是说明不重复
		一言以蔽之:primary key  = unique + not null
	
NOT NULL 约束
默认情况下,列可以保存 NULL 值。如果您不想某列有 NULL 值,那么需要在该列上定义此约束,指定在该列上不允许 NULL 值。
NULL 与没有数据是不一样的,它代表着未知的数据。

你可能感兴趣的:(学习笔记,jvm,oracle,数据库)