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

相关推荐
小满、1 小时前
MySQL :实用函数、约束、多表查询与事务隔离
数据库·mysql·事务·数据库函数·多表查询
百***35332 小时前
PostgreSQL_安装部署
数据库·postgresql
rayylee4 小时前
生活抱怨与解决方案app
数据库·生活
Lucifer三思而后行5 小时前
使用 BR 备份 TiDB 到 AWS S3 存储
数据库·tidb·aws
百***17076 小时前
Oracle分页sql
数据库·sql·oracle
qq_436962186 小时前
数据中台:打破企业数据孤岛,实现全域资产化的关键一步
数据库·人工智能·信息可视化·数据挖掘·数据分析
雨白7 小时前
Jetpack Compose Navigation 2.x 详解
android·android jetpack
weixin_537765807 小时前
【数据库管理】MySQL主从复制详解
数据库·mysql
q***33377 小时前
数据库高安全—openGauss安全整体架构&安全认证
数据库·安全·架构
范纹杉想快点毕业8 小时前
《嵌入式开发硬核指南:91问一次讲透底层到架构》
java·开发语言·数据库·单片机·嵌入式硬件·mongodb