使用Yashan SQLab祝你新年快乐!
崖山数据库(YashanDB)是深圳计算科学研究院研发的一款国产数据库平台,自己原创了一些如有界计算、近似计算、并行可扩展和跨模融合计算理论,宣称100%平替Oracle数据库。而SQLab是官方的一个在线体验崖山数据库的网站,登陆后可以免安装进行增删改查体验,可以对崖山数据库进行初步的了解。
SQL语言是一种图灵完备语言,这意味着它不仅可以进行数据查询操作,还能用来写一些简单逻辑的程序。 正好马上要到2025年了,使用SQL打印出一个HAPPY 2025
在这里祝大家新年快乐!
1.SQLab体验
进入SQLab网站,使用手机号登录即可进入控制台。
主页有崖山实验室(体验数据库的)和笔记广场。里面有很多大佬写的不同情形的解决方案。
下面还有一个智能问答的按钮,是一个AI助手,sql运行出现错误的时候可以试着问一下它,效果很棒。
点击“崖山实验室”即可进入SQL环境,会分配一个YashanDB 23.2
的环境供执行命令。
上方分别是五个按钮:运行代码、清除输入框、一键美化sql命令(把一大团代码按照逻辑变成一行一行的)、切换用户(自定义登录用户)和重置环境(一键初始化!)
在输入框内输入sql代码后,点击运行,即可在页面下方显示结果。
写个简单的sql测试下吧:
CREATE TABLE test (
id NUMBER PRIMARY KEY,
username VARCHAR2(50) NOT NULL,
password VARCHAR2(50) NOT NULL,
nickname VARCHAR2(50)
);
INSERT INTO test (id, username, password, nickname)
VALUES (1, 'LiTianSuo', '114514', 'TianSuoHaoer');
COMMIT;
SELECT * FROM test;
DROP TABLE test CASCADE CONSTRAINTS;
这段代码实现了增删查:创建一个表test,插入一个数据,查询,随后删除数据。
运行后即可在result
页签内看到数据表。
当然想看执行结果只要切换到Console页签内即可:
当然,运行sql语句时可能出现一些问题,崖山数据库提供了错误代码,可以在错误码 | YashanDB Doc里找到问题原因和解决方法。
在左侧导航栏中有我的对象
一项,可以查看SQLAB下创建的所有对象。在工作台中执行SQL创建的对象会出现在这里,点开即可看到对应的逻辑信息。如表名,状态,列信息,表上的索引,触发器,约束等内容,可以可视化地了解到表的详细信息。
表信息一目了然,非常滴好用
下方还有我的笔记
、笔记广场
等项,可以看到大佬们的sql笔记,可能会有帮助。
2.用YaSQL画新年快乐!
SQL语言是一种图灵完备语言,可以用来写一些简单逻辑的程序。 再加上崖山数据库提供的SQLab,可以在网页上运行SQL脚本,不需要非在本地部署一个数据库。
首先我们需要定义两个CTE(公用表表达式): letter_parts 和 happy_2025。letter_parts用来生成行数标识符,而happy_2025包含使用*
构成每个字母和数字的逻辑。最后使用SELECT语句负责将所有部分组装成最终的图案,并按行输出。
使用版本:YashanDB 23.2,SQLab 24.1
ps:我的笔记发布在了笔记广场,欢迎参观(>_<)
代码如下:
WITH
letter_parts AS (
SELECT level AS row_num
FROM dual
CONNECT BY level <= 5
),
happy_2025 AS (
-- Letter H
SELECT row_num, 1 as position,
CASE row_num
WHEN 1 THEN '*' || RPAD(' ', 4) || '*'
WHEN 2 THEN '*' || RPAD(' ', 4) || '*'
WHEN 3 THEN RPAD('*', 6, '*')
WHEN 4 THEN '*' || RPAD(' ', 4) || '*'
WHEN 5 THEN '*' || RPAD(' ', 4) || '*'
END AS letter
FROM letter_parts
UNION ALL
-- Letter A
SELECT row_num, 2,
CASE row_num
WHEN 1 THEN ' ' || RPAD('*', 4, '*') || ' '
WHEN 2 THEN '*' || RPAD(' ', 4) || '*'
WHEN 3 THEN RPAD('*', 6, '*')
WHEN 4 THEN '*' || RPAD(' ', 4) || '*'
WHEN 5 THEN '*' || RPAD(' ', 4) || '*'
END
FROM letter_parts
UNION ALL
-- Letter P
SELECT row_num, 3,
CASE row_num
WHEN 1 THEN RPAD('*', 5, '*') || ' '
WHEN 2 THEN '*' || RPAD(' ', 4) || '*'
WHEN 3 THEN RPAD('*', 5, '*') || ' '
WHEN 4 THEN '*' || RPAD(' ', 5)
WHEN 5 THEN '*' || RPAD(' ', 5)
END
FROM letter_parts
UNION ALL
-- Letter P
SELECT row_num, 4,
CASE row_num
WHEN 1 THEN RPAD('*', 5, '*') || ' '
WHEN 2 THEN '*' || RPAD(' ', 4) || '*'
WHEN 3 THEN RPAD('*', 5, '*') || ' '
WHEN 4 THEN '*' || RPAD(' ', 5)
WHEN 5 THEN '*' || RPAD(' ', 5)
END
FROM letter_parts
UNION ALL
-- Letter Y
SELECT row_num, 5,
CASE row_num
WHEN 1 THEN '*' || RPAD(' ', 4) || '*'
WHEN 2 THEN ' ' || '*' || RPAD(' ', 2) || '*' || ' '
WHEN 3 THEN RPAD(' ', 2) || RPAD('*', 2, '*') || RPAD(' ', 2)
WHEN 4 THEN RPAD(' ', 2) || '*' || RPAD(' ', 3)
WHEN 5 THEN RPAD(' ', 2) || '*' || RPAD(' ', 3)
END
FROM letter_parts
UNION ALL
-- Number 2
SELECT row_num, 6,
CASE row_num
WHEN 1 THEN ' ' || RPAD('*', 4, '*') || ' '
WHEN 2 THEN '*' || RPAD(' ', 4) || '*'
WHEN 3 THEN RPAD(' ', 3) || '*' || RPAD(' ', 2)
WHEN 4 THEN ' ' || '*' || RPAD(' ', 4)
WHEN 5 THEN RPAD('*', 6, '*')
END
FROM letter_parts
UNION ALL
-- Number 0
SELECT row_num, 7,
CASE row_num
WHEN 1 THEN ' ' || RPAD('*', 4, '*') || ' '
WHEN 2 THEN '*' || RPAD(' ', 4) || '*'
WHEN 3 THEN '*' || RPAD(' ', 4) || '*'
WHEN 4 THEN '*' || RPAD(' ', 4) || '*'
WHEN 5 THEN ' ' || RPAD('*', 4, '*') || ' '
END
FROM letter_parts
UNION ALL
-- Number 2
SELECT row_num, 8,
CASE row_num
WHEN 1 THEN ' ' || RPAD('*', 4, '*') || ' '
WHEN 2 THEN '*' || RPAD(' ', 4) || '*'
WHEN 3 THEN RPAD(' ', 3) || '*' || RPAD(' ', 2)
WHEN 4 THEN ' ' || '*' || RPAD(' ', 4)
WHEN 5 THEN RPAD('*', 6, '*')
END
FROM letter_parts
UNION ALL
-- Number 5
SELECT row_num, 9,
CASE row_num
WHEN 1 THEN RPAD('*', 6, '*')
WHEN 2 THEN '*' || RPAD(' ', 5)
WHEN 3 THEN RPAD('*', 5, '*') || ' '
WHEN 4 THEN RPAD(' ', 5) || '*'
WHEN 5 THEN RPAD('*', 5, '*') || ' '
END
FROM letter_parts
)
SELECT
LISTAGG(letter || ' ') WITHIN GROUP (ORDER BY position) AS text_line
FROM
happy_2025
GROUP BY
row_num
ORDER BY
row_num;
复制进命令行,点击运行
,即可在result里看到输出。
当然由于text_line实际上可能有自己的数据美化逻辑,实际上打印出来的应该是这样的:
TEXT_LINE
----------------------------------------------------------------
* * **** ***** ***** * * **** **** **** ******
* * * * * * * * * * * * * * * * *
****** ****** ***** ***** ** * * * * *****
* * * * * * * * * * * *
* * * * * * * ****** **** ****** *****
5 rows fetched.
最后祝大家新年快乐啦,2025一切顺心,万事如意!★,°:.☆( ̄▽ ̄)/$:.°★ 。