SQLite3 数据库命令操作入门
SQLite 是一个轻量级的嵌入式关系型数据库,广泛用于移动应用、桌面应用和小型项目中。以下是 SQLite3 的基础操作指南,适合初学者快速上手。
1. 启动 SQLite3
-
进入 SQLite3 命令行工具:
sqlite3 database_name.db
如果
database_name.db
文件不存在,SQLite 会自动创建一个新的数据库文件。 -
退出 SQLite3:
.exit
或按
Ctrl+D
。
2. 常用元命令
SQLite 提供了一些特殊的元命令(以 .
开头),用于管理数据库环境:
| 命令 | 功能 |
|---------------|----------------------------------------------------------------------|
| .help
| 显示所有可用命令的帮助信息。 |
| .tables
| 列出当前数据库中的所有表。 |
| .schema
| 显示所有表的创建语句(结构)。 |
| .schema table_name
| 显示指定表的创建语句。 |
| .mode column
| 设置输出模式为列对齐(更易读)。 |
| .headers on
| 开启查询结果的表头显示。 |
| .show
| 显示当前 SQLite 环境的设置。 |
3. SQL 基础操作
3.1 创建表
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
email TEXT UNIQUE
);
- INTEGER PRIMARY KEY AUTOINCREMENT
:主键,自动递增。
- TEXT NOT NULL
:文本字段,不能为空。
- UNIQUE
:字段值必须。
3.2 插入数据
INSERT INTO users (name, age, email) VALUES ('Alice', 25, 'alice@example.com');
INSERT INTO users (name, age, email) VALUES ('Bob', 30, 'bob@example.com');
- 如果插入所有字段,可以省略字段名:
INSERT INTO users VALUES (NULL, 'Charlie', 35, 'charlie@example.com');
NULL
表示让主键自动递增。
3.3 查询数据
```sql
-- 查询所有数据
SELECT * FROM users;
-- 查询指定字段
SELECT name, age FROM users;
-- 带条件的查询
SELECT * FROM users WHERE age > 30;
-- 排序查询
SELECT * FROM users ORDER BY age DESC;
-- 限制返回行数
SELECT * FROM users LIMIT 2;
```
3.4 更新数据
UPDATE users
SET age = 28
WHERE name = 'Alice';
- SET
指定要更新的字段和值。
- WHERE
指定条件,避免更新所有行。
3.5 删除数据
DELETE FROM users WHERE name = 'Bob';
- 省略 WHERE
会删除表中所有数据(谨慎操作)。
3.6 删除表
DROP TABLE users;
- 删除表会丢失所有数据,操作前需确认。
4. 索引与约束
4.1 创建索引
索引用于加速查询:
CREATE INDEX idx_users_email ON users (email);
4.2 添加约束
- 主键:
PRIMARY KEY
- 约束:
UNIQUE
- 非空约束:
NOT NULL
- 检查约束:
CREATE TABLE orders ( id INTEGER PRIMARY KEY, amount REAL CHECK (amount > 0) );
5. 事务管理
事务用于确保一组操作的原子性:
```sql
BEGIN TRANSACTION;
UPDATE users SET age = age + 1 WHERE name = 'Alice';
UPDATE users SET age = age - 1 WHERE name = 'Charlie';
COMMIT; -- 提交事务
-- 或
ROLLBACK; -- 回滚事务
```
6. 示例:完整操作流程
以下是一个完整的示例,展示如何创建表、插入数据、查询和更新:
```sql
-- 创建表
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
price REAL NOT NULL,
quantity INTEGER DEFAULT 0
);
-- 插入数据
INSERT INTO products (name, price, quantity) VALUES ('Laptop', 1000, 10);
INSERT INTO products (name, price, quantity) VALUES ('Phone', 500, 20);
-- 查询数据
SELECT * FROM products;
-- 更新数据
UPDATE products SET quantity = quantity - 1 WHERE name = 'Laptop';
-- 删除数据
DELETE FROM products WHERE name = 'Phone';
-- 删除表
DROP TABLE products;
```
7. 常见问题与注意事项
-
SQLite 数据类型:
- SQLite 是动态类型系统,常用类型包括:
INTEGER
:整数REAL
:浮点数TEXT
:字符串BLOB
:二进制数据NULL
:空值
- SQLite 是动态类型系统,常用类型包括:
-
SQL 注入:
- 使用参数化查询避免 SQL 注入(在编程语言中绑定参数)。
-
备份与恢复:
- 备份数据库:
cp database_name.db backup_database_name.db
- 恢复数据库:将备份文件覆盖原文件。
- 备份数据库:
-
性能优化:
- 为常用查询字段创建索引。
- 避免在大数据量表中频繁使用
SELECT *
。
8. 学习资源推荐
- 官方文档:SQLite Documentation
- 在线工具:SQLite Online
通过以上内容,您已经掌握了 SQLite3 的基础操作。建议通过实践巩固知识,例如创建一个小型项目来管理用户信息或库存数据。
(www.nzw6.com)