一.基本SQL语句
SQLite将每个数据库都保存成一个文件。
数据库中的数据被组织成表的形式。
表由若干拥有相同字段的记录组成。 表可以为空,即拥有0条记录。
字段指的是记录中的数据域,它有不同的类型,可以是一个数值,也可以是字符串。
每个表中可以指定一个或多个字段为主键,表中所有记录的主键的值都不能重复。这种不重复是在插入记录时控制的,即如果向一个表中插入记录时,这个表中已有与插入记录具有相同主键的记录,则插入操作失败。
1.创建表
create table student(
ID INTEGER,
name TEXT,
sex TEXT,
age INTEGER,
primary key(ID)
);
SQLite中的数据类型:
NULL – The value is a NULL value.
INTEGER – The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.
REAL – The value is a floating point value, stored as an 8-byte IEEE floating point number.
TEXT – The value is a text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16LE).
BLOB – The value is a blob of data, stored exactly as it was input.
2.删除表
用drop语句可以从数据库中删除指定的表
drop table student;
表被删除后,表中所存储的数据将全部丢弃
3.插入记录
用insert语句可以向表中插入一条新记录
insert into student values(1, 'Zhang', 'M', 18);
4.修改记录
用update语句可以可以修改表中的记录
update student set Sex = 'F', Age = 20 where Name = 'Zhang';
where及其后的部分表示一个过滤条件,如果省略where和它后面的部分,则语句的作用就是修改表student中的所有记录,将它们的Sex字段的值设为F,Age字段的值设为20。
5.删除记录
用delete语句可以删除表中的记录
delete from student where ID = 2;
如果没有where子句,则表student中的所有记录均被删除,成为空表。
#include <stdio.h>
#include <sqlite3.h>
int main()
{
sqlite3 *db;
int ret = sqlite3_open("student.db",&db);
if (ret != SQLITE_OK)
{
printf ("数据库打开失败\n");
return -1;
}
char *errmsg;
const char *sql = "create table if not exists student(ID INTEGER,name TEXT,sex TEXT,age INTEGER,primary key(ID))";
ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg );
if (ret != SQLITE_OK)
{
printf ("exec 失败: %s\n", errmsg);
return -1;
}
int id = 1;
char name[20] = "Zhang";
char sex[10] = "M";
int age = 18;
char str[100];
sprintf (str, "insert into student values(%d, '%s', '%s', %d)", id, name, sex, age);
ret = sqlite3_exec(db, str, NULL, NULL, &errmsg );
if (ret != SQLITE_OK)
{
printf ("exec 失败: %s\n", errmsg);
return -1;
}
sqlite3_close(db);
return 0;
}