目的
方便以后在研发过程中操作数据库整理记录便于查询。
SQLite
- 判断是否某个表中是否存在某个字段为某个值
IFNULL
IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
IFNULL() 函数语法格式为:
IFNULL(expression, alt_value)
如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值。
参数说明:
expression -------要测试的值
alt_value ----------expression 表达式为 NULL 时返回的值
int MYSQLite::Test()
{
QSqlQuery query(db);
if(query.exec("select ifnull(select cardid from iccax where cardid = 111), -10) cardid"))
{
quer.next();
int IRes = query.value(0).toInt();
return IRes;
}else
{
qDebug() << query.lastError();
return -1;
}
}
如果不存在 cardid = 111 这个值 结果将返回时 -10 自己设置的值
- 判断某个数据库中是否有某个表
对于sqlite而言 我们先了解sqlite_master 这个对数据库中相关表的信息进行了管理,有最新的表类型。
select * from sqlite_master
对具体某个表的信息进行查看, 显示有每一个列的数据信息。
PRAGMA table_info(iccax);
表达式 select count(*) from sqlite_master where type = ‘table’ and name = 'tablename’
select name from sqlite_master where type = 'table' and tbl_name = 'il';
select name from sqlite_master where type = 'table' and tbl_name = 'iccax';
//查看是否有il这个表
有iccax时
无il表
- 创建表备份文件(复制某列数据)
语法1:
insert into 表名1(列名1)
select 列名1 from 表名2
Insert into Table2(field1,field2,...) select value1,value2,... from Table1
注意: 要求表table2 必须存在 且 列必须存在
(sqlite不支持)
语法2 :SELECT vale1, value2 into Table2 from Table1
此处 创建目标表table2 并 把table1 中的数据复制到table2
语法3:
Create Table 表名1 as Select * From 表名2
select into from 和 insert into select 的用法和区别
Insert into select 与create table as的性能测试及create table
pga,sga
Oracle 体系结构 SGA 和PGA 总结
SGA区由数据缓冲区、共享池、重做日志缓冲区、大型池、JAVA池构成;PGA区由排序区、私有SQL区以及堆栈构成。
SGA区是由Oracle分配的共享内存结构,包含一个数据库实例共享的数据和控制信息。当多个用户同时连接同一个实例时,SGA区数据供多个用户共享,所以SGA区又称为共享全局区。用户对数据库的各种操作主要在SGA区中进行。该内存区随数据库实例的创建而分配,随实例的终止而释放。PGA区是在用户进程连接数据库,创建一个会话时,由Oracle为用户分配的内存区域,保存当前用户私有的数据和控制信息,因此该区又称为私有全局区。每个服务器进程只能访问自己的PGA区,所有服务器进程PGA区总和即为实例的PGA区的大小。
- 如果某表不存在则创建
create table if not exists xxx();