MySql之空值与非空与自动编号以及约束

1、空值与非空约束
NULL:字段值可以为空
NOT NULL:字段值禁止为空,NOT NUL
eg:
CREATE TABLE tb2(
username VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED NULL
);
2、自动编号(保证某一条记录的唯一性,此记录不能够重复)
为某个字段添加AUTO_INCREMENT属性,必须与主键组合使用(反之不一定),默认起始值为1,每次增量为1
3、主键PRIMARY KEY:
主键约束:每张数据表只能存在一个主键,主键保证记录的唯一性、主键自动为NOT NULL
eg:
CREATE TABLE tb3(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL
);
然后去查看数据表结构
4、唯一约束UNIQUE KEY
唯一约束可以保证记录的唯一性、唯一约束的字段可以为空值(NULL),每张数据表可以存在多个唯一约束
eg:既有主键约束又有唯一约束的例子
CREATE TABLE tb5(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL UNIQUE KEY,
age TINYINT UNSIGNED
);
SHOW COLUMNS FROM tb5;

给其中写上几条记录:
INSERT tb5(username,age) VALUES(‘TOM’,22);
INSERT tb5(username,age) VALUES(‘TOM’,22);//系统提示错误
5、默认约束 DEFAULT
当插入记录时,如没有明确字段赋值,则自动赋予默认值
//123表示性别 3表示保密
CREATE TABLE tb6(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL UNIQUE KEY,
sex ENUM(‘1’,’2’,’3’) DEFAULT ‘3’
);
6、外键约束 FOREIGN KEY
1)外键约束的要求
*父表和子表使用相同的存储引擎,而且禁止使用临时表//有外键的表称之为子表,而子表所参照的表称之为父表
*数据表的存储引擎只能是INNODB
*外键列和参照列必须具有相似的数据类型,其中数字的长度或是否有符号必须相同 字符的长度则可以不同
*外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL不会自动创建索引,主键在创建的同时会自动创建索引,如果参照列不存在索引的话,MySQL会自动创建索引.
eg:
*打开数据库:USE test;
*创建第一张表:省份表:
CREATE TABLE province(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL
);
*是否采用默认引擎,可以查看原来的创建命令
SHOW CREATE TABLE province;
*创建第二张数据表:用户表

CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
//pid是我们的外键,参照父表中的id字段
pid BIGINT,//数据类型不一致,和id中的数据类型不一样,出现错误
FOREIGN KEY(pid) PREFERENCES province(id)
);

CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
//pid是我们的外键,参照父表中的id字段
pid SMALLINT,//但是默认为有符号位,出现错误
FOREIGN KEY(pid) PREFERENCES province(id)
);

CREATE TABLE users1(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
//pid是我们的外键列,参照父表中的id(参照列)字段,显示正确
pid SMALLINT UNSIGNED,
FOREIGN KEY(pid) PREFERENCES province(id)
);
*显示索引,看参照列是否创建了索引,此处的参照咧是主键,所以创建了索引
SHOW INDEXES FROM province[\G];
2)外键约束的参照操作
*CASCADE:从父表删除或更新且自动删除或更新子表中相应的匹配的行
*SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL),每张数据表可以存在多个唯一约束
*RESTRICT:拒绝对父表的删除或更新操作
*NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同==拒绝对父表的删除或更新操作

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值