标签:har 从表 推荐 完整 class int 日期类 不重复 可变
作用:保证用户输入的数据保存到数据库中是正确的。
确保数据的完整性=在创建表时给表中添加约束
完整性的分类:
实体完整性:表示数据表中的数据要保证唯一性、不重复、可以使用primarykey 或 unique开约束 域完整性:是指数据表中的字段要符合逻辑要求,是个有效的数据、符合常理。可以添加check约束 或者 default约束 引用完整性是:数据库表与表之间的字段是有联系的,有时候一张表的数据需要引用另一张表的数据。则可以使用foreign key 约束 |
1.1 实体完整性约束
实体:即表中的一行(一条记录)代表一个实体(entity)
实体完整性的作用:标识每一行数据不重复
约束类型:
主键约束(primary key)
唯一约束(unique)
自动增长列(auto_increment)
1.1.1 主键约束(primary key)
注意:每个表中只有一个主键。
特点:数据唯一,且不能为null
示例:
第一种添加方式:
#创建表student CREATE TABLE student( id INT PRIMARY KEY, `name` VARCHAR(50) );
第二种添加方式:此种方式优势在于,可以创建联合主键
CREATE TABLE student( id INT, `name` VARCHAR(50), PRIMARY KEY(id) );
特点:数据不能重复,可以为null
CREATE TABLE student( id INT primary key, `name` VARCHAR(50) uniqe );
sqlserver数据库(identity)oracle(sequence)
自动增长不能单独使用,一般需要和主键配合。
给主键添加自动增长的数值,列只能是数值类型
CREATE TABLE student5( id INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(50) );
CREATE TABLE student6( id INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(10) )AUTO_INCREMENT=10;#从10开始,递增1
1.2 域完整性约束
域完整性约束的作用:限制此单元格的数据正确,不对其他单元格起作用,域代表当前单元格
域完整性约束:数据类型、非空约束(not null)、默认值约束(default)
check约束(mysql不支持)check(sex = ‘男’or sex =‘女’)
int:数字中的int等同于java中的int。
bigint:数字中的长整形,等同于java中的long。
float:单晶度浮点型数据
double:双精度浮点型数据
data:短日期
datatime:长日期
clob:字符大对象,最多可以存储4G的字符串,比如:存储一篇文章,存储一个说明。超过255个字符的都要采用clob字符大对象来存储。
blob:二进制大对象。专门用来存储图片、声音、视频等流媒体数据。往blob类型的字段上插入数据的时候,例如插上一个图片、视频等。需要使用io流才行。
varchar:可变长度的字符串,比较智能,节省空间,根据实际长度动态分配空间
优点:节省空间
缺点:需要动态分配空间,速度慢
char:定长字符串,不管实际数据长度是多少,分配固定长度的空间去存储数据,使用不恰当的时候,可能会导致空间的浪费。
优点:不需要动态分配空间,速度快。
缺点:使用不当可能会导致空间的浪费。
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
TIMESTAMP类型有专有的自动更新特性
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET
CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。
有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。
default
CREATE TABLE student( Id int primary key, Name varchar(50) not null, Sex varchar(10) default ‘男‘ ); insert intostudent1 values(1,‘tom‘,‘女‘); insert intostudent1 values(2,‘jerry‘,default);
(参
#成绩表(从表) CREATE TABLE score( id INT, score INT, sid INT, CONSTRAINT fk_score_sid FOREIGN KEY(sid) REFERENCES student3(sid) ); --- 外键列的数据类型一定要与主键的类型一致
照完整性约束)
外键约束:foreing key
实例:第一种添加外键方式。推荐
#学生表(主表) CREATE TABLE student3( sid INT PRIMARY KEY, `name` VARCHAR(50) NOT NULL, sex VARCHAR(50) DEFAULT ‘男‘ );
标签:har 从表 推荐 完整 class int 日期类 不重复 可变
原文地址:https://www.cnblogs.com/fengjd/p/14806132.html