古旧的sql应该有点新样子

本文探讨了SQL语言的一些不足之处,如冗余性和不便捷性,并提出了几种改进思路,包括简化单表和多表查询语法,以及增强SQL的灵活性。同时推荐了一个名为HTSQL的项目作为SQL的潜在替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

sql曾经让人惊喜。一个初哥刚刚写程序的时候,发现需要连接两张表,并且做些排序之类的工作。在不知道sql的情况下,觉得真的很麻烦:需要自己做循环,装入A和b两张表,

 

循环一个,然后根据键值和另一个表的键值匹配,然后自己做排序。想起来好头痛。我和他说,OK,这是sql可以搞定的。

只要select * from a join b on a.id =b.aid order by c 。就这么简单。别笑他,他觉得兴奋而雀跃。

 

10年过去了,一点点发现sql真的很有改进空间。试着举例。

 

1. 单表查询可以更加简洁。

   当我们需要带条件的查询一个表的时候,需要

    select * from A where b = '' and c = 0 

   难道不可以

    A?b=''&c=0 

   看起来是不是同样的效果,但是清爽的多呢?

 

2. 多表查询可以更简洁。

   当我需要join的时候,比如

   select * from a join b on a.id =b.aid order by c  

   好,我就这样写吧。

   然后当我在其他地方需要a和b的时候,我还是一样的需要

    a join b on a.id =b.aid 

   一个系统,这样的join非常多,于是这个on条件就要到处写。

   可真实情况是:一旦表设计确定,a和b的链接基本上都是用a.id ,b.aid这样的主键和外键来链接的。

   这样在系统中就有大量的重复了。

 

   为什么不一次配置,然后到处使用这样的on条件呢?

 

    比如:

     set a join b on a.id =b.aid 

     select * from a ,b order by c

 

3. sql很笨。

  有时候,我希望来一个select a* from b 把b表的所有a开头的字段都选择出来,可是sql不行。它一定要select ad,ae,af from b 一板一眼的把所有需要的字段写完。

  或者我希望把b表的除了a字段外的其他字段选择出来,比如select [ all field except a] from b 。当然这样也是不行的。

 

可见,sql是冗余的,是不够清爽的。

 

有人说,hi,语法吗?关系不大了。请问为什么很多人喜欢c的语法,而不喜欢pascal的呢?为什么大量的语言都采用了c的语法,而不是pascal,或者该死的cobol呢?程序员总是

 

喜欢更加简洁的。

 

有人说,hi,重复一点有什么关系呢,还不是为了让人更加容易阅读吗?可是让人容易阅读并不非要冗余。重复带来的问题就很麻烦了。重构技术解决的就是冗余问题,sql生出来

 

的年代太早,并不会考虑到重构技术的要求;

 

有人说,hi,sql是标准啊。没有错,标准是够害人的。这些年计算机通用语言竞争激烈,方兴未艾,而sql一家独大也久矣,我们至少应该对新的sql寄予希望。

 

sql太老了,并且经年不变,需要引入新的血液了。

 

我认为htsql就是这样的尝试,它定位于初哥使用,而我的看法是它应该用htsql的这样的语言设计替代掉苍老的sql。

 

看看这个地址,很简单。也许你会喜欢它。

http://htsql.org/doc/tutorial.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值