元素码农
基础
UML建模
数据结构
算法
设计模式
网络
TCP/IP协议
HTTPS安全机制
WebSocket实时通信
数据库
sqlite
postgresql
clickhouse
后端
rust
go
java
php
mysql
redis
mongodb
etcd
nats
zincsearch
前端
浏览器
javascript
typescript
vue3
react
游戏
unity
unreal
C++
C#
Lua
App
android
ios
flutter
react-native
安全
Web安全
测试
软件测试
自动化测试 - Playwright
人工智能
Python
langChain
langGraph
运维
linux
docker
工具
git
svn
🌞
🌙
目录
▶
SQLite基础概念
什么是SQLite
应用场景分析
与其他数据库对比
▶
环境安装配置
Windows安装指南
MacOS安装指南
Linux安装指南
命令行工具使用
▶
数据库操作基础
创建第一个数据库
连接与断开连接
数据库文件管理
删除数据库
▶
数据表操作
数据类型详解
创建数据表
修改表结构
删除数据表
约束与索引
▶
数据操作CRUD
插入数据INSERT
查询数据SELECT
更新数据UPDATE
删除数据DELETE
条件查询WHERE
联合查询JOIN
子查询SUBQUERY
复合条件查询
分组聚合查询
集合查询
排序与分页
▶
数据库管理基础
事务处理
备份与恢复
性能优化基础
发布时间:
2025-04-02 22:46
↑
☰
# 创建数据表 本文将详细介绍如何在SQLite中创建数据表,包括表结构设计、字段定义、约束条件等重要内容,帮助您设计出合理的数据库表结构。 ## 基本语法 ### CREATE TABLE语句 1. **基本格式** ```sql CREATE TABLE table_name ( column1 datatype [constraints], column2 datatype [constraints], ... [table_constraints] ); ``` 2. **示例** ```sql CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL UNIQUE, email TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ## 字段定义 ### 数据类型 1. **常用类型** ```sql CREATE TABLE products ( id INTEGER, name TEXT, price REAL, description TEXT, image BLOB ); ``` 2. **类型选择** - INTEGER用于整数 - TEXT用于字符串 - REAL用于浮点数 - BLOB用于二进制数据 ## 约束条件 ### 主键约束 1. **单字段主键** ```sql CREATE TABLE categories ( id INTEGER PRIMARY KEY, name TEXT NOT NULL ); ``` 2. **自增主键** ```sql CREATE TABLE orders ( order_id INTEGER PRIMARY KEY AUTOINCREMENT, order_date TIMESTAMP ); ``` ### 非空约束 1. **NOT NULL** ```sql CREATE TABLE employees ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, department TEXT NOT NULL ); ``` 2. **默认值** ```sql CREATE TABLE posts ( id INTEGER PRIMARY KEY, title TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'draft' ); ``` ### 唯一约束 1. **单字段唯一** ```sql CREATE TABLE users ( id INTEGER PRIMARY KEY, email TEXT UNIQUE, username TEXT UNIQUE ); ``` 2. **组合唯一** ```sql CREATE TABLE enrollments ( student_id INTEGER, course_id INTEGER, UNIQUE(student_id, course_id) ); ``` ### 外键约束 1. **基本外键** ```sql CREATE TABLE orders ( id INTEGER PRIMARY KEY, user_id INTEGER, FOREIGN KEY(user_id) REFERENCES users(id) ); ``` 2. **级联操作** ```sql CREATE TABLE comments ( id INTEGER PRIMARY KEY, post_id INTEGER, FOREIGN KEY(post_id) REFERENCES posts(id) ON DELETE CASCADE ON UPDATE CASCADE ); ``` ## 高级特性 ### 检查约束 1. **基本检查** ```sql CREATE TABLE products ( id INTEGER PRIMARY KEY, price REAL CHECK(price > 0), quantity INTEGER CHECK(quantity >= 0) ); ``` 2. **复杂检查** ```sql CREATE TABLE employees ( id INTEGER PRIMARY KEY, salary REAL, level TEXT, CHECK(salary >= CASE level WHEN 'junior' THEN 3000 WHEN 'senior' THEN 5000 ELSE 4000 END) ); ``` ### 默认值 1. **常量默认值** ```sql CREATE TABLE tasks ( id INTEGER PRIMARY KEY, title TEXT NOT NULL, status TEXT DEFAULT 'pending', priority INTEGER DEFAULT 1 ); ``` 2. **函数默认值** ```sql CREATE TABLE logs ( id INTEGER PRIMARY KEY, message TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ## 最佳实践 ### 命名规范 1. **表名规范** - 使用小写字母 - 使用下划线分隔 - 使用复数形式 - 避免SQLite关键字 2. **字段命名** - 描述性名称 - 一致的命名风格 - 适当的前缀 ### 设计原则 1. **字段设计** - 选择合适的数据类型 - 设置适当的约束 - 考虑未来扩展 2. **表关系** - 合理使用外键 - 避免过度复杂 - 注意性能影响 ## 常见问题 ### 创建失败 1. **表已存在** ```sql -- 解决方案1:先检查是否存在 DROP TABLE IF EXISTS table_name; -- 解决方案2:使用IF NOT EXISTS CREATE TABLE IF NOT EXISTS table_name ( ... ); ``` 2. **权限问题** - 检查文件权限 - 验证用户权限 - 确认数据库可写 ### 性能问题 1. **索引使用** - 合理创建索引 - 避免过多索引 - 监控索引性能 2. **约束开销** - 权衡约束和性能 - 适当使用触发器 - 考虑批量操作 ## 总结 创建数据表是数据库设计的基础: - 使用合适的数据类型 - 设置必要的约束 - 遵循命名规范 - 考虑性能影响 建议: - 仔细规划表结构 - 合理使用约束 - 注意命名规范 - 考虑未来扩展