MySQL:字段约束与索引
字段约束
MySQL的字段约束共四种:
| 约束名 | 关键字 | 描述 |
|---|---|---|
| 主键约束 | PRIMARY KEY | 字段值唯一,且不能为NULL |
| 非空约束 | NOT NULL | 字段值不能为NULL |
| 唯一约束 | UNIQUE | 字段值唯一,但可以为NULL |
| 外键约束 | FOREIGN KEY | 保持关联数据的逻辑性 |
关于主键约束
- 主键约束字段要求字段值的唯一性,且不能为NULL
- 建议使用数字类型的主键,提高检索速度,一般设置自增主键或GUID
CREATE TABLE t_emp(
id INT PRIMARY KEY AUTO_INCREMENT,
...
);
关于非空约束
- 插入数据时,该字段值不能为NULL
- NULL不是空字符串
- 可以使用NOT NULL,但设置默认值
CREATE TABLE t_emp(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
married BOOLEAN NOT NULL DEFAULT FALSE
);
关于外键约束
外键约束主要用于保证数据的逻辑关系
t_dept:
| dep_id | dep_name | tel |
|---|---|---|
| 11 | 研发部 | 111 |
| 12 | 测试部 | 112 |
| 13 | 销售部 | 113 |
t_emp:
| emp_num | name | sex | dep_id |
|---|---|---|---|
| 1 | 张三 | 男 | 11 |
| 2 | 李四 | 男 | 12 |
外键约束写在子表中:
-- 父表:
CREATE TABLE t_dept(
dep_id INT USIGNED PRIMARY KEY,
dep_name VARCHAR(20) NOT NULL UNIQUE,
tel CHAR(3) UNIQUE
);
-- 子表:
CREATE TABLE t_emp(
emp_num INT USIGNED PRIMARY KEY,
name VARCHAR(20) NOT NULL,
sex CHAR(3) ENUM('男','女') NOT NULL,
dep_id INT USIGNED,
FOREIGN KEY (dep_id) REFERENCES t_dept(dep_id)
);
设置外键约束后,若要删除父表内容,必须先删除子表相关的内容,这种约束能保证逻辑关系。
但另一方面,多表的相互外键关联,可能形成外键闭环,导致无法删除任何一张表的记录。故可以不设置外键约束,仅依靠应用程序的逻辑来保证。
索引机制
什么是数据库索引?
简单来说,索引是关系数据库中对某一列或多个列的值进行预排序的数据结构,一般数据库需要维护索引对应的二叉树。
为什么需要索引?
数据库如果有上万甚至上亿条记录,想要提高查询速度,就需要使用索引。
如何创建索引?
①、创建表的时候添加索引
CREATE TABLE table_name(
...,
INDEX [索引名] (字段名),
...
);
索引名是可选项,如果不定义索引名,则使用字段名作为索引名。
②、在已创建的表中添加索引
# 语法一:
CREATE INDEX 索引名 ON 表名(字段);
# 语法二:
ALTER TABLE 表名 ADD INDEX [索引名](字段名)
# 查询索引
SHOW INDEX FROM 表名;
# 删除索引
DROP INDEX 索引名 ON 表名;
创建索引要遵循什么原则?
哪些表需要加索引?:数据量大,且经常被查询的数据表
哪些字段要加索引?:经常作为检索条件的字段
哪些字段不要加索引?:大字段类型(如长度超过50的字符串)
MySQL:字段约束与索引的更多相关文章
- 2-16 MySQL字段约束-索引-外键
一:字段修饰符 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table worker(id int not null,name varchar(8) ...
- mysql字段约束-索引-外键---3
本节所讲内容: 字段修饰符 清空表记录 索引 外键 视图 一:字段修饰符 (约束) 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table wo ...
- mysql字段约束
为了确保数据的完整性和唯⼀性,关系型数 据库通过约束机制来实现目. 一. unique 唯一性约束 : 值不可重复: 二. not null 非空约束 : 值不可为空: 三. def ...
- 总结: MySQL(基础,字段约束,索引,外键,存储过程,事务)操作语法
1. 显示数据库列表 show databases; # 查看当前所有数据库 show databases \G #以行的方式显示 2. 在命令行中,执行sql语句 mysql -e 'show ...
- MySQL (三)-- 字段属性、索引、关系、范式、逆规范化
1 字段属性 主键.唯一键和自增长. 1.1 主键 主键:primary key,一张表中只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复. 一张表只能有最多一个主键. 1.1 ...
- mysql约束与索引的区别
一:约束 作用:是为了保证数据的完整性而实现的一套机制,它具体的根据各个不同的数据库的实现而有不同的工具(约束): 这里主要讲解mysql的约束: 1.非空约束:not null; 指示某列不能存储 ...
- MSSQL 如何删除字段的所有约束和索引
原文MSSQL 如何删除字段的所有约束和索引 代码如下: ---------------------------------------------------------- -- mp_DropC ...
- .Net程序员学用Oracle系列(6):表、字段、注释、约束、索引
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.表 1.1.创建表 1.2.修改表 & 删除表 2.字段 2.1.添加字段 2.2.修改字段 & 删除字段 ...
- (转)Mysql哪些字段适合建立索引
工作中处理数据时,发现某个表的数据达近亿条,所以要为表建索引提高查询性能,以下两篇文章总结的很好,记录一下,以备后用. 数据库建立索引常用的规则如下: 1.表的主键.外键必须有索引: 2.数据量超过3 ...
随机推荐
- 数理统计7:矩法估计(MM)、极大似然估计(MLE),定时截尾实验
在上一篇文章的最后,我们指出,参数估计是不可能穷尽讨论的,要想对各种各样的参数作出估计,就需要一定的参数估计方法.今天我们将讨论常用的点估计方法:矩估计.极大似然估计,它们各有优劣,但都很重要.由于本 ...
- 三维CAD——基于B_rep的建模操作
内容来自高老师的<三维CAD建模>课,本文就主要介绍半边结构和欧拉操作以及代码实现. 1. 边界表示法及其数据结构 · 拓扑结构 a.拓扑元素:面.边.点.体 b.拓扑关系:9种.V{V} ...
- 用servlet在网页中打印字符串(初接触)、servlet调用过程
一.servlet是什么: 二.在官方文档中点servlet 这就是servlet的方法,这里说一下什么叫生命周期的方法(life-cycle methods):就是这个对象一旦创生之后一定会执行的方 ...
- Musical Theme POJ - 1743 后缀数组
A musical melody is represented as a sequence of N (1<=N<=20000)notes that are integers in the ...
- Butterfly美化
Butterfly美化 首先提示,本文量特别大哦!基本上有所有的美化,还在持续更新ing,谨慎入坑......... 主题配置文件修改 基础配置 最最最开始的,好不容易搭建了自己的个人博客,当然要写上 ...
- HEXO添加置顶功能
使用库:参考 http://wangwlj.com/2018/01/09/blog_pin_post/ 目前已经有修改后支持置顶的仓库,可以直接用以下命令安装.(cmd 到博客根目录,nmp运行) $ ...
- zoj-3872 Beauty of Array (dp)
]Edward has an array A with N integers. He defines the beauty of an array as the summation of all di ...
- 如何在 VSCODE 中高效使用 R 语言
VSCODE 配置 R 一.功能特性展示 之前一直在用 Rstudio 来编写 R,也尝试用过 Pycharm 配置 R 环境. 但是由于现在需求要同时满足 Python,R 和网站要同时开发,为了避 ...
- Bash on Ubuntu on Windows ( Windows Subsystem for Linux)
1 # Bash on ubuntu on Windows http://www.cnblogs.com/anonymous-ufo/p/6143480.html 1 1 如何启用Bash on u ...
- rm -rf .git/gc.log
rm -rf .git/gc.log ➜ test git:(abc) gp Auto packing the repository in background for optimum perform ...