当前位置: 首页 > news >正文

MySQL新手入门:吃透2个最常用的约束,少踩入门坑

我是一名大一新生,之前学过一点Java基础,对数据库的了解只停留在“知道MySQL是存数据的”这个层面。

因为平时没有项目和实战经历,写MySQL建表语句也只是照着课本敲,根本不知道“约束”有什么用,直到老师布置的简单练习里,我因为没加约束,敲出来的数据乱得一塌糊涂,才慢慢重视起这个知识点。

其实约束一点都不难懂,说白了就是给数据表定的小规矩,哪些数据能存、哪些不能存,都按规矩来,数据自然就整齐准确了。

我没有实战经验,就从最基础、最常用的两个约束学起,慢慢搞懂它们的用法,今天就跟和我一样的新手小伙伴,唠唠主键约束和非空约束。

一、非空约束:必填项的“守护神”

非空约束,看名字就知道意思,就是某个字段不能空着,必须填点东西。就像我们平时填表单,标了星号的必填项,不填就提交不了,非空约束干的就是这个活儿。

比如建个用户表,姓名和手机号肯定得填吧,总不能有个用户没名字、没联系方式,这时候就给这两个字段加上非空约束。

举个最简单的例子,建表时写“name VARCHAR(20) NOT NULL”,这里的NOT NULL就是非空约束,意思是name字段必须填值。加上之后,要是我忘了填姓名,想插数据进去,MySQL就会报错,不让我弄,这样就不会出现无效数据了。

这里跟新手们提个醒,非空约束只管字段不能空,不管你填的是什么,只要有值就可以。而且一旦加了这个约束,后面想把有值的字段改成空,也改不了,除非先把这个约束取消。

二、主键约束:数据表的“唯一身份证”

主键约束比非空约束更严格一点,它的作用就是给表里面每一条数据,弄一个独一无二、还不能空的标识,就跟我们的身份证号一样,每个人都不一样,也不可能没有。

还是拿用户表举例,我们可以加一个用户ID字段,给它设为主键约束。

简单写就是“id INT PRIMARY KEY”,PRIMARY KEY就是主键约束。这样一来,每个用户的ID都是独一份的,比如用户A是1,用户B就只能是2,不会出现两个用户都是1的情况,而且ID也不能空,每一条数据都有自己的标识。

我刚开始学的时候,踩过两个小坑,跟大家说一下,记好就能避开:

第一,一张表只能有一个主键,不能给好几个字段都设主键;

第二,主键最好用数字,比如自增的那种,简单还不容易重复,别用姓名、手机号当主键,万一后续要修改,就麻烦了。

新手小结

总结一下,新手学约束不用贪多求全,刚开始写建表语句,记住两点就够了:必填的字段加非空约束,需要唯一标识的字段加主键约束,这样数据表就能整整齐齐,后续也不用花时间清理混乱的数据。

我也是刚摸清这些门道,试着把约束用到建表里面,才发现是真的实用——原来MySQL不只是用来存数据的,还能帮我们把数据守好。

后面再慢慢学其他的约束,一步一步来,相信我们这些新手,慢慢也能把MySQL学明白~

http://www.jsqmd.com/news/351523/

相关文章:

  • Kubernetes 上的 Langflow 架构
  • 【课程设计/毕业设计】基于springboot+Android的井盖隐患智能识别小程序的设计与开发【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于springboot智慧医疗APP基于springboot+安卓的智慧医疗系统设计与实现【附源码、数据库、万字文档】
  • java+vue基于springboot框架的课堂考勤系统设计与实现
  • 软件测试--【自动化测试常用函数】(下) - 教程
  • 小程序毕设项目:基于springboot+Android的养宠交流系统的设计与开发(源码+文档,讲解、调试运行,定制等)
  • 普通大学的研究生写的sci初稿真的是惨不忍睹?——大家如何看待研究生发表sci论文?
  • 【课程设计/毕业设计】【附源码、数据库、万字文档】
  • 【计算机毕业设计案例】基于Android的智慧医疗问诊系统设计与实现基于springboot+安卓的智慧医疗系统设计与实现(程序+文档+讲解+定制)
  • 待办
  • 【GaussDB】在Oracle\PG\GaussDB库中实现用户甲在其它用户的SCHEMA中创建表的方法及所属属主的差异
  • java+vue基于springboot框架的课程学习平台的设计与实现
  • Vue3 创建项目指南
  • 聊一下谷歌的 notebookLM,以及一些技巧(转)
  • 【GaussDB】从RBAC到精细化控制的企业级安全实践
  • Git 一个本地仓库同时推送到两个远程仓库(详细教程)
  • 洛谷 P5386
  • 【openGauss】从“functions in index expression must be marked IMMUTABLE“谈起
  • MySQL 安装指南
  • 离子方程式正误判断速记表
  • 想加入手机大厂vivo?这份2026春招通关秘籍请收好
  • 大数据领域数据工程的版本控制策略
  • 列式存储在大数据可视化中的加速作用
  • AI时代必备技能:用户意图理解在原生应用中的落地实践
  • 利用大数据打造个性化用户画像
  • Qt C++ Excel 文件解析与导出实战:QAxObject 封装工具类 - 详解
  • CANN ops-cv 算子库深度解析:图像处理与目标检测的硬件加速机制、异构存储管理与流水线优化
  • 领域知识库数据增强提示专业性:提示工程架构师的进阶技巧
  • 顺序栈和链式栈 - f
  • CANN Runtime 运行时组件深度解析:任务下沉执行、异构内存规划与全栈维测诊断机制