数据库之存储、数据类型与完整性约束

1、存储引擎

  innodb

  myisam

  memory

  blackhole

2、数据类型

  mysql强类型语言

  整型:(1)tinyint 默认有符号的 -128-127

     create table t1(x tinyint unsigned); # 0~255

    (2)int 验证演示宽度

      zerofill:宽度不够 用0填充
create table t2(x int(10) unsigned zerofill);
insert into t2 values(20);
select * from t2;
当定义数值的类型 不用指定显示宽度 用它默认的.
除了int等指的显示宽度 ,其它的类型都表示存储宽度
小数:
float(255,30) 255值得是总长 30:小数点后的位数
单精度 随着小数位数的增多 会变得不准确
double(255,30)
双精度 随着小数位数的增多 也会变得不准确
decimal(65,30)
精度 准确的小数
字符:
char:定长 存储速度快 浪费空间
让char 显示字符的宽度:set sql_mode= 'PAD_CHAR_TO_FULL_LENGTH';
varchar:变长 存储速度慢 节省空间
text: 文本
时间:
datetime ****年月日时分秒
year
date
time
枚举:
enum
集合:
set
create table user(
id int,
name char(10),
sex enum('male','female','ladyboy'),
level enum('vip','mvip','svip'),
hoby('smoke','drink','swim')
);
额外函数: now() length()获取字节的长度 char_length:获取字节的长度

3.完整性约束(字段)用于保证数据的完整性和一致性
not null(不能为空)与default null
create table t1(id int not null default 2);
# 如果约束了 not null 并且设置default值 那么插入空值 显示是默认的值
unique(唯一的)
单列唯一
craete table dep(
id int,
name char(8) unique
);
联合唯一
create table dep1(
id int unique,
name char(8) unique
);
create table dep2(
id int,
name char(6),
unique(id),
unique(name)
);
组合唯一
create table dep3(
id int,
name char(6),
unique(id,name)
);
primary(主键)
一张表中主键不能超过一个且通常情况下这个主键是id int
#单列的主键
create table t3(
id int primary key,
name char(6) not null
);
#多列的主键:联想多列的唯一
create table t4(
id int ,
name char(6),
primary key(id),
primary key(name)
);
#复合主键
create table t5(
id int,
name char(6),
primary key(id,name)
);
# not null + unique 等价于primary key
#约束的字段为自动增长,约束的字段必须同时被key约束
create table t6(
id int primary key auto_increment,
name char(10) not null
);
foreign key(外键)
#1.先创建被关联表(主表)
create table dep(
id int primary key auto_increment,
name varchar(10) not null,
descripe varchar(40) not null
);
#2.再创建 关联表(从表)
create table emp(
id int primary key auto_increment,
name varchar(10) not null,
age int not null,
dep_id int,
test_id int,
constraint fk_dep foreign key(dep_id) references dep(id)
on delete cascade
on update cascade,
constraint fk_dep foreign key(test_id) reference test(id)
on delete cascade
on update cascade,
);
insert into emp values
(1,'zhangsan',18,1),
(2,'lisi',19,1),
(3,'egon',20,2),
(4,'alex',18,2);
posted @ 2018-08-31 16:02  拓荒牛wr  阅读(219)  评论(0编辑  收藏  举报