当然,以下是完整的SQL语句,用于创建`api_names`、`api_keys`表,以及可选的`api_usage`表。这些表将支持存储API名称、API-KEY信息,并可选地记录API的使用情况。 ### SQL 创建表的语句 ```sql -- 创建 users 表 DROP TABLE IF EXISTS "users"; CREATE TABLE "users" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "username" TEXT NOT NULL, "password" TEXT NOT NULL, "email" TEXT NOT NULL, "nikename" TEXT, "created_at" DATETIME DEFAULT CURRENT_TIMESTAMP, "updated_at" DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE ("username" ASC), UNIQUE ("email" ASC) ); -- 创建api_groups表 CREATE TABLE api_groups ( id INTEGER PRIMARY KEY AUTOINCREMENT, group_name TEXT NOT NULL UNIQUE, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 创建api_names表 CREATE TABLE api_names ( id INTEGER PRIMARY KEY AUTOINCREMENT, api_name TEXT NOT NULL UNIQUE, api_group_id INTEGER, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (api_group_id) REFERENCES api_groups(id) ON DELETE SET NULL ); -- 创建api_keys表 CREATE TABLE api_keys ( id INTEGER PRIMARY KEY AUTOINCREMENT, api_group_id INTEGER NOT NULL, api_key TEXT NOT NULL, category TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (api_group_id) REFERENCES api_groups(id) ON DELETE CASCADE ); -- 创建user_api_keys表 CREATE TABLE user_api_keys ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_api_key TEXT NOT NULL, user_id INTEGER, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 创建api_usage表(如果需要) CREATE TABLE api_usage ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_api_key_id INTEGER, api_key_id INTEGER, request_count INTEGER DEFAULT 0, last_used DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_api_key_id) REFERENCES user_api_keys(id), FOREIGN KEY (api_key_id) REFERENCES api_keys(id) ); ``` ### 说明 - **`api_names` 表**:存储唯一的API名称。 - **`api_keys` 表**:存储每个API名称对应的多个API-KEY,包括分类信息。`api_names_id`作为外键,关联到`api_names`表。 - **`user_api_keys` 表**:存储用户的API-KEY。 - **`api_usage` 表**(可选):记录API的使用情况,包括请求次数和最后使用时间。这个表可以用来监控API的使用情况,帮助管理API-KEY的使用限额。 这些SQL语句假设你使用的是MySQL数据库。如果你使用的是其他类型的数据库(如PostgreSQL、SQLite等),可能需要对SQL语句进行适当的调整。如果有任何问题或需要进一步的帮助,请随时告诉我。 ### 通过 api_name 查询 api_key 的 SQL 语句 ```sql SELECT ak.api_key FROM api_keys ak JOIN api_groups ag ON ak.api_group_id = ag.id JOIN api_names an ON an.api_group_id = ag.id WHERE an.api_name = 'your_api_name'; ```