1.SQlite3
一.qlite3一些常用Sql语句操作
创建表:            create  table 表名(元素名 类型,…);
删除表:            drop  table 表名;             
插入数据:       insert  into 表名 values(, , ,) ;  
创建索引:       create [unique] index 索引名on 表名(col….);
删除索引:   drop index 索引名(索引是不可更改的,想更改必须删除重新建)
删除数据:       delete from 表名where 要删除的记录;   (如果没有where,表中所有记录都会被删除)          
更新数据:       update 表名 set 字段=’修改后的内容’ where 条件;
增加一个列:  Alter table 表名 add column 字段 数据类型; 
修改表的名字alter table stu rename to stu2; #将表stu重命名为stu2
选择查询:       select 字段(以”,”隔开) from 表名 where 条件;
日期和时间: Select datetime(‘now’)
日期:   select date(‘now’);        
时间:  select time(‘now’);  
总数:select count() from table1;
求和:select sum(要求和的列) from table1;
平均:select avg(要求的列) from table1;
最大:select max(要求的列) from table1;
最小:select min(要求的列) from table1;
排序:select 字段 from table1 order by 字段(desc或asc)  ;(降序或升序)
分组:select 字段 from table1 group by 字段,字段…  ;
限制输出:select 字段fromtable1 limit x offset y;
                          = select 字段 from table1 limit y , x;
打开数据库 Sqlite3 数据库名.db;  显示数据库所有表名.tables;   查看建表语句.schema;
显示所有数据库 .databases
 
函数调用成功返回:SQLITE_OK
include <sqlite3.h>
打开数据库:
int sqlite3_open( 文件名, sqlite3 ** );  如果数据库文件不存在,会自动创建数据库  sqlite3** =&db
关闭数据库:
int sqlite3_close(sqlite3 )   sqlite3=db;
执行sql语句:
int sqlite3_exec(sqlite3
, const char *sql, sqlite3_callback, void *,  char *errmsg );
//sqlite3_exec(db,sql,NULL,NULL,&errmsg);
//delete,update一般用sqlite3不需要回掉
说明:通常,sqlite3_callback 和它后面的 void * 这两个位置都可以填 NULL。填NULL表示你不需要回调。比如你做insert 操作,做 delete 操作,就没有必要使用回调。而当你做 select 时,就要使用回调,因为 sqlite3 把数据查出来,得通过回调告诉你查出了什么数据
非回掉执行select:
int sqlite3_get_table(sqlite3
, const char *sql, char ***resultp, int *nrow, int *ncolumn, char **errmsg );
//具体实列:sqlite3_get_table(db,sql,&result,&nrow,&ncolumn,&errmsg)
char ***resultp   是个一维数组,第一行用来存储字段名称,后面是字段的值   **errmsg是用来存储错误信息

2、Mysql数据库
创建数据库:           查看数据库: 使用数据库: 删除数据库:
creat database 数据库名      show databases; use 数据库名; drop database 数据库名
 
数据库的插入,删除,查询与sqlite3的操作一样
ER图:长方体(实体)   菱形(拥有关系)   椭圆(属性)
 
Mysql多表联查
1. 内连接查询
内连接查询使用关键字join或inner join,然后通过on连接表与表之间的条件 (内连接查询只能查询出两个表符合调价的数据)
SELLECT 字段,字段1 ,from 表1 inner join 表2 on 查询条件
2. 外连接查询
1. 左外连接  (即使右表没有匹配,也会查出左表的所有数据)
SELLECT 字段,字段1 ,from 表1 LEFT JOIN 表2 on 查询条件
2. 右外连接  (即使左表没有查到,也会查询右表的所有数据)
SELLECT 字段,字段1 ,from 表1 RIGHT JOIN 表2 on 查询条件