SQLite NULL 值
在 SQLite 中,NULL 表示一个缺失或未知的值。以下是关于 SQLite 中 NULL 值的一些重要事项:1. 插入 NULL: 当插入数据时,如果某一列没有提供值,或者使用 INSERT INTO table_name DEFAULT VALUES; 插入一行时,该列的值将被设置为 NULL。 -- 创建一个示例表 CREATE TABLE example ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER ); -- 插入一行,未提供 age 值,age 将被设置为 NULL INSERT INTO example (name) VALUES ('John');2. 比较和 NULL: 在比较中,NULL 不等于任何值,包括其他的 NULL。例如,NULL = NULL 的结果是未知的(不是 true 或 false)。 -- 查询所有 age 不是 NULL 的行 SELECT * FROM example WHERE age ...
SQLite Unions 子句
在 SQLite 中,UNION 子句用于合并两个或多个 SELECT 语句的结果集,并返回一个包含所有行的结果集。请注意,UNION 的基本规则是结果集的列数和对应列的数据类型必须相同。以下是一个简单的例子:-- 创建两个示例表CREATE TABLE fruits_a ( id INTEGER PRIMARY KEY, name TEXT);CREATE TABLE fruits_b ( id INTEGER PRIMARY KEY, name TEXT);-- 向表中插入一些数据INSERT INTO fruits_a (name) VALUES ('Apple'), ('Banana'), ('Orange');INSERT INTO fruits_b (name) VALUES ('Grapes'), ('Banana'), ('Watermelon');-- 使用 UNION 合并两个表的结果SELECT name FROM fruits_aUNIONSE...
SQLite Join
在 SQLite 中,JOIN 用于从两个或多个表中联合检索数据。以下是一些常见的 SQLite JOIN 类型:1. INNER JOIN(内连接): 返回两个表中匹配的行。 SELECT orders.order_id, customers.customer_name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;2. LEFT JOIN(左连接): 返回左表中的所有行,以及右表中匹配的行。如果右表中没有匹配的行,则结果集中将包含 NULL 值。 SELECT employees.employee_id, employees.employee_name, departments.department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.department_id;3. RIGHT JOIN(右连接): 返回右...
SQLite 约束
SQLite 中的约束(Constraints)是用于在表中强制执行数据完整性的规则。以下是一些常见的 SQLite 约束:1. NOT NULL 约束: 确保列中的值不为空。 CREATE TABLE example ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER );2. UNIQUE 约束: 确保列中的所有值都是唯一的。 CREATE TABLE users ( username TEXT UNIQUE, email TEXT UNIQUE );3. PRIMARY KEY 约束: 唯一标识表中的每一行,同时确保该列不包含 NULL 值。 CREATE TABLE students ( student_id INTEGER PRIMARY KEY, name TEXT, age INTEGER );4. CHECK 约束: 确保列中的所有值满足指定条件。 CRE...
SQLite PRAGMA
PRAGMA是SQLite中用于设置和查询各种数据库引擎参数的SQL命令。它通常用于获取或配置SQLite数据库的运行时行为。以下是一些常见的PRAGMA用法:1. 查询数据库版本: PRAGMA user_version; 这将返回当前数据库的用户版本。2. 设置数据库版本: PRAGMA user_version = 2; 这将设置数据库的用户版本为2。3. 查询或设置表格同步状态: PRAGMA synchronous; PRAGMA synchronous = OFF; 这将查询或设置数据库的同步模式。4. 查询或设置数据库的缓存大小: PRAGMA cache_size; PRAGMA cache_size = 5000; 这将查询或设置数据库的缓存大小(以页数为单位)。5. 查询或设置临时表的同步模式: PRAGMA temp_store; PRAGMA temp_store = MEMORY; 这将查询或设置临时表的存储模式。6. 查询或设置数据库的 journal 模式: PRAGMA journal_mode; ...
SQLite Distinct 关键字
在SQLite中,DISTINCT关键字用于从查询结果中去除重复的行,以仅返回唯一的值。它通常与SELECT语句一起使用。以下是使用DISTINCT关键字的基本语法:SELECT DISTINCT column1, column2, ...FROM your_table_name;在这个示例中: your_table_name 是你要从中选择数据的表格的名称。 column1, column2, 等等是你要选择的列。例如,如果你有一个名为colors的表格,包含一个color列,你可以使用以下查询来获取唯一的颜色值:SELECT DISTINCT colorFROM colors;这将返回colors表格中不重复的颜色值。DISTINCT非常有用,特别是在你关心某个列的唯一值而不关心重复的情况时。请注意,使用DISTINCT可能会影响查询的性能,因为数据库系统需要进行额外的工作来去除重复的行。因此,谨慎使用,确保在需要的情况下使用它。
SQLite Having 子句
HAVING子句通常与GROUP BY一起使用,用于在查询结果中筛选具有特定聚合条件的组。它允许你在已经分组的数据上进行过滤,类似于WHERE子句,但是HAVING用于聚合函数的条件。以下是使用HAVING子句的基本语法:SELECT column1, aggregate_function(column2), ...FROM your_table_nameGROUP BY column1HAVING condition;在这个示例中: your_table_name 是你要从中选择数据的表格的名称。 column1 是你要用于分组的列。 aggregate_function(column2) 是你要应用于每个组的聚合函数,其中column2 是被聚合的列。 HAVING 子句后面跟着你希望对已分组数据进行过滤的条件。例如,如果你有一个名为sales的表格,包含product_category、sale_date和sales_amount列,你可以使用以下查询来找到总销售额超过1000的产品类别:SELECT product_category, SUM(sales_amount) AS ...
SQLite Group By
GROUP BY子句用于在SQLite中对查询结果进行分组。通常与聚合函数(如COUNT、SUM、AVG等)一起使用,以对每个组应用这些聚合函数并返回汇总的结果。以下是使用GROUP BY子句的基本语法:SELECT column1, aggregate_function(column2), ...FROM your_table_nameGROUP BY column1;在这个示例中: your_table_name 是你要从中选择数据的表格的名称。 column1 是你要用于分组的列。 aggregate_function(column2) 是你要应用于每个组的聚合函数,其中column2 是被聚合的列。例如,如果你有一个名为sales的表格,包含product_category和sales_amount列,你可以使用以下查询来计算每个产品类别的总销售额:SELECT product_category, SUM(sales_amount) AS total_salesFROM salesGROUP BY product_category;这将返回按产品类别分组的总销售额。你还可以根据...
SQLite Order By
在SQLite中,ORDER BY子句用于按照一个或多个列对查询结果进行排序。你可以按升序(ASC)或降序(DESC)顺序排序。以下是使用ORDER BY子句的示例:SELECT column1, column2, ...FROM your_table_nameORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...;在这个示例中: your_table_name 是你要从中选择数据的表格的名称。 column1, column2, 等等是你要选择的列。 ORDER BY 子句后面跟着你希望排序的列名,可以是一个或多个列名。 可以使用 ASC(升序,默认)或 DESC(降序)来指定排序顺序。例如,如果你有一个名为employees的表格,包含last_name、first_name和salary列,你可以使用以下查询按照姓氏升序、名字降序和工资降序排序:SELECT last_name, first_name, salaryFROM employeesORDER BY last_name ASC, first_name DESC,...
SQLite Limit 子句
在SQLite中,LIMIT子句用于限制SELECT语句返回的行数。它非常有用,尤其是在你只关心前几行结果时。以下是使用LIMIT子句的简单示例:SELECT * FROM your_table_nameLIMIT number_of_rows;在这个示例中: your_table_name 是你要从中选择数据的表格的名称。 number_of_rows 是你想要返回的行数。例如,如果你想从名为employees的表格中选择前10名员工的数据,可以使用以下查询:SELECT * FROM employeesLIMIT 10;这将返回表格中的前10行。你还可以使用LIMIT子句来指定从表格的特定位置开始返回数据,如下所示:SELECT * FROM your_table_nameLIMIT offset, number_of_rows; offset 是从表格的第几行开始返回数据。 number_of_rows 是你想要返回的总行数。例如,如果你想从第11行开始返回10行数据,可以使用以下查询:SELECT * FROM employeesLIMIT 10 OFFSET 10;这将返回从...
SQLite Glob 子句
在SQLite中,GLOB子句用于进行模式匹配,类似于LIKE子句,但使用的是通配符语法。通配符*表示零个或多个字符,而?表示一个字符。以下是一些使用GLOB子句的示例:1. 使用 * 进行后缀匹配: SELECT * FROM employees WHERE last_name GLOB 'Smith*'; 这将返回姓氏以"Smith"开头的所有员工记录,类似于LIKE 'Smith%'。2. 使用 * 进行前缀匹配: SELECT * FROM products WHERE name GLOB '*Processor'; 这将返回产品名称以"Processor"结尾的所有产品记录,类似于LIKE '%Processor'。3. 使用 * 进行通用匹配: SELECT * FROM customers WHERE email GLOB '*gmail*'; 这将返回电子邮件地址中包含"gmail"的所有客户记录,类似于LI...
SQLite Like 子句
在SQLite中,LIKE子句用于在SELECT语句的WHERE子句中进行模糊匹配。它通常与通配符一起使用,比如 %(代表零个或多个字符)和 _(代表一个字符)。以下是一些LIKE子句的示例:1. 使用 % 进行后缀匹配: SELECT * FROM employees WHERE last_name LIKE 'Smith%'; 这将返回姓氏以"Smith"开头的所有员工记录。2. 使用 % 进行前缀匹配: SELECT * FROM products WHERE name LIKE '%Processor'; 这将返回产品名称以"Processor"结尾的所有产品记录。3. 使用 % 进行通用匹配: SELECT * FROM customers WHERE email LIKE '%gmail%'; 这将返回电子邮件地址中包含"gmail"的所有客户记录。4. 使用 _ 进行单字符匹配: SELECT * FROM orders WHERE or...
SQLite Delete 语句
在SQLite中,你可以使用DELETE语句来删除表格中的数据。以下是一个简单的示例:DELETE FROM your_table_nameWHERE condition;在这个示例中: your_table_name 是你要删除数据的表格的名称。 condition 是一个可选的筛选条件,用于指定你想要删除的数据的条件。例如,如果你有一个名为users的表格,包含id、username和email列,你可以使用以下语句删除用户名为'john_doe'的用户:DELETE FROM usersWHERE username = 'john_doe';这将删除users表格中所有用户名为'john_doe'的行。如果你省略WHERE子句,DELETE语句将删除表格中的所有行,这可能导致意外的数据损失。因此,在执行DELETE语句时,建议始终使用适当的WHERE条件来明确定位要删除的行。谨慎使用DELETE语句,确保你了解它将影响哪些数据。
SQLite Update 语句
在SQLite中,你可以使用UPDATE语句来更新表格中的数据。以下是一个简单的示例:UPDATE your_table_nameSET column1 = value1, column2 = value2, ...WHERE condition;在这个示例中: your_table_name 是你要更新数据的表格的名称。 column1, column2, 等等是你要更新的列名。 value1, value2, 等等是你要将列更新为的新值。 condition 是一个可选的筛选条件,用于指定你想要更新的数据的条件。例如,如果你有一个名为users的表格,包含id、username和email列,你可以使用以下语句将用户名为'john_doe'的用户的电子邮件更新为新值:UPDATE usersSET email = 'new_email@example.com'WHERE username = 'john_doe';这将在users表格中找到用户名为'john_doe'的行,并将其电子邮件更新为'new_emai...
SQLite AND/OR 运算符
在SQLite中,AND和OR是逻辑运算符,用于组合多个条件,以构建更复杂的查询条件。1. AND运算符: - AND 运算符用于将两个或多个条件组合起来,要求同时满足所有条件。 示例: SELECT * FROM employees WHERE department = 'HR' AND salary > 50000; 在这个例子中,AND运算符要求返回部门为'HR'且工资大于50000的员工记录。2. OR运算符: - OR 运算符用于将两个或多个条件组合起来,只要满足其中一个条件即可。 示例: SELECT * FROM products WHERE category = 'Electronics' OR price < 100; 在这个例子中,OR运算符要求返回类别为'Electronics'或价格低于100的产品记录。3. 结合AND和OR: - 你还可以结合使用 AND 和 OR 来构建更复杂的条件。 示例: SELECT * FROM orders WH...
SQLite Where 子句
WHERE子句用于在SQLite查询中指定条件,以过滤出符合特定条件的记录。以下是一些使用WHERE子句的示例:1. 基本的等值比较: SELECT * FROM employees WHERE department_id = 1; 这将检索出department_id等于1的所有员工记录。2. 使用逻辑运算符: SELECT * FROM products WHERE price > 100 AND stock_quantity > 0; 在此示例中,只有价格大于100且库存量大于0的产品将被检索。3. 使用LIKE进行模糊匹配: SELECT * FROM customers WHERE last_name LIKE 'Smith%'; 这将检索出姓氏以"Smith"开头的所有客户记录。4. 使用IN进行多个条件匹配: SELECT * FROM orders WHERE status IN ('Pending', 'Processing'); 这将检索出订单状态为&qu...
SQLite 表达式
在SQLite中,表达式是由列、运算符和常量组成的结构,用于生成单一值或结果。以下是一些常见的表达式元素和示例:1. 算术表达式: 包括常见的算术运算符如 +、-、*、/ 等。 SELECT salary * 1.1 AS increased_salary FROM employees;2. 字符串连接表达式: 使用 || 运算符。 SELECT first_name || ' ' || last_name AS full_name FROM users;3. 逻辑表达式: 使用逻辑运算符如 AND、OR、NOT。 SELECT * FROM products WHERE price > 100 AND stock_quantity > 0;4. 比较表达式: 使用比较运算符如 =、<>、<、>、<=、>=。 SELECT * FROM orders WHERE order_date >= '2023-01-01';5. IN表达式: 用于检查一个值是否在一组值中。 SELECT ...
SQLite 运算符
在SQLite中,有许多运算符可以用于构建和执行查询。以下是一些常用的运算符:1. 比较运算符: - =:等于 - <> 或 !=:不等于 - <:小于 - <=:小于等于 - >:大于 - >=:大于等于 例如: SELECT * FROM users WHERE age > 25;2. 逻辑运算符: - AND:逻辑与 - OR:逻辑或 - NOT:逻辑非 例如: SELECT * FROM users WHERE age > 25 AND city = 'New York';3. 模糊匹配运算符: - LIKE:模糊匹配 - GLOB:使用通配符进行匹配 例如: SELECT * FROM products WHERE name LIKE 'App%';4. IN运算符: - IN:用于匹配一组值中的任意一个 例如: SELECT * FROM users WHERE city IN ('New York'...
SQLite Select 语句
在SQLite中,你可以使用SELECT语句来从表格中检索数据。以下是一个简单的示例:SELECT column1, column2, ...FROM your_table_nameWHERE condition;在这个示例中: column1, column2, 等等是你想要检索的列名,如果你想选择所有列,可以使用*通配符。 your_table_name 是你想要从中检索数据的表格的名称。 condition 是一个可选的筛选条件,用于指定你想要检索的数据的条件。例如,如果你有一个名为users的表格,包含id、username和email列,你可以使用以下语句检索所有用户的用户名和电子邮件:SELECT username, emailFROM users;如果你只想检索具有特定条件的用户,比如用户名为'john_doe'的用户,可以添加一个WHERE子句:SELECT username, emailFROM usersWHERE username = 'john_doe';这将只返回用户名为'john_doe'的用户的信息。你可以根...
SQLite Insert 语句
在SQLite中,你可以使用INSERT INTO语句将数据插入表格。以下是一个简单的示例:INSERT INTO your_table_name (column1, column2, column3, ...)VALUES (value1, value2, value3, ...);在这个示例中: your_table_name 是你要插入数据的表格的名称。 column1, column2, column3, 等等是表格的列名。 value1, value2, value3, 等等是你要插入的实际值。例如,如果你有一个名为users的表格,有id、username和email列,你可以使用以下语句将一行数据插入到表格中:INSERT INTO users (id, username, email)VALUES (1, 'john_doe', 'john@example.com');在这个例子中,我们为每一列指定了相应的值。如果你的表格有自增的主键,比如上面的id列,你可以省略它的插入,数据库会自动生成:INSERT INTO users (usern...