如何规范书写sql语句,让代码更加优雅

1.首先uf-8编码

        UTF-8编码是一种针对Unicode的可变长度字符编码,可以表示任何字符,在国际化应用和多语言环境中非常常见。因此,在编写SQL语句时,建议使用UTF-8编码,避免出现乱码等问题。

2.主键int的定义类型应该是bigint 无字符

          主键是数据库表中的关键字段,并且用于确保数据唯一性。在设计表结构时应该将主键设置为最小的适当类型,因为较小的数据类型需要更少的存储空间,并可以更快地插入、更新、删除数据。对于大型数据集,建议使用BIGINT类型作为主键。

3.varchar类型默认为255长度,我们一般需要将其修改为32长度

        VARCHAR类型是一种可变长度的字符串类型,可以存储最多65535个字符。在某些情况下,使用VARCHAR类型需要更多的存储空间,因为它需要在表中存储字符串长度信息。如果某个字段长度不太可能超过32个字符,则可以将其长度限制为32,从而降低表的存储空间。

4,每一个字段都需要加上非空的字段

        在数据库中,非空约束是指不允许某些列为空。为每个字段添加非空约束,可以确保在插入或更新数据时字段不会为空,并且可以提高数据完整性和准确性。这对于关键数据表格尤其重要,这样就可以避免数据缺失、逻辑错误等问题。

5.缩进

建议使用缩进方式,尤其是在复杂的SQL语句中缩进可以使SQL语句更加易读。

SQL语句在书写时,可能会包含复杂的子查询、嵌套语句等,这些语句层次较深,如果不使用缩进,那么整个SQL语句可能会显得比较混乱,不易于阅读和理解。如果使用缩进将SQL语句的层次结构显示出来,就可以更清晰地看出各个语句块的作用和关系,从而更容易理解和维护。

例如,下面是一个包含子查询的SQL语句:

SELECT product_name, product_price
FROM products
WHERE product_id IN (SELECT product_id
                     FROM order_items
                     WHERE order_id = 12345);

如果不使用缩进,整个SQL语句可能会比较混乱,不易于阅读。但是如果将其缩进,则可以非常清楚地看出主查询和子查询间的关系,并且更加易于理解。

SELECT product_name, product_price
FROM products
WHERE product_id IN (
    SELECT product_id
    FROM order_items
    WHERE order_id = 12345
);

通过缩进,SQL语句看起来像是一棵树,从而更容易理解它的逻辑结构。所以,建议在编写SQL语句时,使用缩进方式,尤其是在复杂的SQL语句中,缩进可以使SQL语句更加易读,易于维护。

6.大小写

建议使用统一的大小写约定,如所有关键字大写,表名、字段名小写。这样做可以增加可读性,同时也有助于避免错误。

7.注释

合理的注释可以提高代码可读性和维护性,建议在SQL中加入必要的注释说明,如各个语句块的用途、重要变量的含义等等。

8.格式化

将SQL语句格式化成易读的形式可以方便开发者查看和调试,可以使用在线SQL语句格式化工具或者IDE自带的SQL格式化功能进行格式化。

SQL语句在编写过程中可能会过于复杂,嵌套过多,难以阅读和理解。为了让SQL语句更加易读、易于维护,可以使用SQL格式化工具进行格式化。

SQL格式化工具可以将SQL语句或者脚本进行格式化,包括缩进、大小写、换行、字符引号等处理,让其更加美观易读,同时也便于开发者进行查看和调试。

可以使用在线SQL格式化工具将SQL语句复制到该工具中进行格式化,也可以将IDE(如SQL Server Management Studio、Oracle SQL Developer等)的自带格式功能设置好后格式化SQL代码。

将SQL语句格式化成易读的形式可以让开发者更容易理解和修改代码,特别是在需要对复杂查询进行优化或调试时,格式化工具可以帮助开发者快速定位问题所在。此外,格式化后的SQL代码还可以降低人为因素引起的错误,提高生产效率并增加代码的可维护性和可读性。

9.参数化查询

不要直接将参数作为SQL语句的一部分拼接在一起,而应该使用参数化查询的方式,防止SQL注入攻击。

SQL注入是一种常见的网络攻击方法,攻击者通过在输入框中输入恶意的SQL代码,来访问或者操作不应该访问或操作的数据,甚至使系统受到破坏。而参数化查询使用参数占位符(如:username)来代替 SQL 语句中的实际参数,然后再将实际参数传递到占位符中,从而避免了SQL注入的风险。

例如,以下是一个存在SQL注入风险的SQL语句:

"SELECT * FROM users WHERE name='" + username + "' AND password='" + password + "'"

当攻击者在输入框中输入特殊字符时,可以改变原始意图并且绕过登录验证。因此,为了避免SQL注入攻击,我们可以使用参数化查询来改写这个SQL语句:

"SELECT * FROM users WHERE name=:name AND password=:password"

在上面的SQL语句中,我们使用了参数占位符(:name 和 :password ),然后再将实际参数传递到这些占位符中。这样做既能避免SQL注入攻击,又能保证代码的安全。

10.不要用SELECT *

在实际应用中,应该明确指定需要查询哪些列,而不是使用通配符SELECT *。具体原因是这样可以减少传输的数据量,提高查询效率,并且也可以避免一些混淆和安全问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ADRU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值