当数据库的字段名和关键字重名
使用返引号` `括起来,
在java中mybatis plus框架处理办法
在MyBatis-Plus的查询构造器中,也可以直接在调用字段时使用反引号:
queryWrapper.eq("`order`", "some_value");
在实体类上使用@TableField
注解:
对应数据库
@TableField("`order`")
private String order;
也可以关闭对应数据库
@TableField(exist = false)
private String action;
drop table if exists type_name
如果存在的话删除表type_name,在执行sql文件的时候,特殊注意,
MySQL外键
逻辑外键和物理外键
物理外键是指通过数据库语法实际设置为外键的情况。在数据库中定义两张表时,使用foreign key
来关联它们,从而确保多表之间的数据依赖关系的正确性。
逻辑外键并不是数据库本身的外键约束,但在应用程序中的逻辑可以确保类似的约束效果。逻辑外键并不是数据库本身的外键约束,但在应用程序中的逻辑可以确保类似的约束效果。
只有表一和表二某俩个字段相同才会进行更新表一
UPDATE t_oa_notice_department_user AS t1
JOIN shoucang AS t2 ON t1.notice_id = t2.notice_id AND t1.employee_no = t2.employee_no
SET t1.is_collect = 1;
索引
CREATE INDEX index_name ON table_name (column_name);
MySQL 提供了
EXPLAIN
关键字,这是一个非常有用的工具,用于分析 SQL 查询的执行计划。通过EXPLAIN
,您可以深入了解查询是如何被 MySQL 优化器处理并执行的,从而帮助您进行性能调优。在
EXPLAIN
的输出中,type
列显示了查询使用的访问类型,这些类型按通常的性能从低到高排序为:ALL
、index
、range
、ref
、eq_ref
、const
和system
。
all
表示全表扫描数据文件返回符合要求的记录。index
表示全表扫描索引文件返回符合要求的记录。range
表示检索指定范围的行,常见于使用>
、<
、BETWEEN
、IN
、LIKE
等运算符的查询中。ref
表示两表查询时,驱动表可能返回多行数据,也就是查询条件在主表中是加了一个普通索引。eq_ref
表示两表查询时,驱动表只返回一行数据,也就是查询条件在主表中是唯一的。const
表示索引一次就能得到结果,一般是使用唯一索引或者主键作为查询条件。system
表示表中仅有一行数据,很少见到。除了
type
列,EXPLAIN
输出中的extra
列也非常重要,它提供了额外的信息来描述 MySQL 如何解决查询。
应尽量避免
using filesort
,因为它表示 MySQL 需要对结果进行额外的排序操作,这通常是低效的。同样,
using temporary
表示 MySQL 需要使用临时表来存储中间结果,这通常会增加查询的复杂性和开销。如果出现
using index
,则表示查询只需要使用索引中的信息,无需回表查询数据,这是非常高效的。除了关键字
EXPLAIN
查看还有点击,解释已选择
SQL用时间作为条件进行比较
SELECT * FROM USER WHERE BIRTHDAY >TO_DATE('2002-10-20', 'YYYY-MM-DD')
CASE WHEN用法
SELECT name, age, CASE WHEN age < 18 THEN '未成年' WHEN age BETWEEN 18 AND 65 THEN '成年' ELSE '老年' END AS age_group FROM users;
IF用法
SELECT name, age, IF(age < 18, '未成年', '成年及以上') AS age_group FROM users;