规范
  • 尽可能不使用单反引号(`),用于表名,字段名
  • 判断条件中必须是布尔型的,否则增加判断条件转换为布尔型
  • CONVERT函数的参数和mysql的相反,第一个参数是格式,第二个参数是值
      CONVERT(123, DECIMAL(12, 2))
      ==>
      CONVERT(DECIMAL(12, 2), 123)
  • CONVERT不支持方法
      CONVERT ( DATE_FORMAT( begin_time, '%k%i' ), SIGNED )
      ==>
      CAST ( DATE_FORMAT( begin_time, '%k%i' ) AS INTEGER )
  • 输出为map的Mapper中,用””包括别名
  • GROUP BY中不能使用SELECT中生成的别名(执行顺序:from > on > where > group by > having > select > order by)
  • group by中字段和select中的不是同一个表中的字段(statisticsOpenData),不全(LabMapper.selectSeatLab)
  • 不支持UNSIGNED/SIGNED
  • 自增长字段名大写处理(达蒙插入时无效列问题)
  • 修改字段名和属性,必须分开,不能用ALTER TABLE CHANGE,可以是哦那个ALTER TABLE ALTER COLUMN和ALTER TABLE MODIFY
      ALTER TABLE dev_rec change resv_rec_status resv_status varchar(30) int NULL DEFAULT 0;
      ==>
      ALTER TABLE dev_rec ALTER COLUMN resv_rec_status RENAME TO resv_status;
      ALTER TABLE dev_rec MODIFY resv_status int NULL DEFAULT 0;
  • 慎用保留字作为字段或者表名, 比如top(new表中)
达蒙数据库操作
  • 显示所有表

      SELECT table_name FROM user_tables;
  • 删除所有表

      DECLARE
          table_name VARCHAR2(100);
      BEGIN
          FOR r IN (SELECT table_name FROM user_tables WHERE tablespace_name = 'UNIIC') LOOP
              EXECUTE IMMEDIATE 'DROP TABLE "' || r.table_name || '" CASCADE CONSTRAINTS';
          END LOOP;
      END;
达蒙SQL问题
  • Mybatis插入时,提示无效列名,自增长字段大小写问题
  • 不能使用alter table drop index方式删除索引,只能通过drop index
  • 不同通过create table时,内置创建索引,只能通过 create index
    -
Flyway问题
  • 数据库升级失败后,修改sql语句,删除flyway历史记录中的出错记录,重新运行程序
      delete  from "flyway_schema_history" where "version"='2.28'
  • 语句中包含占位符,导致错误(No value provided for placeholder: ${0})
      flyway.placeholder-replacement: false
IC中sql问题
  • GROUP BY中和SELECT中的不匹配
    LabMapper.getArea 少lab_kind
    RoomMapper.list 少 rm.open_num
文档更新时间: 2025-03-14 14:48   作者:方杰