mysql(二)(表的五种约束、索引的概念以及相关操作、insert、update、delete、truncate)

表的约束(5种)

  • 检查性约束,如:教室中所有人的性别;工作后薪水满足的条件。
  • 非空约束,例如:人的名字,不允许为空。
  • 唯一性约束,例如:电子邮件地址,不可以重复。
  • 主键约束——通过这个列的值可以唯一的确认一行记录,主键约束隐含Not null + Unique
  • 外键约束——一个表想引用另一个表的某一个字段,这种引用关系就是外键

 

表的约束

约束条件说明
PRIMARY KEY主键约束,用于唯一标志对应的记录
FOREIGN KEY外键约束(用于声明表和表之间的关系)
NOT NULL 非空约束
UNIQUE唯一约束
DEFAULT默认值约束,用于设置字段默认值

 

 

主键约束

 

1、单字段主键——在创建表的对应字段后面加上 primary key即可

 

 

2、多字段主键——创建表时将主键用PRIMARY KEY括起来即可

 

 

非空约束

创建表时,将不允许为空的字段后面加上 not null 关键字即可

 

 

唯一约束

创建表时,将字段后面加上 unique 关键字即可

 

 

默认约束

创建表时,将字段后面加上 default关键字,然后给一个默认值即可

 

 


设置表的字段的自动增加

添加关键字 auto_increment 即可

 

 


索引

 

索引就是把数据库中的某一列或者某几列拿出来进行排序,方便我们快速查找。

 

索引分类

 

1、普通索引

由key或index定义的索引,他是mysql中的基本索引类型,可以创建在任何数据类型中,其值是否唯一和非空由字段本身的约束条件决定。

 

2、唯一索引

unique定义的索引该索引所在字段的值必须是唯一的

 

3、全文索引

FULLTEXT定义的索引,他只创建在char、varchar或text类型的字段上。而且,现在只有myisam存储引擎支持全文索引。

 

4、单列索引

在表中单个字段上创建索引,他可以是普通索引、唯一索引或者全文索引,只要保证该索引只对应表中的一个字段即可

 

5、多列索引

在表中多个字段上创建索引,只有在查询条件中使用了这些字段中的第一个字段时,该索引才会被使用。

 

 

 

创建索引

 

创建表的时候创建索引

 

1、创建普通索引

 

 

验证一波

补充:explain 可以用于显示查询语句的执行情况

上图说明查询时,确实用到了id作为索引进行查询。

 

 

2、创建唯一索引

 

创建唯一索引的方法是在创建普通索引的基础上,前面加上关键字unique,给所以起一个别名,这里起的是unique_id,指定按照ASC方式(即升序)进行排列。

 

 

3、创建全文索引

FULLTEXT定义的索引,他只创建在char、varchar或text类型的字段上。而且,现在只有myisam存储引擎支持全文索引。

 

 

4、创建多列索引

在表中多个字段上创建索引,只有在查询条件中使用了这些字段中的第一个字段时,该索引才会被使用。

 

 

5、创建空间索引

 

 

在已存在的表上加入索引

 

1、创建普通索引

 

 

2、创建唯一索引

 

 

使用alter创建索引

 

alter table 表名 add index 索引名 (被索引的字段名);

 

 

删除索引

 

方法一——alter

alter table 表名 drop index 索引名;

 

方法二_drop

drop index 索引名 on 表名;

 

 


添加、更新与删除数据

 

insert

如果某参数设置的是自动增长,在insert的时候,我们可以不用为其赋值。赋值对应位置写null即可。

 

上面的insert语句可以简化。因为插入的是表中的每个字段,因此字段名可以省略

 

还可以一次插入多个数据

 

 

update

 

1、修改所有人的薪水为500元

如果不指定,则会修改整张表中被修改字段的值(下图中把所有的998都改成了500)

 

2、将张飞的薪水修改为5000

 

3、将关羽的薪水改成3000,将工作改为ccc

 

4、将刘备的薪水在原有的基础上加100

 

 

 

delete

 

1、删除张飞的记录

 

2、删除表中所有记录

 

3、使用truncate删除表中记录

 

truncate和delete的区别

  • truncate将表摧毁,然后建立一张和原表一样的空表
  • delete逐条删除表中数据

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
deletetruncateMySQL用于删除数据的两个命令,它们有以下几个差别: 1. 回滚能力:delete语句可以回滚,即在执行delete后可以使用rollback命令将删除的数据恢复到之前的状态,而truncate命令不能回滚。 2. 删除范围:delete语句可以使用where子句来指定删除的条件,可以选择性地删除满足条件的记录,而truncate命令只能删除整个的所有数据,无法进行条件匹配。 3. 空间占用:当使用truncate命令删除的数据时,索引所占用的空间会恢复到初始的大小,而delete命令删除数据后,索引所占用的空间不会减少。 4. 外键约束truncate命令不能删除带有外键约束,如果要删除带有外键的,需要先取消外键约束,然后再使用truncate命令进行删除。而delete命令可以删除带有外键约束。 总结来说,delete命令适用于需要条件删除或回滚的情况,而truncate命令适用于删除整个的数据且不需要回滚的情况。 #### 引用[.reference_title] - *1* [MySQLtruncatedelete的区别](https://blog.csdn.net/lml_0916/article/details/125770651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [MYSQLTRUNCATEDELETE的区别](https://blog.csdn.net/tianshan2010/article/details/107897290)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值