SQL 约束&索引

本文详细介绍了SQL约束,包括NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY和CHECK,以及索引的作用和类型,如Btree、Hash、FullText和Spatial。特别讨论了MySQL中的主键、外键和索引的创建、用法及删除,涉及到的MySQL版本为8.0.16。同时,提到了SQLServer的相关内容,但未详细展开。最后,概述了SQL的DML和DDL语言。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL 约束&索引

记录常用的约束(主键,外键)和索引的用法。

1.标准SQL

1.1 Constraints 约束

Constraints:约束用于限制加入表的数据的类型。

约束主要有:

  • 1.NOT NULL
  • 2.UNIQUE
  • 3.PRIMARY KEY
  • 4.FOREIGN KEY
  • 5.CHECK
  • 6.DEFAULT

经常混乱的:
UNIQUE:约束唯一标识数据库表中的每条记录。
PRIMARY KEY:主键必须包含唯一的值,主键不允许NULL值,自动定义成UNIQUE约束,每个表都应有且只有一个主键。
FOREIGN KEY:一个表中的FOREIGN KEY指向另一个表中的PRIMARY KEY。
CHECK:用于限制列中的值的范围。

1.2 Index 索引

INDEX:在不读取整个表的情况下,使用索引可以更快地查找数据。
将每行数据中的某个(多个)字段提取出来跟这行数据形成映射关系,通过使用索引,不再匹配每行的所有字段,时间复杂度和磁盘IO大大降低,同时利用数据结构的特性达到快速定位某行数据的目的。

注意:
1.UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
2.每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

2.MySQL

  • 1.数据库版本
    MySQL:8.0.16
  • 2.完整栗子
    主表为t_student,子表为t_score
CREATE TABLE `t_student` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(255) DEFAULT '' COMMENT '姓名',
  `age` int(11) DEFAULT '10' COMMENT '年龄',
  `sex` varchar(255) DEFAULT 'Male' COMMENT '性别',
  `hobbies` varchar(255) DEFAULT '' COMMENT '爱好',
  `address` varchar(255) DEFAULT '' COMMENT '住址',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_student_name_address` (`name`,`address`) USING BTREE,
  KEY `idx_age_sex` (`age`,`sex`)
) ENGINE=InnoDB AUTO_IN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值