SQL语句有误写法整理

  1. 判断数据库中某个字段是否为空:
select * from hi_comment c where c.blog_id = 2 and c.parent_id = null order by create_time desc

这样写是不行的,不能写=null,而应该用is null判断是否为空,is not null判断不为空:

select * from hi_comment c where c.blog_id = 2 and c.parent_id is null order by create_time desc
### SQL UPDATE 语句的标准写法 SQL `UPDATE` 语句用于修改已存在的表中的数据。其标准语法如下: ```sql UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; ``` #### 参数说明: - **table_name**: 需要更新的表名称。 - **column1, column2,...**: 表中列的名称。 - **value1, value2,...**: 列的新值。 - **condition**: 更新操作所基于的条件表达式。 如果没有指定 `WHERE` 子句,则会更新表中所有记录的数据[^5]。 --- ### 使用示例 以下是几个常见的 `UPDATE` 语句示例: #### 示例 1:简单更新单个字段 假设有一个名为 `employees` 的表,其中包含员工的信息。现在需要将员工编号为 `101` 的工资更改为 `8000`。 ```sql UPDATE employees SET salary = 8000 WHERE employee_id = 101; ``` 此语句仅更改符合条件(即 `employee_id = 101`)的那一行数据[^5]。 --- #### 示例 2:更新多个字段 如果需要同时更新多个字段,可以在 `SET` 子句中列出这些字段及其新值。例如,将员工编号为 `101` 的姓名和职位都进行更新: ```sql UPDATE employees SET first_name = 'John', last_name = 'Doe', position = 'Manager' WHERE employee_id = 101; ``` 这表示将该员工的名字设置为 `'John'`,姓氏设置为 `'Doe'`,并将其职位更改为 `'Manager'`[^5]。 --- #### 示例 3:带子查询的复杂更新 有时可能需要通过子查询来动态计算某些值。例如,在学生选课系统中,将课程名为 `"数据库原理与应用"` 对应的学生学号更新到另一个表中: ```sql UPDATE enrollment SET grade = 'A' WHERE student_id IN ( SELECT student.sno FROM student WHERE sname = '王华' ); ``` 这里使用了一个嵌套查询 (`IN`) 来匹配特定学生的学号,并为其成绩赋值为 `'A'`[^4]。 --- #### 示例 4:结合 LIMIT 进行分页更新 对于支持 `LIMIT` 关键字的数据库(如 MySQL),可以通过限制受影响的行数来进行部分更新。例如,只更新前两条满足条件的记录: ```sql UPDATE products SET price = price * 1.1 -- 提价 10% WHERE category = 'Electronics' ORDER BY product_id ASC LIMIT 2; ``` 这条语句会对电子产品类别下的商品提价 10%,并且最多影响两条记录[^3]。 --- ### 返回被更新的行信息 一些现代数据库还允许在执行 `UPDATE` 后立即获取被修改的具体行内容。这是通过附加 `RETURNING` 子句实现的。例如: ```sql UPDATE orders SET status = 'Shipped' WHERE order_date < CURRENT_DATE - INTERVAL '7 days' RETURNING order_id, customer_id, total_amount; ``` 这段代码不仅完成了订单状态的变更,还会返回那些受到影响的订单 ID 及其他相关信息[^1]。 --- ### 注意事项 1. 始终记得加上合适的过滤条件(`WHERE` 子句)。否则可能会意外地覆盖整个表格的内容。 2. 如果涉及大量数据的操作,请考虑事务管理以确保一致性。 3. 不同类型的 DBMS 可能存在细微差异,请查阅具体产品的文档确认兼容性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值