SQL也疯狂:MySQL绘制简单几何图形(2013-04-12)

本文通过SQL SELECT语句而非存储过程,演示如何在MySQL中绘制简单的几何图形,如横线、竖线、斜线、XX、矩形、等腰三角形、正弦曲线和圆形,加深对SQL理解。
摘要由CSDN通过智能技术生成

前言

  • 用SQL SELECT 语句而非存储过程来画基本几何图形,以加深对 SELECT 语句的理解。因为 SELECT 语句隐含了一个或多个循环,看上去只是一个语句,其实包含了一个完整的程序所包含的顺序、分支、循环,因此不必用存储过程就能实现一般的程序的功能

准备数据

  • 需要有一个表有 100 行以上的数据,数据是什么没关系,因为下面的语句已经避开使用数据库记录中的数据了。如果没有现成的就使用如下代码生成一个吧:
    语句
    DELIMITER ;;
    
    DROP PROCEDURE IF EXISTS test_num;;
    
    CREATE PROCEDURE test_num(MAX_COUNT INTEGER)
    BEGIN
    	DECLARE i INTEGER;
    	SET i = 0;
    
    	DROP TABLE IF EXISTS number;
    	CREATE TABLE number(num INT(10), PRIMARY KEY (num));
    
    	WHILE i < MAX_COUNT DO
    		INSERT INTO number(num) VALUES (i);
    		SET i = i + 1;
    	END WHILE;
    END;;
    
    DELIMITER ;
    
    CALL test_num(100);
    

开始

  1. 画横线
    语句
    SET @w := 24;  # 宽
    SELECT repeat("*", @w) AS line;
    
    结果
    +--------------------------+
    | line                     |
    +--------------------------+
    | ************************ |
    +--------------------------+
    
  2. 画竖线
    语句
    SET @h := 12;  # 高
    SET @y := 0;   # y 座标
    
    SELECT "*" AS line
    FROM number
    WHERE @y < @h and @y := @y + 1;
    
    结果
    +------+
    | line |
    +------+
    | *    |
    | *    |
    | *    |
    | *    |
    | *    |
    | *    |
    | *    |
    | *    |
    | *    |
    | *    |
    | *    |
    | *    |
    +------+
    
  3. 画斜线
    语句
    SET @h := 12;   # 高
    SET @y := 0;    # y 座标
    SET @rate := 2; # x y 座标比例(斜率倒数)
    
    SELECT lpad("*", @y * @rate, " ") AS line
    FROM number
    WHERE @y < @h and @y := @y + 1;
    
    结果
    +--------------------------+
    | line                     |
    +--------------------------+
    |  *                       |
    |    *                     |
    |    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值