SQLite(1)——sql语言

想整理的东西蛮多,在我的能力范围内,暂且先发一篇基础语法吧~~

想学习相关的新手朋友们可以收藏,后边我应该还会发SQLite相关知识的,而且我写的超级详细~


1. 建表语句

CREATE TABLE IF NOT EXISTS table_name(\
		table_key INTEGER PRIMARY KEY NOT NULL,\
		table_value TEXT DEFAULT '');
或		
CREATE TABLE IF NOT EXISTS table_name(\
		[table_key] INTEGER PRIMARY KEY AUTOINCREMENT,\
		[table_value] VARCHAR(50));

        --------------------------
		|table_key	table_value	 |
		|	1			value1	 |
		|	2			value2	 |
		--------------------------

建表语句兼容数据库升级功能:
    创建表时判断是否已经存在再创建,并设置列属性(值类型,不能为空
    CREATE TABLE IF NOT EXISTS table_name... 中IF NOT EXISTS即为兼容判断,如果该表不存在再创建。
    但是在已安装程序升级时,若表中添加了新字段,此时不再重新创建表,操作数据库将会出现错误,因此还要对添加的新字段进行判断:

#首先查询建表语句中是否有该新增字段(new_value)
SELECT * FROM table_name WHERE NAME = '表名' AND SQL LIKE '%新增字段%';
#返回空即之前的建表语句中无该字段,需要添加
ALTER TABLE table_name ADD new_value INTEGER DEFAULT 0;
#添加完成,升级后的数据库将包含new_value字段

	-----------------------------------
	|table_key	table_value	 new_value|
	|	1			value1	 		  |
	|	2			value2	 		  |
	-----------------------------------

2. 常用sql语句

(1)基础sql——增删改查

INSERT INTO table_name VALUES(1, 'value1', 0); //不指定数据列,全部数据列数据都要添加
INSERT INTO table_name(table_key, table_value) VALUES(2, 'value2'); //添加指定列,此时new_value列将默认空
DELETE FROM table_name; //删除全表数据
DELETE FROM table_name WHERE table_key=1; //删除符合条件的数据
UPDATE table_name SET table_value='defult value'; //更新全部table_value值为defult value
UPDATE table_name SET table_key=3 WHERE table_key=1; //更新符合条件的table_key值为2
SELECT * FROM table_name; //取出全表
SELECT * FROM table_name WHERE table_key=1; //取出符合条件的一行数据
SELECT COUNT(*) FROM table_name; //得出总条数
SELECT COUNT(*) FROM table_name WHERE table_key=1; //得出符合条件的条数

(2) 判断后操作语句

        当要插入的values中的primary key(unique)值在表中已经有一模一样的值,即执行replace更新或ignore忽略;
        如果是联合主键,需要所有主键数据(要插入的和已存在的)都完全相同,否则则执行插入语句。
        注:要求列中必须有唯一值主键,主键相同时才会更新不一样的值,没有主键将执行插入(IGNORE同理)

		-----------------------------------
		|table_key	table_value	 new_value|
		|	1			value1	 	11	  |
		-----------------------------------
INSERT OR REPLACE INTO table_name(table_key, table_value,new_value) VALUES (1, '12345',11);
		-----------------------------------
		|table_key	table_value	 new_value|
		|	1			12345	 	11	  |
		-----------------------------------
INSERT OR IGNORE INTO table_name(table_key, table_value,new_value) VALUES (2, '12345',11);
		-----------------------------------
		|table_key	table_value	 new_value|
		|	1			12345	 	11	  |
		|	2			12345	 	11	  |
		-----------------------------------

    (3) 分组查询 

使用group by可以根据条件过滤后返回符合条件的一组数据,在group by 后使用HAVING子句可以在返回结果之上再进行筛选。

	-----------------------------------
	|table_key	table_value	 new_value|
	|	1			value1	 	11	  |
	|	2			value2	 	11	  |
	|	3			value3	 	22	  |
	|	4			value4	 	22	  |
	-----------------------------------

SELECT * FROM table_name WHERE table_value LIKE '%value%' GROUP BY new_value;
#根据new_value的不同值返回一组符合条件的数据,去除重复数据,返回11和22数据各一条数据(默认第一条)。
	-----------------------------------
	|table_key	table_value	 new_value|
	|	1			value1	 	11	  |
	|	3			value3	 	22	  |
	-----------------------------------
#使用HAVING子句筛选出返回结果中new_value值大于11的
SELECT * FROM table_name WHERE VALUE LIKE '%value%' GROUP BY new_value HAVING new_value > 11;

	-----------------------------------
	|table_key	table_value	 new_value|
	|	3			value3	 	22	  |
	-----------------------------------

(4) 限制删除固定行数(默认从第一行开始删除) 

#当指定table_value列时如果有相同值将删除不定个数,无法固定删除LIMIT指定个数;
#当指定table_key列筛选时,由于table_key为唯一值,因此可以正常删除LIMIT指定行数。

DELETE FROM table_name WHERE table_key IN (SELECT table_key FROM table_name LIMIT 1);
DELETE FROM table_name WHERE table_value IN (SELECT table_value FROM table_name LIMIT 1);

(5)模糊匹配 

    LIKE(不区分大小写匹配)
    百分号(%)代表零个、一个或多个数字或字符
    下划线 (_) 代表一个单一的数字或字符
    注:可以组合使用
    GLOB(区分大小写匹配)
    星号 (*) 代表零个、一个或多个数字或字符
    问号(?)代表一个单一的数字或字符 

    -----------------------------------
	|table_key	table_value	 new_value|
	|	1			value1	 	11	  |
	|	2			value2	 	11	  |
	|	3			VALUE3	 	22	  |
	|	4			VALUE4	 	22	  |
	-----------------------------------
SELECT * FROM table_name WHERE table_value LIKE '%value%';
	-----------------------------------
	|table_key	table_value	 new_value|
	|	1			value1	 	11	  |
	|	2			value2	 	11	  |
	|	3			VALUE3	 	22	  |
	|	4			VALUE4	 	22	  |
	-----------------------------------
SELECT * FROM table_name WHERE table_value GLOB '%value%';
	-----------------------------------
	|table_key	table_value	 new_value|
	|	1			value1	 	11	  |
	|	2			value2	 	11	  |
	-----------------------------------

3. 数据库事务 

        数据库事务是原子性操作,即使用事务执行的操作,要么全部完成,要么全部未完成,事务内的工作单位不可分割,若执行过程中出现错误,则执行回滚到执行前状态。 

try
	{
		BEGIN TRANSACTION;
		//执行数据库操作
		COMMIT;
	{
catch(...)
	{
		//出错则执行回滚
		ROLLBACK;
		注:此处只是简单列举用法
	}

未完待续~~~ 


 配菜拼盘(1)——基础正则

配菜拼盘(2)——cmake构建项目 

配菜拼盘(3)——debian 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值