wpz
2025-07-02 da5249bf529d2d5e0f89aed5775b76a56d50dd8c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
-- 先删除可能已存在的表(避免重复创建错误)
DROP TABLE IF EXISTS users;
CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,  -- 自增主键
    username VARCHAR(16) NOT NULL UNIQUE,  -- 用户名(1-16字符)
    password VARCHAR(16) NOT NULL,        -- 密码(6-16字符)
    email VARCHAR(255) NOT NULL UNIQUE,    -- 电子邮箱
    tel VARCHAR(11) NOT NULL UNIQUE,      -- 手机号(11位)
    dept VARCHAR(16) NOT NULL,            -- 部门名称(1-16字符)
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  -- 创建时间
    
    -- 字段约束条件
    CHECK (length(username) BETWEEN 1 AND 16),  -- 用户名长度检查
    
    CHECK (length(password) BETWEEN 6 AND 16),  -- 密码长度检查
    CHECK (password GLOB '*[^a-zA-Z0-9_]*' = 0),  -- 密码字符检查
    
    CHECK (email LIKE '%_@__%.__%'),  -- 邮箱格式基础检查
    CHECK (email GLOB '*[^a-zA-Z0-9._%+-@]*' = 0),  -- 邮箱字符检查
    
    CHECK (length(tel) = 11),  -- 手机号长度检查
    CHECK (tel GLOB '1[3-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),  -- 手机号格式检查
    
    CHECK (length(dept) BETWEEN 1 AND 16)  -- 部门名称长度检查
);
 
-- 创建查询索引(提高查询性能)
CREATE INDEX idx_username ON users(username);  -- 用户名索引
CREATE INDEX idx_email ON users(email);       -- 邮箱索引
CREATE INDEX idx_tel ON users(tel);           -- 手机号索引