oracle自增主键如何实现:
1. 使用序列和触发器的方式来手动实现自增功能, 比较麻烦
2. 在 Oracle 12c 及以上版本中使用 IDENTITY 列来简化自增字段的实现
我们项目用的主键是雪花id
oracle 的date类型字段命名有 时分秒, 在sqldeveloper.exe查询却没展示? 需要设置时间展示格式
SELECT * FROM nls_session_parameters WHERE parameter = 'NLS_DATE_FORMAT';
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
oracle 的mybatis写法和实体类映射
SELECT USER_NAME AS 驼峰命名(注意双引号不能少) 和 mybatis 返回的vo对象 映射
1.字段不要使用char(20), 应该定义为 VARCHAR2(20), 因为char(10)为定长字符串, 存入 张三, 会自动补空格
2.oracle date类型可以存 时分秒吗?
是的,Oracle的DATE数据类型可以存储时分秒。虽然它的名称为“DATE”,但它实际上包含日期和时间信息。oracle日期类型中没有datetime类型 Date类型的数据可以显示到年月日,也可以显示到年月日时分秒
3. NUMBER [ (p [, s]) ] p(精度): 1-38 s(小数位数): -84-127
4. oracle数据库没有 bigint 类型, 就用的 NUMBER id NUMBER(19, 0), -- 这里的 (19, 0) 表示总精度为 19,小数位数为 0,即存储大整数
5.1 简单case when (相当于 oracle的 decode函数)
decode(OPT, '>', '大于', '>=' ,'大于等于', '无')
case b.HRCS_COMPENSATION_COM WHEN 1 THEN 'COMP1-年基本工资'
WHEN 2 THEN 'COMP2-年度固定薪酬' ELSE 'COMP3-年度整体薪酬' end
as hrcsCompensationComp
5.2 条件 case when (case when 是连着写的, 在 oracle中decode只能处理简单的case when 有条件判断, 请使用oracle的 case when 和mysql 条件case when 一样)
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
5.3 oracle和达梦独有的 decode(OPT, '>', '大于', '>=' ,'大于等于', '无')
--oracle的nvl()函数, 相当于mysql的ifnull()
select nvl (null, '0') from dual;
-- 分页查询 加 排序
SELECT *
FROM (
SELECT t.*, ROW_NUMBER() OVER (ORDER BY column_name) rn
FROM your_table t
ORDER BY column_name -- 根据需要排序的列进行排序
)
WHERE rn BETWEEN 1 AND 10; -- 根据当前页码和每页显示的记录数确定范围
6. insert语句必须 TO_DATE('2021-01-01 15:00:00', 'YYYY-MM-DD HH24:MI:SS') 直接字符串会报错