写一段代码,在表Students_8208210915中自动产生100条记录,其中女生约占30%
时间: 2024-04-07 19:28:04 浏览: 19
以下是一段 SQL 代码,可以在表 `Students_8208210915` 中自动生成 100 条记录,其中约 30% 的学生是女生:
```sql
-- 生成 100 条学生记录,其中女生约占 30%
INSERT INTO Students_8208210915 (Sno, Sname, Gender, Birthday)
SELECT
ROW_NUMBER() OVER (ORDER BY a.object_id) AS Sno,
CONCAT('Student', ROW_NUMBER() OVER (ORDER BY a.object_id)) AS Sname,
CASE WHEN ABS(CHECKSUM(NEWID())) % 10 < 3 THEN '女' ELSE '男' END AS Gender,
DATEADD(DAY, ABS(CHECKSUM(NEWID())) % 365 * -1, GETDATE()) AS Birthday
FROM sys.all_objects a
CROSS JOIN sys.all_objects b
WHERE a.object_id % 100 = 0 AND b.object_id % 100 = 0
ORDER BY Sno;
```
在上述 SQL 代码中,使用 `ROW_NUMBER() OVER (ORDER BY a.object_id)` 生成学号,使用 `CONCAT('Student', ROW_NUMBER() OVER (ORDER BY a.object_id))` 生成学生姓名。使用 `CASE WHEN ABS(CHECKSUM(NEWID())) % 10 < 3 THEN '女' ELSE '男' END` 生成学生性别,其中 `ABS(CHECKSUM(NEWID())) % 10` 表示生成一个 0~9 之间的随机数,如果这个数小于 3,就生成女性,否则生成男性。使用 `DATEADD(DAY, ABS(CHECKSUM(NEWID())) % 365 * -1, GETDATE())` 生成学生生日,其中 `ABS(CHECKSUM(NEWID())) % 365` 表示生成一个 0~364 之间的随机数,表示学生出生日期离今天的天数,`DATEADD` 函数将这个天数加到当前日期上,生成学生生日。最后使用 `ORDER BY Sno` 对学生记录按照学号排序。