MySQL的外键约束、基本查询、快速见表、函数实现与案例

1. Drop、Truncate、Delete的区别

  1. 执行速度
    Drop > Truncate > Delete
  2. 类型
    Drop与Truncate属于DDL,不支持回滚
    Delete属于DML,支持回滚
  3. 使用场景
    Drop用于删除表,表的内存空间的回收
    Truncate用于删除表内的全部数据,其真正的执行是删除了原表,同时创建了一个新的同名同字段的空表,即表的内存空间回到了初始化时的空间
    Delete用于删除表内的全部数据或指定数据,其真正的执行是遍历字段内的数据进行条件判断的执行
  4. 实现
drop table tbname;-- 删除表

truncate table tbname;-- 删除表内全部数据

delete from table;//删除表内全部数据

delete from table tbname 
		where condition;//删除表内符合条件的数据

2. 外键约束

外键约束用于实现保证级联操作的数据完整性

2.1 实现

alter table tbname1 
add constraint fk_tbname1_tbname2 
foreign key (field1) 
references tbname2(field2);-- 将tbname1中field1与tbnaem2中field2相关联

alter table tbname1 
drop foreign key fk_tbname1_tbname2;-- 移除外键约束

2.2 外键删改策略

当需要删改外键时(如需要删该tbname2中field2),因为存在外键约束,所以被外键约束的field会发生一定的变化,sql提供了三种策略实现变化

  1. 不允许(默认):外键删改时会报错
  2. 级联策略:外键删改,相关联的field发生相应的变化(同样被删除或被修改)
alter table tbname1 
add constraint fk_tbname1_tbname2 
foreign key (field1) 
references tbname2(field2) 
on delete cascade 
on update cascade;
  1. 置空策略:外键删改,相关联的field被置空(值变成null)
alter table tbname1 
add constraint fk_tbname1_tbname2 
foreign key (field1) 
references tbname2(field2) 
on delete set null 
on update set null;

3. 简单基本查询

3.1 全部字段数据查询

select * from tbname;

3.2 指定字段数据查询

select field from tbname;

3.3 指定字段数据查询并重命名

select field newname from tbname;

3.4 字段数据查询并指定排序

select * from tbname order by field asc;-- 默认升序
select * from tbname order by field desc;-- 显式降序

3.5 简单运算字段数据查询

select field1+field2 from tbname;-- 加减乘除皆可,但需要被指定的字段数据支持

3.6 去除重复字段数据查询

select distinct field from tbname;

4. where条件查询

4.1 实现

select * from tbname where condition;

4.2 条件符号

  1. 判断数值用 =
  2. 判断空用 is
  3. 不等于用 != 或 <>
  4. 在…之间用 value1 and value2 或 value1 && value2 或 between value1 and value2
  5. 或用 or 或 || 或 in(value1 value2)

5. 模糊查询

5.1 实现

select * from tbname field like '';

5.2 实例

select * from tbname field like'k%';-- 查询以k开头的field数据
select * from tbname field like'%k';-- 查询以k结束的field数据
select * from tbname field like'%k%';-- 查询包含k的field数据
select * from tbname field like'k%k';-- 查询以k开头与结尾的field数据
select * from tbname field like'____';-- 查询包含4个字符的field数据
select * from tbname field like'%\_%';-- 查询包含_的field数据
select * from tbname field like'%\\\\%';-- 查询包含\的field数据 

6. 快速建表及获取数据

  1. 创建一个与tbname2拥有形同字段,但空数据的表
create table tbname1 
select * from tbname2
where 1=2;
  1. 在tbname1中插入tbname2指定字段的数据
insert into tbname1 
select file from tbname2;
  1. 插入多条数据
insert into tbname values(value1,value2...),(value11,value22...);

7. 单行函数

7.1 字符串函数

字符串函数

7.2 数值函数

数值函数

7.3 日期与时间函数

日期与时间函数

7.4 流程函数

流程函数

7.5 JSON函数

JSON函数

7.6 其它函数

其它函数

8. 简单多行函数

简单多行函数

9. 分组函数

9.1 实现顺序

select field
from tbname
where condition
group by field
having condition
order by field;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值