MYSQL-进阶1续

续:
实体完整性:针对某列数据判断其正确性
唯一约束:指定的列的数据不能重复,但可以为空
create table person1 (id bigint,name varchar(50) unique);
自动增长列约束:指定的列的数据将会自动增长(被删掉的内容永远记录在增长中)
*一般都会把主键设置为自动增长列
create table person3(id bigint primary key auto_increment,name varchar(50) unique );
域完整性:针对某单元格的数据判断其正确性
域:代表当前单元格
分类:数据类型约束;非空约束;默认值约束
数据类型约束:包括数值型、日期型、字符串型
非空约束:not null
create table person4(id bigint primary key auto_increment,name varchar(50) unique not null );
默认值约束:default
create table person5(id bigint primary key auto_increment,name varchar(50) unique not null,gender varchar(2) default ‘男’ ); (关键信息:主键、自动增长、唯一、不为空、默认值)

引用完整性:是指表于表之间的对应关系,通过设置两表之间的主键、外键的关系,或者编写两表之间的触发器来实现;有对应参照完整性的两张表,对其进行插入、删除、修改的过程中,系统都会将被修改的表格与令一张表格进行对照,从而阻止一些不正确的操作。
对两张表 设置参照完整性的要求:两个表必须是innodb类型;
数据库主键和外键的类型必须一致
创建两个参照完整表:法一:create table student3(id bigint primary key,name varchar(50),age int);
create table score3( studentid bigint, score int,kemu varchar(50),id int, constraint sc_st_fl foreign key (studentid) references student3(id));
法二:在需要设置外键的表格的字段页找到外键,设置相应内容
设置外键
法三:在已有表的情况下,修改表结构
alter table score3 add CONSTRAINT key1 foreign key (studentid) references student3(id);


 *查看表格信息:在navicat中,选中表格,右键,选择对象信息,点击DDL(定义语言)          
  查看结果:           CREATE TABLE `person5` (
                     `id` bigint(20) NOT NULL AUTO_INCREMENT,
                     `name` varchar(50) NOT NULL,
                     `gender` varchar(2) DEFAULT '男',
                      PRIMARY KEY (`id`),
                      UNIQUE KEY `name` (`name`)
                     ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

*int类型一般不指定长度
*navicat设置唯一约束:进入表格字段设置页面,点击索引, 在字段中选择要约束的字段点击确定,在索引类型中选择unique,ctrl+s进行保存。
建立两张表的关系:在student表中,id为主键;在score表中,id为主键,studentid 为外键,通过id与studentid之间的关系,把成绩与学生信息联系起来。


出现的错误:[Err] 1215 - Cannot add foreign key constraint
解决:https://blog.csdn.net/bluestar628/article/details/60480339 -Cannot add foreign key constraint常见原因总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值