-- 先删除可能已存在的表(避免重复创建错误)
|
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); -- 手机号索引
|