更新数据表的关键字是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新数据表的关键字是啥相关的知识,希望对你有一定的参考价值。

1 关键字是"UPDATE"
2 更新数据表需要使用"UPDATE"关键字,后面紧跟着要更新的数据表的名称,然后是SET关键字,接着是要更新的字段和值,最后可以添加WHERE子句指定更新的条件。

3 除了UPDATE关键字,还有其他的SQL关键字可以用来操作数据表,例如SELECT、INSERT、DELETE等,这些关键字都有不同的用途和语法格式。
研究这些关键字的使用方法,可以更好地掌握SQL数据库的操作。
参考技术A 使用 UPDATE 关键字来更新数据表。它允许开发者对数据库进行更新、插入或者删除操作。在使用 UPDATE 关键字更新表时,可以设定具体的字段以及想要更新的值,并且可以指定查询条件,以确保只会更新指定的记录。另外,它还可以更新多个表,只需要设定好即可。

Spring Boot 更新用户数据的最佳方法是啥?

【中文标题】Spring Boot 更新用户数据的最佳方法是啥?【英文标题】:What is the best way to update user data spring boot?Spring Boot 更新用户数据的最佳方法是什么? 【发布时间】:2018-10-09 20:00:22 【问题描述】:

我无法以正确的方式成功更新用户数据,例如他的名字或姓氏

控制器:

@Controller
public class UpdateUserData 
    @Autowired
    private UserService userService;

    @RequestMapping(value = "/user/updateFirstName", method = RequestMethod.POST)
    public String changeUserFirstName(RedirectAttributes rm, final Locale locale, @Valid UserDto userDto) 
        final User user = (User) SecurityContextHolder.getContext()
            .getAuthentication()
            .getPrincipal();
        userService.changeUserFirstName(user, userDto.getFirstName());

        rm.addFlashAttribute(
            "message",
            messages.getMessage("message.updateFirstNameSuc", null, locale)
        );
        return "redirect:/user/myAccount?lang=" + locale.getLanguage();
    

这就是 myAccount html 页面中相关的部分:

<div class="manageinfo">
   <h1>Manage your personal information</h1>
   <br/>
   <div class="container">
      <div th:if="$message != null" class="alert alert-info" 
         th:text="$message">message</div>
      <div th:each = "user: $user" >
         <p>Firstname</p>
         <input type="text" th:value="$user.firstName"><a data-toggle="modal" 
            data-target="#myModalFirstName"><i class="fa fa-pencil fa-lg"> </i></a>
      </div>
      <!-- Modal for firstName-->
      <div class="modal fade" id="myModalFirstName" role="dialog">
         <button type="button" class="close" data-dismiss="modal">&times;</button>
         <form th:action="@/user/updateFirstName" th:method="POST">
            <p>First Name</p>
            <input type="text" name="firstName" required="required">
            <span id="firstNameError"  style="color:#F41F0E" ></span>     
            <button type="submit" class="btn btn-default" >Save</button>
         </form>
      </div>
   </div>
</div>

UserServiceImpl:

public void changeUserFirstName(final User user, final String firstname) 
    user.setFirstName(firstname);
    userRepository.save(user);   

当我尝试更改名称时,我会收到

Failed to resolve argument 2 of type Myproject.dto.UserDto
javax.validation.ValidationException: HV000028: Unexpected exception during isValid call

【问题讨论】:

您在将请求数据转换为UserDTO时可能会遇到问题,检查类型是否正确(如日期或数字),方法changeUserFirstName似乎没问题 谢谢@OlivierBoissé。我使用 UserDto 进行更新,与 UserDto 进行注册相同。但是,当我尝试更新诸如名字之类的字段时,它给了我一个验证错误和空指针,因为其他字段不能为空输入。我的解决方法是单独为名字创建一个 UpdateDto,单独为姓氏创建一个 UpdateDto,并进行特定验证,以解决此问题。顺便说一句,我觉得拥有多个 Dto 不是正确的技术?使用多个Dto是否正确?有没有办法只传递和更改 Dto 模型中的一个值? 为不同的场景拥有多个 DTO 非常好。但是很奇怪,您有一个用于更新名字的端点和另一个用于更新姓氏的端点,为什么没有一个用于更新用户的唯一端点? @OlivierBoissé 因为我希望用户能够单独更新他的名字或姓氏,而我不能在一个 Dto 中这样做。因为如果用户尝试使用包含 fname 和 lname 的 Dto 更新 fname,则会引发验证和空指针错误。 那么为什么只为一个字段创建 DTO...您可以使用 @RequestBody String firstName 而不是 @Valid UserDto userDto 【参考方案1】:

逻辑更新过程似乎没问题,我建议在它的字段上检查 UserDto 和它的验证注释(@NotNull、@Size 等),因为 isValid 是由你的 @Valid 注释抛出的控制器作为数据没有遵循给定的约束。

例如, 您的 UserDTO 可能包含:

@Size(max = 30)
private String firstName;
@Pattern(regexp = "....")
private String lastName;

但是您的控制器收到的名字大于最大值/名字的格式错误。

另请阅读: https://docs.oracle.com/javaee/7/api/javax/validation/ConstraintValidator.html#isValid-T-javax.validation.ConstraintValidatorContext-

【讨论】:

感谢您的回复。是的,我在我的 UserDto 中进行了验证,并且它们在注册过程中运行良好。但不是使用具有相同验证的相同 UserDto 更新用户数据过程。顺便说一句,我输入了用于注册的正确模式

以上是关于更新数据表的关键字是啥的主要内容,如果未能解决你的问题,请参考以下文章

从其他数据库更新表数据的最有效方法是啥?

在春季获取、转换和更新数据的最佳方法是啥?

ReactJS:通过表单获取和更新数据的惯用方式是啥?

Laravel - 使用大数据优化更新/插入查询的最佳方法是啥?

访问可以更新的罐装应用资源的正确方法是啥?

使用 DBUnit 在数据库中断言更新数据的好策略是啥?