Python 操作Sqlite3
SQLite命令
1> .help 帮助信息
2>.show 输出格式设置
3>.excel 把操作结果输入excel
4>.schema sqlite_master 输出主表中保存数据库表
5>.header on / .mode column /.timer on 输出形式设置
6>.exit 退出数据库
7>.databases 显示数据库列表
8> -- 、/*....*/ 注释
9> .dump > 点命令来导出完整的数据库在一个文本文件中 -- testDB.db .dump > testDB.sql
10> < 从生成的testDB.sql恢复
11>.table 列出附加数据库中的所有表
12>.schema 命令得到表的完整信息
13>.width num,num...命令设置显示列的宽度
SQLite数据类型
SQLite 数据库操作:
1>. 创建数据库 :sqlite3 DatabaseName.db
2>. 附加数据库: ATTACH DATABASE 'testDB.db' as 'TEST'
3>.分离数据库: DETACH DATABASE ‘Alias-Name’;
SQLite 数据库表的操作:
创建表:CREATE TABLE
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
删除表:DROP TABLE语句用来删除表定义及其所有相关数据、索引、触发器、约束和该表的权限规范
DROP TABLE database_name.table_name;
向数据库的某个表中添加新的数据行:Insert into 语句:
第一种:INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
第二种:INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
第三种:
INSERT INTO first_table_name [(column1, column2, ... columnN)]
SELECT column1, column2, ...columnN
FROM second_table_name
[WHERE condition];
更新数据库数据: UPDATE 查询用于修改表中已有的记录。可以使用带有 WHERE 子句的 UPDATE 查询来更新选定行,否则所有的行都会被更新。
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
删除数据库已有的记录:DELETE 查询用于删除表中已有的记录。可以使用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都会被删除。
DELETE FROM table_name
WHERE [condition];
SQLite Like 子句:
-
百分号 (%)
-
下划线 (_)
百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。
SQLite Glob 子句:与 LIKE 运算符不同的是,GLOB 是大小写敏感的,
-
星号 (*)
-
问号 (?)
星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。这些符号可以被组合使用。
SQLite 语句的格式:
SELECT Distinct FROM WHERE GROUP BY HAVING ORDER BY
Limit
SQLite 逻辑运算符:
SQLite 约束:
约束是在表的数据列上强制执行的规则。这些是用来限制可以插入到表中的数据类型。这确保了数据库中数据的准确性和可靠性。
约束可以是列级或表级。列级约束仅适用于列,表级约束被应用到整个表。
以下是在 SQLite 中常用的约束
-
NOT NULL 约束:确保某列不能有 NULL 值。
-
DEFAULT 约束:当某列没有指定值时,为该列提供默认值。
-
UNIQUE 约束:确保某列中的所有值是不同的。
-
PRIMARY Key 约束:唯一标识数据库表中的各行/记录。
-
CHECK 约束:CHECK 约束确保某列中的所有值满足一定条件。
- 一个表只能有一个主键,它可以由一个或多个字段组成。当多个字段作为主键,它们被称为复合键。
CREATE TABLE COMPANY3(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL CHECK(SALARY > 0)
);
SQLite Join
SQL 定义了三种主要类型的连接:
-
交叉连接 - CROSS JOIN --- 两个表所有数据行的笛卡尔积
-
内连接 - INNER JOIN ----把 table1 中的每一行与 table2 中的每一行进行比较,找到所有满足连接谓词的行的匹配对。当满足连接谓词时,A 和 B 行的每个匹配对的列值会合并成一个结果行
-
SELECT ... FROM table1 [INNER] JOIN table2 ON conditional_expression ...
-
SELECT ... FROM table1 JOIN table2 USING ( column1 ,... ) ...
-
-
外连接 - OUTER JOIN
-
SELECT ... FROM table1 LEFT OUTER JOIN table2 ON conditional_expression ...
-
SELECT ... FROM table1 LEFT OUTER JOIN table2 USING ( column1 ,... ) ...
-
SQLite Unions
UNION 子句:
UNION 子句/运算符用于合并两个或多个 SELECT 语句的结果,不返回任何重复的行,为了使用 UNION,每个 SELECT 被选择的列数必须是相同的,相同数目的列表达式,相同的数据类型,并确保它们有相同的顺序,但它们不必具有相同的长度。
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION ALL 子句:
UNION ALL 运算符用于结合两个 SELECT 语句的结果,包括重复行。
适用于 UNION 的规则同样适用于 UNION ALL 运算符。
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION ALL
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
SQLite NULL
SQLite 的 NULL 是用来表示一个缺失值的项。表中的一个 NULL 值是在字段中显示为空白的一个值。
带有 NULL 值的字段是一个不带有值的字段。NULL 值与零值或包含空格的字段是不同的,理解这点是非常重要的
IS NOT NULL / IS NULL 运算符