美文网首页
数据库表字段约束与索引

数据库表字段约束与索引

作者: 叩首问路梦码为生 | 来源:发表于2022-12-15 14:02 被阅读0次

第一范式:原子性

1.第一范式是数据库的基本要求,不满足这一点就不是关系数据库
2.数据表的每一列都是不可分割的基本数据项,同一列中不能有多个值,也不能存在重复的属性。


数据库第一范式.jpeg

第二范式:唯一性

1.数据表中的每条记录必须是唯一的。为了实现区分,通常要为表
加上一个列用来存储唯一标识,这个唯一属性列被称作主键列


第二范式唯一性.png

第三范式:关联性

1.每列都与主键有直接关系,不存在传递依赖


第三范式关联性.png

2.依照第三范式,数据可以拆分保存到不同的数据表,彼此保持关联


第三范式关联性2.png

字段约束

1.MysQL中的字段约束共有四种:

约束名称 关键字 描述
主键约束 PRIMARY KEY 字段值唯一,旦不能为NULL
非空约束 NOT NULL 字段值不能为NULL
唯一约束 UNIQUE 宇段值唯一,且可以为NULL
外键约束 FOREIGN KEY 保持关联数据的逻辑性

主键约束

1.主键约束要求字段的值在全表必须唯一,而且不能为NULL值
2.建议主键一定要使用数字类型,因为数字的检索速度会非常快
3.如果主键是数字类型,还可以设置自动增长

CREATE TABIE t_teacher(
id INT PRIMARY KEY AUTO_INCREMENT,
.....
);

非空约束

1.非空约束要求字段的值不能为NULL值
2.NULL值以为没有值,而不是 “ 空字符串

CREATE TABIE t_teacher(
id INT PRIMARY KEY AUTO_INCREMENT, 
name VARCHAR (200) NOT NULL, 
married BOOLEAN NOT NULL DEFAULT FALSE
) ;

唯一约束

1.唯一约束要求字段值如果不为NULL,那么在全表必须唯一

CREATE TABLE t_teacher (
......
tel CHAR (11) NOT NULL UNIQUE
);

外键约束

1.外键约束用来保证关联数据的逻辑关系
2.外键约束的定义是写在子表上的

CREATE TABLE t_dept(
deptno INT UNSIGNED PRIMARY KEY,
dname VARCHAR(20) NOT NULL UNIQUE,
tel CHAR(4) UNIQUE
);

CREATE TABLE t_emp(
empno INT UNSIGNED PRIMARY KEY,
ename VARCHAR(20) NOT NULL,
sex ENUM("男","女") NOT NULL,
deptno INT UNSIGNED NOT NULL,
hiredate DATE NOT NULL,
FOREIGN KEY (deptno) REFERENCES t_dept(deptno)
);

如何创建索引

1.利用index给字段添加索引, 查找记录速度会非常快(利用二叉树的二分查找)
创建索引sql语句如下 ,格式为:INDEX [索引名称](字段), idx_type为自定义索引名字,可省略

CREATE TABLE t_message(
id INT UNSIGNED PRIMARY KEY,
content VARCHAR(200) NOT NULL,
type ENUM("公告","通报","个人通知") NOT NULL,
create_time TIMESTAMP NOT NULL,
INDEX idx_type(type)
);

如何添加与删除索引

1.语法格式如下

  • CREATE INDEX 索引名称 ON 表名(字段)
  • ALTER TABLE 表名称 ADD INDEX[索引名了字段);
  • SHOW INDEX FROM 表名;
  • DROP INDEX 素引名称 ON 表名;
DROP INDEX idx_type ON t_message;
CREATE INDEX idx_type ON t_message (type) ;
SHOW INDEX FROM t_message;
ALTER TABLE t_message ADD INDEX idx_type (type) ;

索引的使用原则

1.数据量很大,而且经常被查询的数据表可以设置索引
2.索引只添加在经常被用作检索条件的字段上面
3.不要在大字段上创建索引

相关文章

  • 联合索引

    索引 索引的使用 什么时候使用索引表的主关键字 表的字段唯一约束 直接条件查询的字段 查询中与其它表关联的字段 查...

  • Oracle jdbc获取元数据过程优化

    一、背景 因业务需要,需要使用java程序自动获取oracle数据库的元数据信息(包括表、字段、索引、约束。。。)...

  • MySql : 二、数据库表的约束、表和表之间的关系以及范式

    前言 本篇主要介绍了数据库中表字段的约束,表和表之前的关系,以及数据库设计的三大范式。 目录 一、数据库表的约束二...

  • 数据库表字段约束与索引

    第一范式:原子性 1.第一范式是数据库的基本要求,不满足这一点就不是关系数据库2.数据表的每一列都是不可分割的基本...

  • 索引、视图

    索引 主键和UNIQUE约束字段会自动添加索引。 约束字段会自动添加索引。 因此根据主键查询效率较高。尽量根据主键...

  • 关于数据库SQL调优

    数据库优化 高效使用索引 尽可能避免全表扫描 减少无效数据的查询 索引创建规则 idx_表名_字段名(字段名可以是...

  • 2020-06-10--flask06--flask基础06

    数据库的连接 app中常见的数据库设置 model层模型字段,字段约束,表间关系 SQLAlchemy查询执行器及...

  • MongoDB forEach()

    对全部表进行操作 1.为本数据库所有表/集合建索引 eg:索引字段“odi_id” 2.获取一个数据库中全部表名/...

  • Microsoft SQL Server数据库完整性约束、索引、

      本文介绍基于Microsoft SQL Server软件,实现数据库表完整性约束、索引与视图创建等操作的方法。...

  • 03_sql创建表时字段属性设置

    数据库表的每个字段都有很多的约束,在我们创建表的时候就可以指定每个表的约束!PRIMARY KEY:主键(1.包含...

网友评论

      本文标题:数据库表字段约束与索引

      本文链接:https://www.haomeiwen.com/subject/kgxlqdtx.html