mysql语法
查询数据库所有外键关系
select concat(fks.constraint_schema, '.', fks.table_name) as foreign_table, '->' as rel, concat(fks.unique_constraint_schema, '.', fks.referenced_table_name) as primary_table, fks.constraint_name, group_concat(kcu.column_name order by position_in_unique_constraint separator ', ') as fk_columns from information_schema.referential_constraints fks join information_schema.key_column_usage kcu on fks.constraint_schema = kcu.table_schema and fks.table_name = kcu.table_name and fks.constraint_name = kcu.constraint_name where fks.constraint_schema = 'nacos_config' group by fks.constraint_schema, fks.table_name, fks.unique_constraint_schema, fks.referenced_table_name, fks.constraint_name order by fks.constraint_schema, fks.table_name;
1.时间类的语法
//这里是将日期格式化 ,其作用可以按这个时间分组。从而统计每天的信息 DATE_FORMAT(t1.end_time,'%Y-%m-%d %h:%i:%s') days,
2.将字符串类型结果转为数值型
//mysql查询结果 字符串转int select 字段+0 例如 select MAX(menu_id+0) MID FROM sys_menu
--将数值转为字符串
CAST(t.`super_unit` AS CHAR))
select CONCAT(usf.STAFF_ID,'') personId
3.如果为空则用其他值代替
//如果为空的时候就用1代替 IFNULL(t1.starte,'1') `starte`,
4.mysql中如果使用到关键字报错;可以加上 `` 这个符号,这不是单引号。是键盘左上角数字键1前面的那个符号
5.mybatis的mapper文件中,如果直接使用大于小于号会报错;可以使用转义
//大于符号案例 and t1.entry_time >=#{pd.lastLoginStart} //小于符号案例 and t1.entry_time <=#{pd.lastLoginEnd}
6.将内容整合在一起的语法。用于模糊查询
//将两边的值合并在一起 and t1.name like concat('%',#{pd.name},'%')
like '%${cabinetInfo.keyword}%'
7.mysql 添加表注释
alter table test1 comment '修改后的表的注释';
8.mysql 添加字段注释
alter table tb_coupon_pool modify column `id` varchar(32) NOT NULL comment '主键id';
//注意字段原有的类型加上
9.mysql 查询判空,mybatis中int类型判断,mybatis中xml判断int, 0认为是空字符串,
<if test="pd.ewm !=null and pd.ewm !='' and pd.ewm == 1 "> and t1.positive_ocde_url is not null </if> <if test="pd.ewm !=null and pd.ewm !='' and pd.ewm ==2 "> and t1.positive_ocde_url is null </if>
10.查询结果整合到一起(默认会以逗号分隔)(默认限制结果长度1024,太长会丢失数据)
select t1.id , GROUP_CONCAT(t1.id) marks
from tb_driver t1
GROUP BY t1.id
11、根据时间查询案例(处理起始时间和结束时间为同一天查询为空的问题)
<if test="pd.endtime !=null and pd.endtime !='' "> and t1.create_time <=concat('','${pd.endtime}',' 23:59:59') </if>
12.获取最小值、最大值,进行分组
<!--根据起点终点分组,分别查询价格最低的两个站点 --> <select id="getLineShiftsMoneyMin" parameterType="pd" resultType="pd"> select min(t1.money) money from tb_shifts t1 where t1.lineId =#{lineId} GROUP BY t1.type </select>
13 mysql运算保留两位小数
format(SUM(t1.platmoney/100),2) platmoney,
15、 mysql设置时间默认值
设置数据创建时间默认值,mysql会自动填充当前时间,不用代码处理
CURRENT_TIMESTAMP
数据最后修改时间、勾选 根据当前时间戳更新即可,mysql会在数据修改时根据当前时间修改
16、合并结果、合并多张表的结果,整合
SELECT t1.id,t1.`name` from sys_admin t1 UNION SELECT t2.id,t2.`name` from sys_role t2
17 if用法
SELECT id , if(phone ='' , 'a',phone) b FROM sys_admin 条件成立显示前面代替的字符串,条件不成立 ,显示后面的
18、删除字段
ALTER TABLE tb_quality_inspect_day DROP content;
19、删除记录、删除数据
DELETE FROM tb_quality_inspect_day where is_deleted !='0'
20、修改字段名、修改字段类型、修改字段注释
alter table tb_quality_inspect_day change floor_num floor_num VARCHAR(50) comment "楼层";
21、添加字段语法
ALTER TABLE tb_job ADD COLUMN `is_deleted` varchar(11) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '0' COMMENT '是否删除(0、正常;其他、删除)';
ALTER TABLE tb_job ADD COLUMN `created_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '创建人id';
ALTER TABLE tb_job ADD COLUMN `create_time` datetime DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间';
ALTER TABLE tb_job ADD COLUMN `last_update_time` datetime DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '最后修改时间';
ALTER TABLE tb_job ADD COLUMN `last_update_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '最后修改人id';
-- int类型字段
ALTER TABLE mbgl_doctor_advice ADD COLUMN `advice_type` int NOT NULL DEFAULT '1' COMMENT '医嘱分类,1,用药2,检查3,处置;对应字典adviceType';
22、修改表名
rename table bim_question_log to tb_bim_question_log;
23、mysql获取表字段名称、获取字段注释、获取数据库字段类型
SELECT table_name, COLUMN_NAME dbName, DATA_TYPE dbType, COLUMN_COMMENT label FROM INFORMATION_SCHEMA.COLUMNS where table_name=表名 AND table_schema =数据库名称
24、更改性别面试题sql、修改性别面试题sql
UPDATE test02 set sex=if(sex='1','2','1');
25、mysql时间相隔,获取指定时间到当前时间差,mysql获取两个时间相差天数
DATEDIFF(now(),t3.import_date)
mysql向上取整、向下取整和四舍五入 1.mysql向上取整 SELECT CEIL(1.2) 2.mysql向下取整 SELECT FLOOR(1.2) 3.mysql四舍五入 SELECT ROUND(1.355, 2)
取绝对值绝 对值函数 abs(x) 返回x的绝对值
包含
FIND_IN_SET(str,strlist) strlist 字段名 参数以”,”分隔 如 (1,2,6,8,10,22) 查询字段(strlist)中包含(str)的结果
查询建表语句
SHOW CREATE TABLE "+name
删除表
DROP TABLE t_ssc_dept_ag;
重置主键自增
ALTER TABLE sys_dept2表名 AUTO_INCREMENT = 21000000重置值;
mybatis的主键自增采用数据库的自增生成
@TableId(value="`id`",type = IdType.AUTO)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?