【数据库】navicat的下载以及数据库约束

文章目录


前几章我们演示代码的时候使用的都是命令行,在代码量少的时候确实可以这样做,但一旦代码量大的时候用起来就会很不方便。今天我给大家推荐一款图形化软件:navicat。

网址:navicat连接

1.进入官网点击产品:

2.nacicat是一款收费软件,我们可以使用社区版

点击下载之后,会自动通过浏览器下载,然后点开安装包之后,在下载过程中只需要自定义一个下载路径以及创建桌面快捷方式,此过程十分简洁、简易。

3.下载之后的界面:

4.右键我的连接点击新建连接,选择mysql。

5.连接名称可以自定义,输入你的mysql密码之后就可以连接成功了!

约束类型(本章知识)

NOT NULL - 指示某列不能存储 NULL 值。

UNIQUE - 保证某列的每行必须有唯一的值。

DEFAULT - 规定没有给列赋值时的默认值。

PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。

FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句

NULL约束

创建表的时候,指定某一列不可以为空。

注:我们可以选择某一段代码再点击运行来选择性运行代码。

如果插入了id为空的数据,就会报错。

UNIQUE:唯一约束

指定某列的数据唯一,不可以重复:



特殊情况:

大家觉得下面这两条数据可以正常插入吗???

还真行!

被UNIQUE修饰后的列,依然可以插入两个相同的null:

DEFAULT:默认值约束

指定插入数据时, 某一列为空,按照默认值赋值

可以看出,我们定义过的name列会被默认赋值为'无名氏',未被是定义过的列默认为null。


我们只认定了id,sno时,name列默认填充为无名氏,但是当我们指定name列为null时,此处仍为null而非默认值无名氏 --》用户指定的优先级要高于默认约束

PRIMARY KEY:主键约束

主键约束 = not null + unique。

当定义一个列为not null + unique时,这个列会被识别为主键。

当然,正常设置主键当然也被识别为主键。

主键只有一个

对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1。

上图涉及到的知识有很多:

1.被指定的主键位置插入数据时不输入/输入null时会自动+1。

2.插入数据对应字段不给值时,使用最大值+1。

3.主键的值唯一且不可以为空。

一个表最多只有一个主键,但是可以多个列表示一个主键--》复合主键。

只要id+sno唯一就可以。就算编号相同学号不同或者反过来都没事。

FOREIGN KEY:外键约束

保证一个表中的数据匹配另一个表中的值的参照完整性。

比如如果是一个学生班级编号是6,不在班级表中,我们可以判断这个学生可能不是我们学校的,是假冒的。

语法:

sql 复制代码
foreign key 字段名 references 列名(字段);

创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,class_id为外键,关联班级表id

插入不符合要求的数据时会报错。

当子表中存在对主表的依赖时,不能删除主表对应的内容。

CHECK约束(了解)

check语句可以检查插入的数据。


总结

本文先介绍了图形化数据库工具 Navicat 的下载与使用,其社区版可从官网获取,安装后通过新建 MySQL 连接并输入相关信息即可便捷操作数据库,解决了命令行在处理大量代码时的不便。接着详细讲解了多种 SQL 约束类型:NOT NULL 约束确保列不存储空值;UNIQUE 约束保证列值唯一,且允许多个 NULL;DEFAULT 约束为列指定默认值,用户指定值优先级更高;PRIMARY KEY 约束是 NOT NULL 和 UNIQUE 的结合,可单个列或复合列(多列组合)作为主键,整数主键常结合 auto_increment 实现自增长;FOREIGN KEY 约束保障表间数据的参照完整性,子表依赖主表数据时,主表对应内容不可随意删除,子表也不能插入主表不存在的值;CHECK 约束在 MySQL 中仅被分析但不强制执行。这些内容围绕数据库工具操作与数据完整性约束展开,助力理解如何通过工具和语法规则保障数据库数据的有效性与规范性。

相关推荐
倔强的石头_15 小时前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
阿巴斯甜20 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker21 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95271 天前
Andorid Google 登录接入文档
android
黄林晴1 天前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿2 天前
Android MediaPlayer 笔记
android
Jony_2 天前
Android 启动优化方案
android
阿巴斯甜2 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇2 天前
AOSP15 Input专题InputReader源码分析
android