【数据库】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 中仅被分析但不强制执行。这些内容围绕数据库工具操作与数据完整性约束展开,助力理解如何通过工具和语法规则保障数据库数据的有效性与规范性。

相关推荐
纪伊路上盛名在3 小时前
如何批量获取蛋白质序列的所有结构域(domain)数据-2
数据库·人工智能·机器学习·统计·计算生物学·蛋白质
tuokuac4 小时前
虚拟机挂起,重启后主机连接不上虚拟机docker中的mysql?(docker网络状态假死)
网络·mysql·docker
明道源码4 小时前
Android Studio 应用运行到真机设备
android·ide·android studio
生莫甲鲁浪戴4 小时前
Android Studio新手开发第二十五天
android·ide·android studio
Varpb4 小时前
android studio-设置android模拟器屏幕自动旋转
android·android studio
2301_772093564 小时前
高并发webserver_interview
运维·服务器·数据库·后端·网络协议·mysql·wireshark
2501_915106325 小时前
iOS 打包 IPA 全流程详解,签名配置、工具选择与跨平台上传实战指南
android·macos·ios·小程序·uni-app·cocoa·iphone
超低空5 小时前
Android MediaSession深度解析:车载音乐播放器完整案例
android·架构·客户端
QmDeve5 小时前
Android 集成与使用模糊开关按钮视图 (BlurSwitchButtonView)
android·github