数据库相关部分快速逻辑操作

目的

方便以后在研发过程中操作数据库整理记录便于查询。

SQLite

  1. 判断是否某个表中是否存在某个字段为某个值
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 自己设置的值
  1. 判断某个数据库中是否有某个表
    对于sqlite而言 我们先了解sqlite_master 这个对数据库中相关表的信息进行了管理,有最新的表类型。
select * from sqlite_master

在这里插入图片描述
对具体某个表的信息进行查看, 显示有每一个列的数据信息。

PRAGMA table_info(iccax);

在这里插入图片描述
PRAGMA1
PRAGMA 2

表达式 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. 创建表备份文件(复制某列数据)
语法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

数据库DML、DDL、DCL三种语言的区别与联系

SQL中有关DQL、DML、DDL、DCL的概念与区别

pga,sga
Oracle 体系结构 SGA 和PGA 总结

SGA区由数据缓冲区、共享池、重做日志缓冲区、大型池、JAVA池构成;PGA区由排序区、私有SQL区以及堆栈构成。
SGA区是由Oracle分配的共享内存结构,包含一个数据库实例共享的数据和控制信息。当多个用户同时连接同一个实例时,SGA区数据供多个用户共享,所以SGA区又称为共享全局区。用户对数据库的各种操作主要在SGA区中进行。该内存区随数据库实例的创建而分配,随实例的终止而释放。PGA区是在用户进程连接数据库,创建一个会话时,由Oracle为用户分配的内存区域,保存当前用户私有的数据和控制信息,因此该区又称为私有全局区。每个服务器进程只能访问自己的PGA区,所有服务器进程PGA区总和即为实例的PGA区的大小。
  1. 如果某表不存在则创建
create table if not exists xxx();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道阻且长,行则降至

无聊,打赏求刺激而已

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值