介绍
这篇文章主要介绍了MySQL数据库中数据约束的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
为了防止不符合规范的数据进入数据库,在用户对数据进行插入,修改,删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确,有效,相容。
<强> #数据约束强>
#五种完整性约束: # NOT NULL :非空约束,指定某列不能为空; # UNIQUE :唯一约束,指定某列或者几列组合不能重复 # PRIMARY KEY :主键,指定该列的值可以唯一地标识该列记录 # FOREIGN KEY :外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性 # CHECK :检查,指定一个布尔表达式,用于指定对应的值必须满足该表达式(mysql不支持检查约束) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NOT NULL 非空约束,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - create table  test4 ( #才能建立非空约束 id int  not 空, name varchar (55), default & # 39; abcd # 39;, not 空, #默认值就是null age int  null ); #取消非空约束 alter table test4 ,modify name  varchar (55), default & # 39; abcd # 39;, not 空, #增加非空约束 alter table test4 ,modify age  int not 零; # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNIQUE :,唯一约束- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #列级约束语法建立约束 create table test_unique ,( ,#建立行级唯一约束 ,id int  not null 独一无二的, age int ,); ,#表级约束语法格式 create table unique_test3 ,( test6_id int  not 空, test6_name varchar (255), test6_pass varchar (255), #使用表级约束语法建立唯一约束,指定test6_id和test6_name两列组合不能重复 constraint test6_unique 独特(test6_id test6_name), #使用表级约束语法建立唯一约束,约束名为test6_unique_2, test6_pass不能重复 constraint test6_unique_2 独特(test6_pass) ,); ,#添加关键字增加唯一约束 alter table test4 ,add 独特(id、姓名、年龄); ,#修改关键字删除或者增加唯一约束 alter table test4 ,modify age  varchar (255), not 零; alter table test4 ,modify age  varchar (255), not null 独特; ,#对大部分数据库而言,删除约束使用:,alter table 表名,drop constraint 约束名 ,#但是Mysql不采取此方式,而是:,alter table 表名,drop index 约束名 ,# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PRIMARY KEY :,主键约束- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ,#主键约束相当于非空约束和唯一约束。 ,#每个表只允许拥有一个主键,但是这个主键可以由多个数据列组成,这些列组合不能重复 ,#标准SQL允许给主键自行命的名,但是对于Mysql来说自己的名字没有任何作用,总是默认名为初选 create table primary_test ,( #使用列级语法建立主键约束 test_id int  primary 键, test_name varchar (255) ,); ,#使用表级语法建立主键约束 create table primary_test2 ,( test_id int  not 空, test_name varchar (255), test_pass varchar (255), #指定主键约束名为test2_pk,对大部分数据库有效,但是对mysql无效,此主键约束名仍为主要的 constraint test2_pk  primary key (test_id) ,); ,#以多列组合创立主键 create table primary_test3 ,( test_id int, test_name varchar (255), primary 关键(test_id test_name) ,); ,#使用列级约束语法 alter table primary_test3 ,modify test_id  int primary 关键(); ,#使用表级约束语法 alter table primary_test3 ,add primary 关键(test_id test_name); ,#删除主键约束:alter table 表名,drop primary 关键; ,#主键列自增长特性:如果某个数据列的类型是整型,而且该列作为主键列,则可指定该列具有自增长功能 ,# mysql使用auto_increment来设置自增长,向该表插入记录时可不为该列指定值,由系统生成 create 才能;table  primary_test3 ,(//建立主键约束,设置自增长 test_id int  auto_increment primary 键, test_name varchar (255) ,); ,#外键约束,FOREIGN 关键 ,# Mysql中只有表级语法建立的外键约束才可以生效 ,#为保证参照主表的存在,先建立主表 create table teacher_tb ,( t_id int  auto_increment, t_name varchar (255), primary 键(t_id) ,); create table student_tb ,( s_id int  auto_increment primary 键, s_name varchar (255), not 空, t_java int, foreign 键(t_java), references teacher_tb (t_id) ,); #如果使用表级约束语法,则需要使用foreign 主要指定本表的外键列,如果创建外键约束时没有指定约束名, #则mysql会为该外键约束命名为table_name_ibfk_n,其中table_name是从表的表名,n是从1开始的整数 create table teacher_tb2 ,( t_id int  auto_increment, t_name varchar (255), primary 键(t_id) ,); create table student_tb2 ,( s_id int  auto_increment primary 键, s_name varchar (255), not 空, t_java int, constraint student_teacher_fk  foreign 键(t_java), references teacher_tb2 (t_id) ,); ,#建立多列组合外键约束 create table teacher_tb5 ,( t_name varchar (255), t_pass varchar (255), primary 关键(t_name t_pass) ,); create table student_tb5 ,( s_id int  auto_increment primary 键, s_name varchar (255), not 空, t_java_pass varchar (255), t_java_name varchar (255), foreign 关键(t_java_name t_java_pass), references 才能;teacher_tb5 (t_name t_pass) ,); ,#删除外键约束 alter table student_tb2 null null null null null null null null null null null null null null null null null null null null null null null null null null null nullMySQL数据库中数据约束的示例分析