Mysql系列_基础_02_Mysql约束与数据类型

约束

主键约束

特点:唯一、非空
列级语法:<字段名> <数据类型> PRIMARY KEY [默认值]

create table student(
	id int(20) primary key, 
	name varchar(50) primary key, 
	password varchar(30));

表级语法:[CONSTRAINT <约束名>] PRIMARY KEY [字段名]

create table student( 
	id int(20), 
	name varchar(50), 
	password varchar(50),
	primary key(id,name));

非空约束

特点:非空
语法:<字段名> <数据类型> NOT NULL

create table student(
  id int(20) primary key,
	name varchar(50) not null,
	password varchar(30));

唯一约束

特点:唯一
语法:<字段名> <数据类型> UNIQUE

create table student(
   id int(20) primary key,
   name varchar(50) unique,
   password varchar(30));

默认约束

特点:默认值
语法:<字段名> <数据类型> DEFAULT

create table student(
	id int(20) primary key,
	name varchar(50),
	password varchar(30) default 123);

自动增加

特点:一个表只能一个字段使用AUTO_INCREMENT,并且使用这个约束的字段只能是整数类型(任意的整数类型TINYINT,SMALLIN,INT,BIGINT),默认值是1,也就是说从1开始增加的。一般就是给主键使用的,自动增加,使每个主键的值度不一样,并且不用我们自己管理,让主键自己自动生成。
语法:<字段名> <数据类型> ATUO_INCREMENT

create table student(
	id int(20) primary key auto_increment,
	name varchar(50),
	password varchar(30) default 123);

外键约束

特点:

  • 外键约束可以描述任意一个字段(包括主键),可以为空,并且一个表中可以有多个外键。但是外键字段中的值必须是另一张表中的主键。
  • 这样被外键关联的两种表的关系可以称为父子表或者主从表。子表(从表)拥有外键字段的表,父表(主表)被外键字段所指向的表。
  • 子表被外键约束修饰的字段必须和父表的主键字段的类型一样。
    语法:[CONSTRAINT 外键名称] FOREIGN KEY(被外键约束的字段名称) REFERENCES 主表名(主键字段)
create table student(
	id int(20) primary key auto_increment,
	name varchar(50),
	password varchar(30)
	constraint foreignname foreign key(name) references member(id));

数据类型

Mysql主要有4种数据类型,分别是数值数据类型、日期和时间类型、字符串类型、二进制类型。

数值数据类型

整数类型

整数类型

浮点数类型和定点数类型

浮点数类型和定点数类型

取值范围

float存储方式1bit(符号位)8bits(指数位)23bits(尾数位)
double存储方式1bit(符号位)11bits(指数位)52bits(尾数位)

因此,float的指数范围为-127 ~ +128,而double的指数范围为-1023 ~ +1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能,表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。

注意点
float(m, d),m指定有效位数(包括整数位和小数位),d指定精确位数,d最多可为6位

float和double和decimal需要怎么选
1 如果你要表示的浮点型数据转成二进制之后能被32位float存储,或者可以容忍截断,则使用float,这个范围大概为要精确保存6位数字左右的浮点型数据
比如10分制的店铺积分可以用float存储,小商品零售价格(1000块之内)

2 如果你要表示的浮点型数据转成二进制之后能被64位double存储,或者可以容忍截断,这个范围大致要精确到保存13位数字左右的浮点型数据
比如汽车价格,几千万的工程造价

3 相比double,已经满足我们大部分浮点型数据的存储精度要求,如果还要精益求精,则使用decimal定点型存储
比如一些科学数据,精度要求很高的金钱

日期类型

日期与时间类型

字符串类型

字符串类型

二进制类型

二进制类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值