🔥MySQL一万字深度总结,基础+进阶(五),建议收藏。✨💖

169 阅读6分钟

💖✨MySQL一万字深度总结,基础+进阶(五)

这是我参与 8 月更文挑战的第 8 天,活动详情查看: 8月更文挑战

👨‍🎓作者:Java学术趴

🏦仓库:GithubGitee

✏️博客:CSDN掘金InfoQ云+社区

💌公众号:Java学术趴

🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。

🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。

☠️每日毒鸡汤:最早的心灵鸡汤,比如圣经之中的约伯记。

👋大家好!我是你们的老朋友Java学术趴,今天继续给大家分享小编精心为大家整理的一万字MySQL数据库核心知识、在接下来的几天为大家持续分享,💘关注不迷路呦!!!💘。数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。数据库是一个按数据结构来存储和管理数据的计算机软件系统。🦄

1.约束

1.1 什么是约束? 常见的约束有哪些?

注意:比如注册一个新的用户,底层就相当于执行一次insert语句

在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。

常见的约束有哪些 ?

  • 非空约束 (not null) : 约束的字段不能为 NULL
  • 唯一性 (unique) : 约束的字段不能重复
  • 主键约束 (primary key) : 约束的字段既不能为NULL,也不能重复(简称pk)
  • 外键约束 (foreign key) : ...(简称FK)
  • 检查约束 (check) : 注意oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。

1.2非空约束 (not null)

第一步 :创建一个新的表

drop table if exists t_user;
create table t_user(
  id int,
  username varchar(255) not null,
  password varchar(255)
);

第二步 : 向表中插入数据

insert into t_user(id,username,password) values(1,'zhangsan','123');

第三步 :查看表的数据

select * from t_user;

错误案例 :

insert into t_user(id,password) values(1,'444');

注意 :

错误原因,在创建表的时候已经声明username不能为null

查看表的结构可以发现,在username字段的NULL为NO,说明username必须有值,不能为null

desc t_user;

1.3唯一性约束 (unique)

1.3.1 唯一性约束修饰的字段具有唯一性,不能重复,但可以为NULL

1.3.2 案列 :给一个字段(列)加约束条件

第一步 :判断是否存在t_user表,如果存在将整个表删除并创建一个新的表,使用的是 drop table if exists t_user; create table t_user( id int, username varchar(255) unique );

第二步 : 插入数据

insert into t_user values(1,'zhangsan'); insert into t_user values(2,'zhangsan');

注意:

  • 第一条语句可以插入成功,但是执行第二条语句插入失败,错误原因:
  • 第二条语句中的username字段的值与第一条语句中username的值一样,报错
  • 因为在建表的时候username字段加入了约束条件,该字段的值不能重复。

第三步 : 查看表的结构

desc t_user;

注意 : 查看表结构的时候发现,表结构中的username中的Key字段有UNI关键字,说明这个字段的值不能重复。

1.3.3 username可以为NULL

第一步 :插入数据,不给定username的值,默认值为NULL(空)

insert into t_user(id) values(2); insert into t_user(id) values(3); insert into t_user(id) values(4);

第二步 : 查看表的数据

select * from t_user;

1.3.4给多个字段(列)加约束条件

1.3.4.1表级约束 多个字段联合起来添加一个约束unique

第一步 :判断是否存在t_user表,如果存在将整个表删除并创建一个新的表

重点 :

  • 这样的语法格式,代表将usercode与username合并为一个字段,使用的是一个约束条件,

  • 即只有当usercode与username的字段值都与上一次的字段值相同值相同时,才会报错,当作同一个数据。

    drop table if exists t_user; create table t_user( id int, usercode varchar(255), username varchar(255), unique(usercode,username) );

第二步 : 插入数据

insert into t_user values(1,'111','zhangsan'); insert into t_user values(2,'111','wangwu'); insert into t_user values(3,'222','zhangsan');

第三步 :查看表的结构

desc t_user;

注意 : 此时即表级约束中,发现usercode与username中只有usercode中的Key字段都为UNI;而username不为UNI,此时他两是绑在一起的。

第四步 : 查看表中的数据

select * from t_user;

第五步 : 插入重复的数据

insert into t_user values(4,'111','zhangsan');

注意:此时会报错(usercode”键的重复条目“111 zhangsan),因为插入的数据与第一次插入的数据usercode字段值和username字段值都一样.

1.3.4.2 列级约束 各自管自己的,只有当约束的字段值全不重复的时,才会成功,不会报错。

第一步 :判断是否存在t_user表,如果存在将整个表删除并创建一个新的表

重点 :

  • 这样的语法格式,代表将usercode与username各为一个字段,使用的是两个个约束条件,

  • 即当usercode与username的字段值只要有一个不一样的时候就会报错。

    drop table if exists t_user; create table t_user( id int, usercode varchar(255) unique, username varchar(255) unique );

第二步 : 插入数据

insert into t_user values(1,'111','zhangsan'); insert into t_user values(2,'222','wangwu'); insert into t_user values(2,'111','wangwu'); insert into t_user values(3,'222','zhangsan');

注意 :

  • 此时只有1行与2行的数据插入成功,因为前两行usercode与username的字段值都不行同
  • 而后来两行数据中,usercode与username的字段值其中有一个字段是重复的,报错 第三步 :查看表的结构

desc t_user;

注意 : 此时即列级约束中,发现usercode与username中的Key字段都为UNI;

第四步 : 查看表中的数据

select * from t_user;

注意 :只有前两行数据,后边的两行插入失败,因为有重复。

1.4注意 : not null约束只有列级约束,没有表级约束。

今天就先分享到这里,明天继续给大家分享,关注不迷路呦,我们明天见😊。
以上项目的源代码,点击星球🌍进行免费获取 星球(Github地址)如果没有Github的小伙伴儿。可以搜索🔍微信公众号:Java学术趴,📭发送MySQL,免费给发给大家项目源码,代码是经过小编亲自测试🔧的,绝对可靠,免费拿去使用。

--------💘看完的大佬们可以关注一下小编,会一直更新小技巧,免费分享给大家呦!!!💝---------

点击🌍星球可快速进入小编的Github星球呦!!里边还有更多好玩的技术,等待大家去探索呦💪!!