为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。
#数据约束
#五种完整性约束: #NOT NULL :非空约束,指定某列不能为空; #UNIQUE : 唯一约束,指定某列或者几列组合不能重复 #PRIMARY KEY :主键,指定该列的值可以唯一地标识该列记录 #FOREIGN KEY :外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性 #CHECK :检查,指定一个布尔表达式,用于指定对应的值必须满足该表达式(mysql不支持check约束) #--------------------------------NOT NULL 非空约束 --------------------------- create table test4 ( #建立非空约束 id int not null, name varchar(55) default 'ABCD' not null, #默认值就是null age int null ); #取消非空约束 alter table test4 modify name varchar(55) default 'ABCD' not null, #增加非空约束 alter table test4 modify age int not null; #--------------------------------UNIQUE : 唯一约束-------------------------------- #列级约束语法建立约束 create table test_unique ( #建立行级唯一约束 id int not null unique, age int ); #表级约束语法格式 create table unique_test3 ( test6_id int not null, test6_name varchar(255), test6_pass varchar(255), #使用表级约束语法建立唯一约束,指定test6_id和test6_name两列组合不能重复 constraint test6_unique unique(test6_id,test6_name), #使用表级约束语法建立唯一约束,约束名为test6_unique_2,test6_pass不能重复 constraint test6_unique_2 unique(test6_pass) ); #add关键字增加唯一约束 alter table test4 add unique(id,name,age); #modify关键字删除或者增加唯一约束 alter table test4 modify age varchar(255) not null; alter table test4 modify age varchar(255) not null unique; #对大部分数据库而言,删除约束使用: alter table 表名 drop constraint 约束名 #但是Mysql不采取此方式,而是: alter table 表名 drop index 约束名 #--------------------------------PRIMARY KEY : 主键约束-------------------------------- #主键约束相当于非空约束和唯一约束。 #每个表只允许拥有一个主键,但是这个主键可以由多个数据列组成,这些列组合不能重复 #标准SQL允许给主键自行命名,但是对于Mysql来说自己的名字没有任何作用,总是默认名为PRIMARY create table primary_test ( #使用列级语法建立主键约束 test_id int primary key, test_name varchar(255) ); #使用表级语法建立主键约束 create table primary_test2 ( test_id int not null, test_name varchar(255), test_pass varchar(255), #指定主键约束名为test2_pk,对大部分数据库有效,但是对mysql无效,此主键约束名仍为PRIMARY constraint test2_pk primary key (test_id) ); #以多列组合创立主键 create table primary_test3 ( test_id int, test_name varchar(255), primary key(test_id,test_name) ); #使用列级约束语法 alter table primary_test3 modify test_id int primary key(); #使用表级约束语法 alter table primary_test3 add primary key(test_id,test_name); #删除主键约束:alter table 表名 drop primary key; #主键列自增长特性:如果某个数据列的类型是整型,而且该列作为主键列,则可指定该列具有自增长功能 #mysql使用auto_increment来设置自增长,向该表插入记录时可不为该列指定值,由系统生成 create table primary_test3 ( //建立主键约束、设置自增长 test_id int auto_increment primary key, test_name varchar(255) ); #外键约束 FOREIGN KEY #Mysql中只有表级语法建立的外键约束才可以生效 #为保证参照主表的存在,先建立主表 create table teacher_tb ( t_id int auto_increment, t_name varchar(255), primary key(t_id) ); create table student_tb ( s_id int auto_increment primary key, s_name varchar(255) not null, t_java int, foreign key(t_java) references teacher_tb(t_id) ); #如果使用表级约束语法,则需要使用foreign key指定本表的外键列,如果创建外键约束时没有指定约束名, #则mysql会为该外键约束命名为table_name_ibfk_n,其中table_name是从表的表名,n是从1开始的整数 create table teacher_tb2 ( t_id int auto_increment, t_name varchar(255), primary key(t_id) ); create table student_tb2 ( s_id int auto_increment primary key, s_name varchar(255) not null, t_java int, constraint student_teacher_fk foreign key(t_java) references teacher_tb2(t_id) ); #建立多列组合外键约束 create table teacher_tb5 ( t_name varchar(255), t_pass varchar(255), primary key(t_name,t_pass) ); create table student_tb5 ( s_id int auto_increment primary key, s_name varchar(255) not null, t_java_pass varchar(255), t_java_name varchar(255), foreign key(t_java_name,t_java_pass) references teacher_tb5(t_name,t_pass) ); #删除外键约束 alter table student_tb2 drop foreign key student_teacher_fk; #增加外键约束 alter table student_tb2 add foreign key(t_java) references teacher_tb2(t_id); #外键约束参照自身,自约束 create table foreign_test9 ( foreign_id int auto_increment primary key, foreign_name varchar(255), refer_id int, foreign key(refer_id) references foreign_test9(foreign_id) ); #定义当删除主表记录时,从表记录也随之删除 #on delete cascade 把参照该主表记录的从表记录全部级联删除 #on delete set null 把参照该主表记录的从表记录从表设为null e create table teacher_tb8 ( t_id int auto_increment, t_name varchar(255), primary key(t_id) ); create table student_tb8 ( s_id int auto_increment primary key, s_name varchar(255) not null, t_java int, constraint student_teacher_fk foreign key(t_java) references teacher_tb8(t_id) on delete cascade );
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“基于MySQL数据库的数据约束实例及五种完整性约束介绍”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
2024年11月24日
2024年11月24日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]