SQLite建表语句示例(含所有数据类型、索引、自增主键、唯一索引)

以下是 SQLite 建表语句的示例,包含了所有常见数据类型、自增主键、索引、唯一索引等特性:

CREATE TABLE example_table (
    -- 自增主键
    id INTEGER PRIMARY KEY AUTOINCREMENT,

    -- 常见数据类型
    name TEXT NOT NULL,                     -- 文本类型
    age INTEGER,                            -- 整数类型
    salary REAL,                            -- 浮点类型
    is_active BOOLEAN DEFAULT 1,            -- 布尔类型(SQLite 用 0 和 1 表示)
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- 日期时间类型,默认当前时间
    description TEXT,                       -- 长文本类型
    binary_data BLOB,                       -- 二进制类型

    -- 唯一约束
    email TEXT UNIQUE,                      -- 唯一索引

    -- 索引
    INDEX idx_name (name),                  -- 普通索引
    UNIQUE INDEX idx_email_unique (email)   -- 唯一索引
);

说明

  1. 自增主键

    • id INTEGER PRIMARY KEY AUTOINCREMENT:定义一个自增的主键字段。
  2. 常见数据类型

    • TEXT:文本类型,用于存储字符串。
    • INTEGER:整数类型,用于存储整数。
    • REAL:浮点类型,用于存储小数。
    • BOOLEAN:布尔类型,SQLite 中通常用 01 表示 FalseTrue
    • DATETIME:日期时间类型,DEFAULT CURRENT_TIMESTAMP 表示默认值为当前时间。
    • BLOB:二进制类型,用于存储二进制数据。
  3. 唯一约束

    • UNIQUE:确保字段的值唯一。
  4. 索引

    • INDEX:创建普通索引,提高查询性能。
    • UNIQUE INDEX:创建唯一索引,确保索引字段的值唯一。

示例数据插入

INSERT INTO example_table (name, age, salary, is_active, email, description, binary_data)
VALUES ('John Doe', 30, 50000.50, 1, 'john.doe@example.com', 'A sample description', X'010203');

查询示例

-- 查询所有数据
SELECT * FROM example_table;

-- 按条件查询
SELECT * FROM example_table WHERE age > 25;

-- 使用索引字段查询
SELECT * FROM example_table WHERE name = 'John Doe';

注意事项

  1. SQLite 的数据类型

    • SQLite 是动态类型系统,即使定义了数据类型,也可以存储其他类型的数据。
    • 例如,TEXT 字段可以存储整数或浮点数。
  2. 自增主键的限制

    • 如果删除表中的某些行,自增主键不会重新填充空缺的值。
    • 如果需要严格的连续自增值,可以使用 ROWID,但不推荐。
  3. 索引的使用

    • 索引可以提高查询性能,但会增加插入、更新和删除操作的开销。
    • 对于频繁更新的字段,谨慎使用索引。

通过以上示例,你可以在 SQLite 中创建功能完善的表,并利用索引和约束优化数据管理。

### SQLite语法及示例SQLite 中,创是一个基本操作,用于定义存储数据的结构和约束条件。以下是关于 SQLite 的相关说明。 #### 1. 基本语法 SQLite 的 `CREATE TABLE` 语句遵循 SQL 标准语法,允许指定列名、数据类型以及可选的约束条件[^1]。其通用形式如下: ```sql CREATE TABLE table_name ( column1 datatype constraints, column2 datatype constraints, ... ); ``` 其中: - **table_name** 是要创的新名称。 - **columnN** 定义每一列的名字及其属性。 - **datatype** 指定每列的数据类型(如 TEXT, INTEGER, REAL 等)。 - **constraints** 可能包括 NOT NULL、PRIMARY KEY、FOREIGN KEY 等附加规则。 #### 2. 数据类型的使用 SQLite 支持动态类型系统,尽管如此,在声明时仍需提供数据类型提示以便优化查询性能。常见的数据类型包括但不限于: - `TEXT`: 存储字符串。 - `INTEGER`: 存储整数。 - `REAL`: 存储浮点数值。 - `BLOB`: 存储二进制大对象。 #### 3. 示例代码 下面展示了一个具体的例子,演示如何通过 SQL 语句一张名为 `users` 的: ```sql CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER CHECK(age >= 0), email TEXT UNIQUE ); ``` 此脚本完成以下功能: - 设置 `id` 列为主键并启用自动长机制。 - 要求 `name` 字段不能为空。 - 对 `age` 添加校验逻辑以确保年龄非负。 - 施加唯一性限制到 `email` 上防止重复记录。 对于更复杂的场景比如虚拟,则需要额外调用特定 API 函数 `sqlite3_declare_vtab()` 来注册自定义模式给核心引擎识别[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值