文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

数据库中sql完整性约束的示例分析

2024-04-02 19:55

关注

小编给大家分享一下数据库中sql完整性约束的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

完整性约束

  完整性约束是为了表的数据的正确性!如果数据不正确,那么一开始就不能添加到表中。

1 主键

当某一列添加了主键约束后,那么这一列的数据就不能重复出现。这样每行记录中其主键列的值就是这一行的唯一标识。例如学生的学号可以用来做唯一标识,而学生的姓名是不能做唯一标识的,因为学生姓名有可能同名。
主键列的值不能为NULL,也不能重复!

  指定主键约束使用PRIMARY KEY关键字

创建表:定义列时指定主键:

CREATE TABLE stu(
         sid    CHAR(6) PRIMARY KEY,
         sname   VARCHAR(20),
         age      INT,
         gender  VARCHAR(10)
);

创建表:定义列之后独立指定主键:

CREATE TABLE stu(
         sid    CHAR(6),
         sname   VARCHAR(20),
         age      INT,
         gender  VARCHAR(10),
         PRIMARY KEY(sid)
);

修改表时指定主键:

ALTER TABLE stu
ADD PRIMARY KEY(sid);

删除主键(只是删除主键约束,而不会删除主键列):

ALTER TABLE stu DROP PRIMARY KEY;

2 主键自增长

MySQL提供了主键自动增长的功能!当主键设置为自动增长后,在没有给出主键值时,主键的值会自动生成,而且是最大主键值+1,也就不会出现重复主键的可能了。

创建表时设置主键自增长(主键必须是整型才可以自增长):

CREATE TABLE stu(
         sid INT PRIMARY KEY AUTO_INCREMENT,
         sname   VARCHAR(20),
         age      INT,
         gender  VARCHAR(10)
);

修改表时设置主键自增长:

ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT;

修改表时删除主键自增长:

ALTER TABLE stu CHANGE sid sid INT;

3 非空

指定非空约束的列不能没有值,也就是说在插入记录时,对添加了非空约束的列一定要给值;在修改记录时,不能把非空列的值设置为NULL。

指定非空约束:

CREATE TABLE stu(
         sid INT PRIMARY KEY AUTO_INCREMENT,
         sname VARCHAR(10) NOT NULL,
         age      INT,
         gender  VARCHAR(10)
);

当为sname字段指定为非空后,在向stu表中插入记录时,必须给sname字段指定值,否则会报错:

INSERT INTO stu(sid) VALUES(1);

  插入的记录中sname没有指定值,所以会报错!

4 唯一

还可以为字段指定唯一约束!当为字段指定唯一约束后,那么字段的值必须是唯一的。这一点与主键相似!例如给stu表的sname字段指定唯一约束:

CREATE TABLE tab_ab(
     sid INT PRIMARY KEY AUTO_INCREMENT,
     sname VARCHAR(10) UNIQUE
);
 
  INSERT INTO sname(sid, sname) VALUES(1001, 'zs');
INSERT INTO sname(sid, sname) VALUES(1002, 'zs');

  当两次插入相同的名字时,MySQL会报错!

5 外键

主外键是构成表与表关联的唯一途径!

外键是另一张表的主键!例如员工表与部门表之间就存在关联关系,其中员工表中的部门编号字段就是外键,是相对部门表的外键。

例如在t_section表中sid为1的记录说明有一个分类叫java,版主是t_user表中uid为1的用户,即zs!

例如在t_topic表中tid为2的记录是名字为“Java是咖啡”的帖子,它是java版块的帖子,它的作者是ww。

外键就是用来约束这一列的值必须是另一张表的主键值!!!

创建t_user表,指定uid为主键列:

CREATE TABLE t_user(
     uid  INT PRIMARY KEY AUTO_INCREMENT,
     uname  VARCHAR(20) UNIQUE NOT NULL
);

创建t_section表,指定sid为主键列,u_id为相对t_user表的uid列的外键:

CREATE TABLE t_section(
         sid  INT PRIMARY KEY AUTO_INCREMENT,
         sname   VARCHAR(30),
         u_id INT,
         CONSTRAINT fk_t_user FOREIGN KEY(u_id) REFERENCES t_user(uid)
);

修改t_section表,指定u_id为相对t_user表的uid列的外键:

ALTER TABLE t_section
ADD CONSTRAINT fk_t_user
FOREIGN KEY(u_id)
REFERENCES t_user(uid);

修改t_section表,删除u_id的外键约束:

ALTER TABLE t_section
DROP FOREIGN KEY fk_t_user;

6 表与表之间的关系

以上是“数据库中sql完整性约束的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯