MYSQL中列约束

一.列约束

mysql可以对要插入的数据进行特定的验证,只有满足条件才允许插入,否则被认为非法的插入。例如编号不能出现重复,性别只能是男或者女,工资只能是正数

create  table  t3(
   id  INT  列约束
);

(1)主键约束-PRIMARY KEY

声明了主键约束的列上不允许插入重复的值,一个表中只能有一个主键约束,通常是加在编号列,会加快数据的查询速度。

#练习:编写脚本文件xz.sql,先丢弃再创建xz,设置编码utf8,进入数据库,保存笔记本类别的表
family,包含有fid,类别名称fname,插入以下数据  10  联想  20  戴尔  30  小米;
创建保存笔记本数据的表laptop,包含有lid,标题title,价格price,规格spec,
详情detail,上架时间shelfTime,是否在售isOnsale,所属类别编号familyId,
插入若干条数据;每个都使用主键约束
#设置客户端连接服务器端的编码
SET NAMES UTF8;
#丢弃数据库,如果存在
DROP DATABASE IF EXISTS xz;
#创建数据库,设置编码
CREATE DATABASE xz CHARSET=UTF8;
#进入数据库
USE xz;
#创建保存笔记本类别的表
CREATE TABLE family(
  fid INT PRIMARY KEY,
  fname VARCHAR(16)
);
#插入数据
INSERT INTO family VALUES(10,'联想');
INSERT INTO family VALUES(20,'戴尔');
INSERT INTO family VALUES(30,'小米');
#创建保存笔记本数据的表
CREATE TABLE laptop(
  lid INT PRIMARY KEY,
  title VARCHAR(128),
  price DECIMAL(7,2),  #99999.99
  spec VARCHAR(64),
  detail VARCHAR(5000),
  shelfTime DATE,
  isOnsale BOOLEAN,
  familyId INT
);
#插入数据
INSERT INTO laptop VALUES(1,'小米Air',3799,'开发版','详情1','2020-1-1',1,30);

NULL,空,表示一个无法确定的值,例如暂时无法确定商品的价格,无法确定一个员工的电话...

主键约束的列上不允许为空

NULL是关键字,不能加引号

(2)非空约束-NOT NULL

声明了非空约束的列上禁止插入NULL

(3)唯一约束-UNIQUE

声明了唯一约束的列不允许出现重复的值,允许插入NULL,甚至多个NULL

可能会影响排序

两个NULL之间不能划等号

(4)默认值约束-DEFAULT

使用DEFAULT关键字设置默认值,具体应用方式有两种:

INSERT INTO laptop VALUES(5,'小米Air',DEFAULT...);
INSERT INTO laptop(lid,title,price,spec) VALUES(6,'Apple',...);

(5)检查约束-CHECK

也称为自定义约束,用户可以自己指定约束条件

create table t1(

  score tinyint check(score>=0 and score<=100)

);

mysql不支持检查约束:影响数据的插入速度、对服务器造成比较大的压力

通过JS就可以完成

(6)外键约束

为了建立表之间的关联,外键约束列上的值,必须得在另一个表的主键列中出现过。

外键列和对应的主键列的列类型要保持一致。

foreign key(外键列) references 另一个表(主键列)

#将familyId作为外键,取值范围到family表的fid列
foreign key(familyId) references family(fid)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值