mysql字段约束

本文深入解析MySQL中的主键概念,包括其规则、auto_increment特性及如何清空表记录而不影响自增值。同时,详细介绍了不同类型的索引创建方法,如普通索引、唯一索引、主键索引和全文索引,并提供了实用的SQL语句示例。

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

MySQL主键(Primary Key)是唯一标识表中每行的列或一组列。当定义表的主键时,必须遵循以下规则:

主键必须包含唯一值。如果主键由多个列组成,则这些列中的值的组合必须是唯一的。
主键列不能包含NULL值。 这意味着必须使用NOT NULL属性声明主键列。如果没有指定NOT NULL,MySQL将强制为主键列为NOT NULL。
一张表只有一个主键。

auto_increment字段约束
自动增长
只能修饰 int字段。 表明mysql应该自动为该字段生成一个唯一没有用过的数(每次在最大ID值的基础上加1。特例:如果目前最大ID是34,然后删除34,新添加的会是35.)。对于主键,这是非常 有用的。 可以为每条记录创建一个惟一的标识符

清空表中所有记录:
delete 不加where条件,清空所有表记录。但是delete不会清零auto_increment 值
清auto_increment 值: truncate table xxxx;

索引:
创建普通索引:
方法一:创建表时添加索引 方法二 alter table 表名 add index 索引名称 (字段1,字段2…);
create table 表名(
列定义
key 索引名称 (字段)
key 索引名称 (字段)

唯一索引:
创建表时加唯一索引
create table 表名(
列定义:
unique key 索引名 (字段);
)
修改表时加唯一索引
alter table 表名 add unique 索引名 (字段);
mysql> alter table demo3 drop key uName;
mysql> alter table demo3 add unique(uName);

主键索引:
创建表创建主键索引
mysql> create table demo5( id int(4) not null auto_increment, name varchar(20) default null,primary key(id));

全文索引 (FULLTEXT INDEX)
select 语句 where bName like ‘%网%’ 用% _ 通配符,不通过索引,直接全表扫描。
创建表时创建
create table 表名(
列定义,
fulltext key 索引名 (字段);

改表时添加
alter table 表名 add fulltext 索引名 (字段);
ALTER TABLE books ADD FULLTEXT [索引名] (author )

索引设计原则:
1、索引并非越多越好
2、数据量不大不需要建立索引
3、列中的值变化不多不需要建立索引 row id
4、经常排序(order by 字段)和分组(group by 字段)的列需要建立索引
select a.bTypeId,(select b.bTypeName from category b where a.bTypeId = b.bTypeId) bn,count(*) from books a group by bTypeId;
5、唯一性约束对应使用唯一性索引
Table (id pri,use,name index,pass)

外键约束:每次插入或更新时,都会检查数据的完整性。
通过create table创建外键
语法:
create table 数据表名称(
…,
[CONSTRAINT [约束名称]] FOREIGN KEY [外键字段]
REFERENCES 外键表名
[ON DELETE CASCADE ]
[ON UPDATE CASCADE ]
)
RESTRICT: 拒绝对父表的删除或更新操作。
CASCADE: 从父表删除或更新且自动删除或更新子表中匹配的行。ON DELETE CASCADE和ON UPDATE CASCADE都可用

语法:foreign key 当前表的字段 references 外部表名 (关联的字段) ENGINE =innodb
1、确保参照的表和字段存在。
2、组成外键的字段被索引。
3、必须使用ENGINE指定存储引擎为:innodb.
4、外键字段和关联字段,数据类型必须一致。

通过alter table 创建外键和级联更新,级联删除
alter table 数据表名称 add
[constraint [约束名称] ] foreign key (外键字段,…) references 数据表(参照字段,…)
[on update cascade|set null|no action]
[on delete cascade|set null|no action]
)

删除外键:
alter table 数据表名称 drop foreign key 约束(外键)名称

视图:create view视图名称(即虚拟的表名) as select 语句。

更新或修改视图
alter view视图名称(即虚拟的表名) as select 语句。
update view视图名称(即虚拟的表名)set

删除视图:drop view bc;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值