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

问题:

请帮我生成一个用户表,要求先给出建表语句,再给出插入语句,最后给出查询语句豆包会返回对应的create开头insert开头select开头的sql语句:
– 创建瓦的英雄榜单

DDL

在这里插入图片描述

DML

在这里插入图片描述

DQL

在这里插入图片描述

MySQL小游戏

– 1. 创建临时表存储扑克牌基础数据(运行后自动销毁)
DROP TEMPORARY TABLE IF EXISTS poker_cards;
CREATE TEMPORARY TABLE poker_cards (
card_id INT AUTO_INCREMENT PRIMARY KEY, – 牌唯一ID
suit VARCHAR(10), – 花色
point VARCHAR(2), – 点数(如2、J、A)
point_value INT – 点数对应的值(用于比大小)
);

– 2. 插入52张扑克牌数据到临时表
INSERT INTO poker_cards (suit, point, point_value)
SELECT
suit,
point,
CASE
WHEN point = ‘J’ THEN 11
WHEN point = ‘Q’ THEN 12
WHEN point = ‘K’ THEN 13
WHEN point = ‘A’ THEN 14
ELSE CAST(point AS UNSIGNED)
END AS point_value
FROM (
– 生成花色
SELECT ‘黑桃’ AS suit UNION ALL
SELECT ‘红桃’ UNION ALL
SELECT ‘梅花’ UNION ALL
SELECT ‘方块’
) AS suits,
(
– 生成点数
SELECT ‘2’ AS point UNION ALL SELECT ‘3’ UNION ALL SELECT ‘4’ UNION ALL SELECT ‘5’ UNION ALL
SELECT ‘6’ UNION ALL SELECT ‘7’ UNION ALL SELECT ‘8’ UNION ALL SELECT ‘9’ UNION ALL
SELECT ‘10’ UNION ALL SELECT ‘J’ UNION ALL SELECT ‘Q’ UNION ALL SELECT ‘K’ UNION ALL SELECT ‘A’
) AS points;

– 3. 创建存储过程:扑克牌比大小游戏
DROP PROCEDURE IF EXISTS poker_compare_game;
DELIMITER // – 临时修改语句结束符为//,避免存储过程内的;触发提前结束
CREATE PROCEDURE poker_compare_game()
BEGIN
– 声明变量存储游戏结果
DECLARE player_total INT DEFAULT 0; – 玩家组总点数
DECLARE computer_total INT DEFAULT 0; – 电脑组总点数
DECLARE result VARCHAR(20); – 胜负结果

-- 临时表存储随机选出的6张牌
DROP TEMPORARY TABLE IF EXISTS random_6_cards;
CREATE TEMPORARY TABLE random_6_cards AS
SELECT suit, point, point_value
FROM poker_cards
ORDER BY RAND()  -- 随机排序
LIMIT 6;         -- 选取前6张

-- 临时表存储玩家的3张牌(前3张)
DROP TEMPORARY TABLE IF EXISTS player_cards;
CREATE TEMPORARY TABLE player_cards AS
SELECT * FROM random_6_cards LIMIT 3;

-- 临时表存储电脑的3张牌(后3张)
DROP TEMPORARY TABLE IF EXISTS computer_cards;
CREATE TEMPORARY TABLE computer_cards AS
SELECT * FROM random_6_cards LIMIT 3, 3;

-- 计算玩家组总点数
SELECT SUM(point_value) INTO player_total FROM player_cards;
-- 计算电脑组总点数
SELECT SUM(point_value) INTO computer_total FROM computer_cards;

-- 判断胜负
IF player_total > computer_total THEN
    SET result = '玩家获胜!';
ELSEIF player_total < computer_total THEN
    SET result = '电脑获胜!';
ELSE
    SET result = '平局!';
END IF;

-- 输出游戏结果
SELECT '===== 扑克牌比大小游戏结果 =====' AS game_title;
SELECT '玩家的牌:' AS group_name, suit, point, point_value FROM player_cards;
SELECT CONCAT('玩家总点数:', player_total) AS player_total_point;
SELECT '电脑的牌:' AS group_name, suit, point, point_value FROM computer_cards;
SELECT CONCAT('电脑总点数:', computer_total) AS computer_total_point;
SELECT CONCAT('最终结果:', result) AS final_result;

-- 清理临时表(可选,临时表会话结束后自动销毁)
DROP TEMPORARY TABLE IF EXISTS random_6_cards;
DROP TEMPORARY TABLE IF EXISTS player_cards;
DROP TEMPORARY TABLE IF EXISTS computer_cards;

END //
DELIMITER ; – 恢复语句结束符为;

– 4. 运行游戏存储过程(执行这行即可启动游戏)
CALL poker_compare_game();

– 5. 清理基础牌库临时表(可选)
DROP TEMPORARY TABLE IF EXISTS poker_cards;

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐