MySql知识整理

本文围绕数据库操作展开,介绍了timestamp类型数据随操作更新、时间函数使用、表名与字段修改、数据增删改查等操作,还提及了SQL语句拼接、case语句区别、索引优化、定时器创建、表清空等内容,以及分组、查询条件对索引的影响等优化技巧。

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

数据库值类型为 timestamp 并且 根据当前时间戳更新框打钩 之后,该条数据每一次操作该列都会进行相应的更新,此功能适用于数据基本字段  修改时间

NOW() 获取当前时间

DATE_ADD() 添加时间

DATE_SUB() 减少时间

DATE_SUB(date , interval 1 type )

1 参数是您希望添加的时间间隔。

type 参数可以是下列值:

MICROSECOND

SECOND

MINUTE

HOUR

DAY

WEEK

MONTH

QUARTER

YEAR

SECOND_MICROSECOND

MINUTE_MICROSECOND

MINUTE_SECOND

HOUR_MICROSECOND

HOUR_SECOND

HOUR_MINUTE

DAY_MICROSECOND

DAY_SECOND

DAY_MINUTE

DAY_HOUR

YEAR_MONTH

rename table A_copy to B;-- 表名修改
alter table B change amount a char(32) not null default '123';-- 修改字段名


update  plate3 set plate =  SUBSTR(plate FROM 1 FOR INSTR(plate,'|')-1) -- 修改字段中的字符串
delete from plate2_copy where plate in(select plate from plate3) -- 删除相同字段

select * from user_day_bill where 1=1 and user_id = 1 and  date_format(creat_time,'%Y-%m')='2018-07' -- 针对特定的时间进行查询也可以进行模糊查询

-- 批量插入数据
insert into user_day_bill(user_id,user_name,user_balance,creat_time)select USR_ID,USR_NAME,USR_INTEGRAL,now() from t_user_info;

-- 查询当前月份的历史记录表
set @a= concat('select * from history_record_',date_format(now(),'%y%m'));-- 设置(并拼接)SQL语句为变量
prepare a from @a;-- 定义预处理语句
execute a;-- 执行预处理语句
deallocate prepare a ;-- 释放预处理语句(执行)

case 字段 when 字段值 then 值 else 值2 end 
case when 条件 then 值 else 值2 end
这两个语句是有区别的,需要谨慎注意

comment 为表或表中字段添加注释

where与join on的条件筛选不同之处:where 会把不符合条件的全部筛除,
join on只能单条件搜索,符合条件的会被留下,多条件进行连接时可以在()中进行条件连接\
left join时不可以使用第二个表中的字段作为where条件,否则会导致left失效,左表中不能进行关联的数据将会被筛除

索引对于查询效率的优化是相当巨大的,索引的基数不同对于索引的搜索优化的影响也是巨大的
基数太小(相对于总数据数)的索引会有负优化的效果,反而会降低查询的效率和时间

create event if not exists eventJob 
on schedule every 1 second 
on completion preserve
do call mypro();
-- 创建定时器用来执行某个函数或SQL

-- innoDB数据库表在通过主键修改数据时锁行,其余情况会锁表

create event if not exists eventJob -- 创建一个事件如果不存在
on schedule every 1 second -- 事件每秒执行一次
on completion PRESERVE -- 
do call mypro(); -- 要执行的sql语句或函数

-- 清空表
truncate tableName;-- 执行的是整表删除,不支持事务,执行后无法回滚

使用 group by 进行分组的时候最好选择区分度小的字段进行,区分度小的情况下,分组效率更高

where子句中的查询条件中如果没有索引的字段的查询范围超出了有索引的字段的查询范围,索引将不会在这里起作用

limit ?,?与limit ? offset ?的区别:
limit ?,? :

-- 查看mysql当前的连接状态

show full processlist;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值