MySQL学习笔记DDL/DML/DQL语句的AI学习-2026-03-04

MySQL学习笔记DDL/DML/DQL语句的AI学习

使用AI生成DDL/DML/DQL语句

DDL

建表语句
问题:
请帮我生成一个用户表,要求先给出建表语句,再给出插入语句,最后给出查询语句,豆包会返回对应的creale开头select开头的SQL语句:

CREATE TABLE IF NOT EXISTS wk_hero_ranking (
    id BIGINT UNSIGNED AUTO_INCREMENT COMMENT '主键ID(自增)',
    hero_code VARCHAR(20) NOT NULL COMMENT '英雄编码(官方唯一标识,如luban7)',
    hero_name VARCHAR(30) NOT NULL COMMENT '英雄名称(如鲁班七号)',
    hero_type VARCHAR(15) NOT NULL COMMENT '英雄定位(坦克/战士/刺客/法师/射手/辅助)',
    profession_route VARCHAR(10) NOT NULL COMMENT '分路(对抗路/发育路/中路/游走/打野)',
    usage_rate DECIMAL(4,2) NOT NULL COMMENT '使用率(百分比,0.00-100.00)',
    ban_rate DECIMAL(4,2) NOT NULL COMMENT '禁用率(百分比)',
    pick_rate DECIMAL(4,2) NOT NULL COMMENT '选取率(百分比)',
    kill_rate DECIMAL(4,2) NOT NULL COMMENT '击杀率(百分比)',
    death_rate DECIMAL(4,2) NOT NULL COMMENT '死亡率(百分比)',
    assist_rate DECIMAL(4,2) NOT NULL COMMENT '助攻率(百分比)',
    win_rate DECIMAL(4,2) NOT NULL COMMENT '胜率(百分比)',
    kda DECIMAL(3,2) NOT NULL COMMENT 'KDA值((击杀+助攻)/死亡)',
    season VARCHAR(10) NOT NULL COMMENT '赛季(如S37、S38)',
    data_date DATE NOT NULL COMMENT '数据统计日期',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '数据创建时间',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '数据更新时间',
    PRIMARY KEY (id),
    UNIQUE KEY uk_hero_season_date (hero_code, season, data_date) COMMENT '唯一约束:同一赛季同一日期同一英雄仅一条数据',
    KEY idx_hero_type (hero_type) COMMENT '英雄定位索引',
    KEY idx_profession_route (profession_route) COMMENT '分路索引',
    KEY idx_win_rate (win_rate) COMMENT '胜率索引',
    KEY idx_season_date (season, data_date) COMMENT '赛季+日期联合索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='王者荣耀英雄使用率/击杀率/胜率等榜单数据表';

在这里插入图片描述

DML

插入语句

-- 插入S37赛季2026-03-04的英雄榜单数据
INSERT INTO wk_hero_ranking (
    hero_code, hero_name, hero_type, profession_route,
    usage_rate, ban_rate, pick_rate, kill_rate, death_rate,
    assist_rate, win_rate, kda, season, data_date
) VALUES
('luban7', '鲁班七号', '射手', '发育路', 31.25, 7.89, 28.56, 12.87, 19.65, 8.92, 48.78, 1.10, 'S37', '2026-03-04'),
('da ji', '妲己', '法师', '中路', 39.56, 3.21, 37.89, 11.56, 18.45, 7.89, 51.45, 1.05, 'S37', '2026-03-04'),
('kai', '铠', '战士', '对抗路', 25.89, 10.12, 22.78, 15.34, 16.12, 7.23, 50.23, 1.40, 'S37', '2026-03-04'),
('caiwenji', '蔡文姬', '辅助', '游走', 21.45, 14.56, 18.78, 2.67, 13.23, 29.87, 52.67, 2.46, 'S37', '2026-03-04'),
('lanlingwang', '兰陵王', '刺客', '打野', 17.65, 18.90, 15.43, 17.89, 15.12, 6.34, 48.34, 1.60, 'S37', '2026-03-04'),
('niumowang', '牛魔', '坦克', '游走', 14.32, 11.45, 12.67, 5.12, 11.34, 27.89, 53.89, 2.91, 'S37', '2026-03-04'),
('buzhihuowu', '不知火舞', '法师', '中路', 10.89, 21.34, 8.76, 14.23, 17.65, 10.45, 51.12, 1.39, 'S37', '2026-03-04'),
('makeluobo', '马可波罗', '射手', '发育路', 22.78, 9.67, 20.56, 13.78, 18.45, 9.56, 49.56, 1.26, 'S37', '2026-03-04'),
('lvbu', '吕布', '战士', '对抗路', 19.65, 8.78, 17.45, 13.45, 14.67, 8.78, 49.89, 1.52, 'S37', '2026-03-04'),
('yao', '辅助', '游走', '游走', 29.78, 13.56, 27.65, 3.98, 12.89, 25.67, 47.98, 2.27, 'S37', '2026-03-04'),
('dianwei', '典韦', '战士', '打野', 16.54, 6.78, 15.34, 15.12, 16.78, 8.12, 49.45, 1.38, 'S37', '2026-03-04'),
('zhuangzhou', '庄周', '坦克', '游走', 12.45, 5.67, 11.89, 5.45, 12.12, 23.56, 51.78, 2.40, 'S37', '2026-03-04'),
('liubei', '刘备', '刺客', '打野', 8.76, 7.89, 7.65, 16.34, 14.56, 7.89, 48.90, 1.67, 'S37', '2026-03-04'),
('wangzhaojun', '王昭君', '法师', '中路', 27.65, 4.56, 26.89, 10.89, 17.34, 9.67, 50.78, 1.20, 'S37', '2026-03-04'),
('xiahoudun', '夏侯惇', '坦克', '对抗路', 13.89, 6.34, 12.78, 6.78, 11.89, 18.90, 50.45, 2.15, 'S37', '2026-03-04');

在这里插入图片描述

DQL

问题:豆包为我生成一个小游戏:

-- ===================== 猜数字游戏(1-100)- 完整可运行版 =====================
-- 第一步:创建专属游戏数据库(如果不存在),并切换到该数据库(核心修复)
CREATE DATABASE IF NOT EXISTS mysql_games 
DEFAULT CHARACTER SET utf8mb4 
DEFAULT COLLATE utf8mb4_unicode_ci;

-- 切换到游戏数据库(必须!否则会提示No database selected)
USE mysql_games;

-- 第二步:创建游戏数据存储表(仅首次运行需要,重复运行不影响)
DROP TABLE IF EXISTS guess_number_game;
CREATE TABLE IF NOT EXISTS guess_number_game (
    game_id INT UNSIGNED PRIMARY KEY DEFAULT 1,
    answer INT NOT NULL COMMENT '随机答案(1-100)',
    guess_count INT NOT NULL DEFAULT 0 COMMENT '猜测次数',
    last_guess INT COMMENT '上一次猜测的数字',
    game_status ENUM('playing', 'win', 'reset') NOT NULL DEFAULT 'reset' COMMENT '游戏状态'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='猜数字游戏数据存储表';

-- 第三步:初始化/重置游戏(每次想重新玩就执行这一段)
INSERT INTO guess_number_game (game_id, answer, guess_count, last_guess, game_status)
VALUES (1, FLOOR(RAND() * 100) + 1, 0, NULL, 'playing')
ON DUPLICATE KEY UPDATE 
    answer = FLOOR(RAND() * 100) + 1,
    guess_count = 0,
    last_guess = NULL,
    game_status = 'playing';

-- 初始化提示(隐藏答案版,想看答案就取消下面answer字段的注释)
SELECT '游戏开始!请猜1-100之间的整数' AS '游戏提示'
       -- , answer AS '【答案(测试用,实际玩请删除这行)】'
FROM guess_number_game;

-- 第四步:猜数字(核心交互语句,修改your_guess的值即可猜测)
SET @your_guess = 5; -- ********* 在这里修改你猜的数字 *********

-- 执行猜测逻辑
UPDATE guess_number_game 
SET 
    guess_count = guess_count + 1,
    last_guess = @your_guess,
    game_status = CASE 
        WHEN @your_guess = answer THEN 'win'
        ELSE 'playing'
    END
WHERE game_id = 1 AND game_status = 'playing';

-- 显示猜测结果
SELECT 
    CASE 
        WHEN game_status = 'win' THEN CONCAT('恭喜猜对!答案是', answer, ',你总共猜了', guess_count, '次🎉')
        WHEN @your_guess > answer THEN CONCAT('❌ 你猜的', @your_guess, '大了!再试试更小的数(已猜', guess_count, '次)')
        WHEN @your_guess < answer THEN CONCAT('❌ 你猜的', @your_guess, '小了!再试试更大的数(已猜', guess_count, '次)')
        ELSE '🔚 游戏已结束,执行第三步重置游戏重新开始'
    END AS '猜测结果'
FROM guess_number_game;

在这里插入图片描述

语句类别说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值