系统编程之数据库

5 篇文章 1 订阅
3 篇文章 0 订阅

数据查询:SELECT
数据操纵:INSERT、UPDATE、DELETE
数据控制:GRANT、REVOKE、DENY
– 创建表
create table if not exists student (id integer, name text, tel text);

– 查看表
.tables

– 查看表结构
.schema student

– 修改表
alter table student rename to stu; – 修改表名字
alter table student add column sex text;

– 插入数据
insert into student (id, name, tel, sex) values (1, “aaa”, “11111”, “m”);
insert into student (id, name) values (2, “bbb”);
insert into student values (3, “ccc”, “3333”, “f”), (4, “ddd”, “444444”, “m”);

– 查询数据
select * from student;
select name from student;
select * from student where id > 2;
select name from student where id < 2 or id > 3;
select * from student where id between 2 and 4;

– 修改数据
update student set tel = “22222” where id = 2;

– 删除数据
delete from student where id = 4;

– 删除表
drop table student;
创建数据库:创建表的语句属于DDL,用CREATE TABLE命令,如下定义:
CREATE [TEMP] TABLE table_name (column_definitions
[, constraints]);
CREATE TABLE命令至少需要一个表名和一个字段名。命令中table_name表示表名,必须与其它所有的标识符不同。column_definitions表示一个用逗号分隔的字段列表。
在SQLite中有5种本地类型:INTEGER、REAL、TEXT、BLOB和NULL
改变表:你可以用ALTER TABLE命令改变表的结构。SQLite版的ALTER TABLE命令既可以改变表名,也可以增加字段。一般格式为:
ALTER TABLE table { RENAME TO name | ADD COLUMN column_def }
Select查询语句结构:
SELECT <目标列名序列>
FROM <数据源>
[WHERE <检索条件表达式>]
[GROUP BY <分组依据列>]
[HAVING <分组提取条件>]
[ORDER BY <排序依据列>]
函数原型:(打开)
int sqlite3_open(const char fileName, sqlite3* ppDB);**
函数功能:打开一个数据库;若该数据库文件不存在,则自动创建。打开或者创建数据库的命令会被缓存,直到这个数据库真正被调用的时候才会被执行。
输入参数:fileName,待打开的数据库文件名称,包括路径,以’\0’结尾; 特别说明:SQLite 支持内存数据库,内存方式存储使用文件名“:memory:”
输出参数:ppDB,返回打开的数据库句柄;
返回值:执行成功返回SQLITE_OK,否则返回其他值

函数原型:(执行)
int sqlite3_exec(sqlite3 pDB, const char sql, sqlite_callback callback, voidpara, char* errMsg);**
函数功能:编译和执行零个或多个SQL 语句,查询的结果返回给回调函数callback
关于数据库的代码:

`#include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>
#include <string.h>

int print(void *para, int columnCount, char **columnValue, char **columnName)
{
int i;
for (i = 0; i < columnCount; i++)
{
printf("%s : %s “, columnName[i], columnValue[i]);
}
printf(”\n");

return 0;

}

int main()
{
int ret;
sqlite3 *ppdb;
char sql[128] = {0};
``ret = sqlite3_open(“student.db”, &ppdb);
if (ret != SQLITE_OK)
{
printf(“sqlite3_open : %s\n”, sqlite3_errmsg(ppdb));
exit(1);
}

sprintf(sql, "create table if not exists student (id integer, name text, tel text);");
ret = sqlite3_exec(ppdb, sql, NULL, NULL, NULL);
if (ret != SQLITE_OK)
{
	printf("sqlite3_exec1 : %s\n", sqlite3_errmsg(ppdb));
	exit(1);
}

int i;
int id;
char name[32] = {0};
char tel[32] = {0};
for (i = 0; i < 3; i++)
{
	scanf("%d%s%s", &id, name, tel);
	sprintf(sql, "insert into student (id, name, tel) values (%d, '%s', '%s');", id, name, tel);
	ret = sqlite3_exec(ppdb, sql, NULL, NULL, NULL);
	if (ret != SQLITE_OK)
	{
		printf("sqlite3_exec2 : %s\n", sqlite3_errmsg(ppdb));
	}
}

memset(sql, 0, sizeof(sql));
sprintf(sql, "select * from student;");
ret = sqlite3_exec(ppdb, sql, print, NULL, NULL);  
if (ret != SQLITE_OK)
{
	printf("sqlite3_exec3 : %s\n", sqlite3_errmsg(ppdb));
}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值