mysql 常用细节 时间 + 触发器+外键+查询结果创建新表
发布日期:2021-05-07 00:40:06 浏览次数:17 分类:技术文章

本文共 2963 字,大约阅读时间需要 9 分钟。

mysql 常用细节

查询当前日期是周几

select data_format(now, "%w") from test;

mysql 百度百科说 没有boolean类型,但是实际是支持的

create table test(    is_return boolean),insert test values(false);   0insert test values(true);    1

mysql 时间比较 date datetime可以直接比较

crate tablte test(    date1 datetime,    date2 date);insert test values("2021-3-6 10:00:00", "2021-2-7");select * from test where date1 > "2021-3-5";-- 时间相等比较select * from test date1 = "2021-3-6"-- 等价于select * from test date1 = "2021-3-6 00:00:00"

时间比较2

-- 如果只想看日期是否相同select * from test where Date(date1) = '2021-3-6'

时间比较3

-- 查询2021年1月的条目select * from test where date(date1) between '2021-01-01' and '2021-01-31'-- 等价于select * from product where Year(date1) = 2021 and Month(date1) = 1

mysql 获得当前时间

-- 获取当前时间 格式:YYYY-MM-dd HH:mm:ssnow();-- 格式转换    格式:YYYY-MM-ddDATE_FORMAT(NOW(),'%Y-%m-%d')-- 查询示例SELECT * FROM 表名 WHERE 日期字段 >= DATE_FORMAT(NOW(),'%Y-%m-%d')
-- 每秒select SECOND(t), count(*) from test group by SECOND(t);-- 每分钟select MINUTE(t), count(*) from test group by MINUTE(t);-- 每小时select HOUR(t), count(*) from test group by HOUR(t);-- 查询每天的数据select DATE_FORMAT(t,'%Y-%m-%d'), count(*) from test group by DATE_FORMAT(t,'%Y-%m-%d');-- 查询每周的数据select WEEK(t), count(*) from test group by WEEK(t);-- 查询每月的数据select MONTH(t), count(*) from test group by MONTH(t);-- 查询每年的数据select YEAR(t), count(*) from test group by YEAR(t);
-- 加一天DATE_ADD(t,INTERVAL 1 DAY);-- 减一天DATE_SUB(t,INTERVAL 1 DAY);
-- 升序select * from 表名 order by 字段 asc(MySQL中默认是升序排列,可不写)-- 降序select * from 表名 order by 字段 desc-- 同时升降 order by 升序字段 asc,降序字段 desc

mysql 触发器

创建触发器

CREATE TRIGGER trigger_nametrigger_timetrigger_event ON tbl_nameFOR EACH ROWtrigger_stmt

trigger_name:标识触发器名称,用户自行指定; trigger_time:标识触发时机,取值为 BEFORE 或 AFTER;

trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE;
tbl_name:标识建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt:触发器程序体,可以是一句SQL语句,或者用BEGIN 和 END 包含的多条语句。

由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。

另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。

查看触发器

show triggers;SELECT * FROM information_schema.`TRIGGERS`;

删除触发器

drop trigger lease_trigger;

MySQL创建触发器没有权限

解决如下

SET GLOBAL log_bin_trust_function_creators = 1;

外键

删除外键

alter table lease drop foreign key lease_ibfk_1;

添加外键

修改一下外键,下面是个例子:

alter table 表名add constraint 外键名foreign key(字段名) references 主表名(字段名)on delete cascade
alter table lease    add constraint lease_ibfk_1        foreign key(crew_name) references crew(crew_name)            on delete cascade            on update cascade
语法:Foreign Key(column[,...n])references referenced_table_name[(ref_column[,...n])][on delete cascade][on update cascade]注释:column:列名referenced_table_name:外键参考的主键表名称ref_name:外键要参考的表的主键列on delete:删除级联on update:更新级联

查询结果创建新表

CREATE TABLE school SELECT * FROM class

mysql 改表名

ALTER TABLE old RENAME TO new;

mysql 导出(备份)

mysqldump -h主机 -u用户名 -p密码 数据库 表1 表2 ... > 物理位置/文件名.sql导入登录source 位置未登录mysql -uroot -p密码 库名 <  备份文件

MySQL 中止正在执行的SQL语句

show processlist;kill id;
上一篇:mybatis 大于小于
下一篇:注解和反射

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年03月28日 03时24分24秒