数据库类型
大型数据库:Oracle
中型数据库:Server,微软开发的数据库产品,主要支持windows平台
小型数据库:mySQL,关系型数据库管理系统,开放源码
SQL语句
1,是标准库语言,不管哪种数据库都支持。
2,不需要以"."开头,正常输入的内容都会当成SQL语句解析。
3,SQL语句的关键字不分区大小写,但是通常用大写
4,在终端以”;“结尾,否则终端继续等待输入
Sqlite3数据库
使用C语言编写
开源
轻量级嵌入式数据库
特点:1:零配置,无需安装和管理配置
2:存储在单一磁盘中,完整
3:可在不同字节顺序的机器之间共享
4:最大支持2TB数据库
5:体积小,大致3W行源码,250KB
6:比其他数据库对数据的操作速度快
sqlite3函数
编译:gcc sqlite.c -lsqlite3
头文件:#include <sqlite3.h>
句柄:sqlite3 *db;
(1):int sqlite3_open(char *path, sqlite3 **db);
功能:
打开数据库,没有则创建
参数:
①路径
②:指向句柄的指针
返回值:
①:成功返回SQLITE3_OK
②:失败返回错误码(非零值)
(2):int sqlite3_close(sqlite3 *db);
功能:关闭sqlite3数据库
返回值:
①:成功返回SQLITE3_OK
②:失败返回错误码(非零值)
(3):int sqlite3_exec(sqlite3 *db,const
char *sql,
int (*callback)(void *,int,char **,char**),
void *arg,
cha **errmsg);
功能:执行SQL操作
参数:
①句柄
②SQL语句
③回调函数(满足一次条件,调用一次函数)
调用查询SQL语句的时候使用回调函数打印查询到的信息
④传递给函数的参数
⑤错误信息指针的地址
返回值:
①:成功返回SQLITE3_OK
②:失败返回错误码(非零值)
(4):回调函数(不能执行SQL语句,只能用于查询)
int sqlite3_get_table(sqlite3 *db,
const char *sql,
char ***resultp,
int *nrow,
int *ncolumn,
char **errmsg);
功能:执行SQL操作
参数:
①句柄
②sql语句
③指向sql执行结果的指针
④满足条件的记录的数目(不包含字段名)
⑤每条记录包含的字段数目
⑥错误信息指针的地址
返回值:
①:成功返回SQLITE3_OK
②:失败返回错误码(非零值)
(5):char* sqlite3_errmsg(sqlite3 *db);
返回sqlite3定义的错误信息
对数据库的操作
数据库本质是一个文件,以db作为后缀名
创建数据库(无则创建,有则打开)
1,使用SQL命令创建
(1)直接:
$ sqlite3 test.db
(2)间接:
①在Linux命令行界面输入“sqlite3”可以启动sqlite3工具。
sqlite>.
②使用。open命令创建
sqlite>.open xxx.db
创建表
CREATE TABLE ”表的名字“(
column1 datatype PRIMARY KEY, //主键,唯一,类似于人的身份证
column2 datatype NOT NULL, //约束在表中创建记录时字段不能为NULL
column3 datatype,
.....
columnN datatype,
);
使用”.tables“列出数据库中的所有表,验证表是否创建成功。
sqlite>.tables
使用”。schema“ 可以查看表的完整信息
sqlite> .schema
删除表
1,
DROP TABLE ”table_name“;
2,
sqlite>DROP TABLE COMPANY;
插入数据
1,对指定列添加值
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
例子:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );
2,如果对所有列添加,可以不写列名。但要确保值的顺序与列在表中的顺序一致。
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
例子:
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );
查询
SELECT column1, column2, columnN FROM table_name;
如果要查询所有的数据,可以用下面的语句:
SELECT * FROM table_name;