39  
查询码: 00000492
SQLite须知
作者: 周杨 于 2023年12月13日 发布在分类 / 计算机应用 / 数据库 / SQLite ,于 2023年12月14日 编辑

SQLite网上教程:

1.极客笔记:https://deepinout.com/sqlite

2.菜鸟教程:https://www.runoob.com/sqlite/sqlite-tutorial.html

1.不支持存储过程

解决:通过触发器实现存储过程功能

(1)创建1个触发触发器的表

create table sp_table
(
    sp_value INT
);


(2)创建触发器

CREATE TRIGGER tr_sp
    AFTER update
    ON sp_table
BEGIN
--     执行相关语句,如:
--     INSERT INTO TableName (name, age) VALUES (name, age);  
--     DELETE FROM TableName WHERE AGE > 100
END;


(3)执行触发器

update sp_table set sp_value = 3

注意:触发器前后表分别对应old和new


2.不支持IF子句或CASE WHEN结构

通过定义两个或三个使用WHEN条件的触发器来实现相同的效果,请参阅http://sqlite.org/lang_createtrigger.html

CREATE TRIGGER tr_sp_1
    AFTER update
    ON sp_table when sp_value = 1
BEGIN
--     执行相关语句,如:
--     INSERT INTO TableName (name, age) VALUES (name, age);  
--     DELETE FROM TableName WHERE AGE > 100
END;
CREATE TRIGGER tr_sp_2
    AFTER update
    ON sp_table when sp_value = 2
BEGIN
--     执行相关语句,如:
--     INSERT INTO TableName (name, age) VALUES (name, age);  
--     DELETE FROM TableName WHERE AGE <= 100
END;
注:查看触发器信息
SELECT *
FROM sqlite_master
WHERE type = 'trigger';


3.不支持声明变量

SQLite并不像其他一些关系型数据库那样有一个直接的方式来声明变量。比如 SQL Server 中的 DECLARE @Name VARCHAR(10)。然而,我们可以通过使用WITH或者CREATE TABLE的方式来模拟一个变量。

模拟变量

WITH my_variable AS (
  SELECT 10 AS value
)
SELECT * FROM my_variable;
CREATE TABLE my_variable(value INTEGER);
INSERT INTO my_variable VALUES(10);
SELECT * FROM my_variable;

使用变量

WITH my_variable AS (
  SELECT 10 AS value
)
SELECT value * 2 FROM my_variable;
CREATE TABLE my_table(id INTEGER, name TEXT);
WITH my_variable AS (
  SELECT 10 AS value
)
INSERT INTO my_table(id, name) VALUES(value, 'John');
CREATE TABLE my_table(id INTEGER, name TEXT);
INSERT INTO my_table(id, name) VALUES(1, 'Alice');
WITH my_variable AS (
  SELECT 10 AS new_id
)
UPDATE my_table SET id = new_id WHERE name = 'Alice';
CREATE TABLE my_table(id INTEGER, name TEXT);
INSERT INTO my_table(id, name) VALUES(1, 'Alice');
WITH my_variable AS (
  SELECT 'Alice' AS target_name
)
DELETE FROM my_table WHERE name = target_name;
转自: https://deepinout.com/sqlite/sqlite-questions/92_sqlite_declare_variable_in_sqlite_and_use_it.html

4.不支持通过SQL语句去删除列


5.字符类型在查询时默认是区分大小写的,可以更改设置


 关联资源



 历史版本

备注 修改日期 修改人
内容更新 2023-12-14 09:00:08[当前版本] 周杨
内容更新 2023-12-14 08:54:07 周杨
创建版本 2023-12-13 15:02:31 周杨

知识分享平台 -V 5.1.4 -大信谛威