MySql、Oracle相关命令和相关问题集合
1.mysql常用命令
–刷新事务
FLUSH PRIVILEGES;
–运行指定sql文件
source /usr/tmp/xxx.sql;
–创建用户,%代码所有地址均可访问
CREATE USER ‘用户名’@‘%’ IDENTIFIED BY ‘密码’;
–导出单表
mysqldump -u 用户名 -p 数据库名 表名 > 文件名.sql;
–中文排序
CONVERT(a.name USING GBK) ASC;
–设置值为需要的大小(1024×1024×具体MB)
set global max_allowed_packet=314572800;
–创建数据库并指定编码
CREATE DATABASE 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
2.Mysql镜像的配置文件路径:
/etc/mysql/mysql.conf.d/mysqld.cnf
3.mysql忽略大小写
配置文件里添加:lower_case_table_names=1
4.mysql服务部署成功,telnet不通
修改配置文件:bind-address=0.0.0.0
Oracle
1.Oracle中存在某字段重复数据需要获取最新第一条数据
需求:查询FK_B_PR_VISIT_SITUATION 表中,根据ID_SN和CREATE_DATE 倒序,获取每个ID_SN最新的数据
1.先根据FK_B_PR_VISIT_SITUATION 查询并且根据ID_SN、CREATE_DATE 降序,显示ROW_NUMBER(这个代表此条数据这分组中的第几行)
2.把步骤的结果当作表,加上where rm = 1 ,代表第一行数据
SELECT * FROM(SELECT ID_SN, NM, CREATE_DATE, ROW_NUMBER () OVER ( PARTITION BY id_sn ORDER BY create_date DESC ) AS rn
FROM FK_B_PR_VISIT_SITUATION WHERE del_flag = 0 ORDER BY ID_SN, CREATE_DATE DESC ) WHERE rn = 1
2.Oracle sql计算两个时间之差
天:
ROUND(TO_NUMBER(END_DATE - START_DATE))
小时:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)
分钟:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)
秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)
毫秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)
3.Oracle sql递归查询
根据id与parentId递归往下查询
SELECT id as id from SYS_OFFICE a where a.DEL_FLAG=‘0’
START WITH a.ID=‘xxxxxxxxxxxxx’ CONNECT by PRIOR a.id=a.PARENT_ID)
原文链接:https://blog.csdn.net/hometing218/article/details/121422669