Spaces:
Sleeping
Sleeping
当然,以下是完整的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'; | |
``` |