mysql写一段代码,在表Students(Sno,Sname, Gender, Birthday)中自动产生100条记录,其中女生约占30%
时间: 2024-03-16 17:44:20 浏览: 38
可以使用以下 MySQL 代码实现:
```sql
-- 创建表
CREATE TABLE Students (
Sno INT PRIMARY KEY AUTO_INCREMENT,
Sname VARCHAR(20) NOT NULL,
Gender VARCHAR(10) NOT NULL,
Birthday DATE NOT NULL
);
-- 插入数据
INSERT INTO Students (Sname, Gender, Birthday)
SELECT
CONCAT('Student', LPAD(ROW_NUMBER() OVER(), 3, '0')), -- 自动生成学生姓名
CASE WHEN RAND() < 0.3 THEN 'Female' ELSE 'Male' END, -- 随机生成性别,女生约占30%
DATE_ADD('1990-01-01', INTERVAL FLOOR(RAND() * 365 * 10) DAY) -- 随机生成生日在1990年至1999年之间
FROM
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) t1, -- 生成5行
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) t2 -- 生成5列
LIMIT 100; -- 限制总共生成100条记录
```
这段代码和上面的类似,只是针对不同的表结构做了一些修改。其中,Sno 字段使用了 AUTO_INCREMENT 关键字,表示自动生成学号。生成学生姓名的方式和之前相同,使用 ROW_NUMBER() 函数自动生成递增的数字,再使用 CONCAT() 函数拼接字符串。生成性别的方式也和之前类似,使用 CASE WHEN 语句判断随机数是否小于 0.3,如果是则表示为女性,否则为男性。生成生日的方式使用了 DATE_ADD() 函数,将一个固定的日期 '1990-01-01' 加上一个随机的天数(范围在 0 ~ 3650 之间),从而生成在 1990 年至 1999 年之间的随机生日。
最后,使用 LIMIT 关键字限制总共生成 100 条记录。