Mysql数据完整性

确保数据的完整性 = 在创建表的时候给表中加的约束
实体完整性: 约束行
域完整性 : 约束每一个字段 列
引用完整性:约束表与表之间
实体完整性:
1.主键约束 (primary key)
第一种 创建表的时候就添加主键约束
CREATE table student (
id int ,
name VARCHAR(100),
PRIMARY KEY(id)
);
第二种 在创建表之后添加主键
ALTER table student add PRIMARY KEY(id);
第三种 创建表的时候添加主键 适用于添加联合主键(也是一个主键)
联合主键如下
CREATE TABLE student (
classid int(11) NOT NULL DEFAULT '0',
sid int(11) NOT NULL DEFAULT '0',
name varchar(100) DEFAULT NULL,
PRIMARY KEY (classid,sid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

image.png

每个表中要有一个主键 数据唯一 不能为空

2.唯一约束 unique

可以添加 null 以及’’ 空字符串有判断 但是null 没有判断

3.自动增长列 (方言) auto_increment
其他数据库的语句不一样。
增加数据不指定 此列的时候 此列数据自增
此列增加数据指定特定值的时候 此列添加相应的设定值
插入之前 先查询 MAx(id) 的值之后 给新增列设定值为 MAx(id) +1

Delete 对数据的操作不影响表结构(与全选删除类似)
Truncate 对表结构进行处理(与格式化类似)

二 域完整性 对列进行约束
1.对数据类型进行约束
Java mysql

Byte tinyint
Short smallint
Int int
Long bigint
Char |String char(不可变) | varchar(可变)
Boolean tinyint | int
Float float
Double double(m,n) m字符总长度五位
n小数位数占两位

Date
Java.util.Date
Java.sql.Date
Java.sql.Time
Java.sql.timestamp 时间戳 若给定值位空 数据库会把当前系统时间 存入数据库中
Java.sql.DateTime date+time
Java.sql.Clob(长文本) text(方言)
Java.sql.Blob(二进制) 视频 音频 blob

2.非空约束 not null
3.默认值得约束 default
Insert into student values (‘xxx’,’xx’,DEFAULT);

三 引用完整性:
外键约束 FOREIGN KEY REFERENCES

第一种方式 在创建表的时候指定
CREATE table student(

    id  int PRIMARY KEY,
    name  VARCHAR(100) not NULL,
    sex  VARCHAR(10)  DEFAULT 'm'

);
CREATE table score(
id INT,
sid INT,
score INT ,
CONSTRAINT fr_stu_score FOREIGN KEY (sid) REFERENCES student(id)
);

第二种方式 建表的时候没有指定在后期指定
alter TABLE score add CONSTRAINT fr_st_sc FOREIGN KEY (sid) REFERENCES student(id);

多表关系:
多对一 一对多 多对多 一对一

多对一 和 一对多 如下:
CREATE table student(

    id  int PRIMARY KEY,
    name  VARCHAR(100) not NULL,
    sex  VARCHAR(10)  DEFAULT 'm'

);
CREATE table score(
id INT,
sid INT,
score INT ,
CONSTRAINT fr_stu_score FOREIGN KEY (sid) REFERENCES student(id)
);

多对多 如下:
create table student2(
sid int PRIMARY KEY,
sname VARCHAR(100)
);
create table teacher2(

tid int PRIMARY KEY ,
tname VARCHAR (100)

);
create table tea_stu_rel(
tid int ,
sid INT
);
-- 创建关系
ALTER TABLE tea_stu_rel ADD CONSTRAINT fk_tid FOREIGN KEY(tid) REFERENCES teacher2(tid);
ALTER TABLE tea_stu_rel ADD CONSTRAINT fk_sid FOREIGN KEY(sid) REFERENCES student2(sid);

-- 一对一 如下所示 :
CREATE TABLE QQ(
qqid INT PRIMARY KEY,
PASSWORD VARCHAR(50) NOT NULL
);
CREATE TABLE QQDetail(
qqid INT PRIMARY KEY,
NAME VARCHAR(100),
address VARCHAR(200)
);
-- 创建关系
ALTER TABLE QQDetail ADD CONSTRAINT fk_qqDetail_qq FOREIGN KEY(qqid) REFERENCES QQ(qqid);

你可能感兴趣的:(Mysql数据完整性)