mysql数据传输完整性_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;

ad55ed1a66c9

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值