首页 > 数据库 >oracle、mysql&mariadb、postgresql中表名、列名的默认大小写问题

oracle、mysql&mariadb、postgresql中表名、列名的默认大小写问题

时间:2022-12-29 15:59:39浏览次数:75  
标签:中表名 postgresql int create 大小写 mysql table id select

  从https://zhuanlan.zhihu.com/p/378495347https://blog.csdn.net/qq_43454016/article/details/123231325,可知,mysql表名的大小写敏感取决于lower_case_table_names参数的设置,而字段名是不区分大小写。无论是否用``括起来都一样,相当于给查询中出现的文本都加了"col_NAME",如下:

select * from act_hi_actinst aha2;
id_|proc_def_id_|proc_inst_id_|execution_id_|act_id_|task_id_|call_proc_inst_id_|act_name_|act_type_|assignee_|start_time_|end_time_|duration_|tenant_id_|
---+------------+-------------+-------------+-------+--------+------------------+---------+---------+---------+-----------+---------+---------+----------+

select ID_ as "ID_",PROC_def_id_ as "PROC_def_id_" from act_hi_actinst aha;
ID_|PROC_def_id_|
---+------------+

这和oracle/postgresql使用""括起来就大小写敏感不同。

create table Tab1(id int);
create table TAB2(id int);
create table `tab3`(id int);
create table `TAB4`(`ID` int);
create table `tAB5`(`iD` int);
create table `tab6`(iD int);
create table `tAB7`(`iD` int,id int);
SQL 错误 [1060] [42S21]: Duplicate column name 'id'

show variables like '%lower_case_table_names%'
lower_case_table_names=1
alter table t1 add column "C_x" varchar(10);
select * from t1 limit 1;
select "C_x" || 1 C_x from t1;
select c_x from t1;
SQL 错误 [42703]: 错误: 字段 "c_x" 不存在
  Hint: 也许您想要引用列"t1.C_x"。
  Position: 8
  
select "C_x" || 1 C_x from t1 limit 1;
c_x|
---+
   |
   

lightdb_lower_case_column_names
0 lightdb模式,默认返回小写
1 mysql模式,返回SQL语句编写的大小写,为字段名增加as "字段名"别名实现,仅限于顶层select
2 oracle模式,默认返回大写,为不带""的字段名增加as "UPPER字段名"别名实现,仅限于顶层select

对于oracle/mysql模式,如果别名不带双引号,则需要按照上述规则进行大小写处理,然后给添加上双引号,确保不管是否包含别名结果都是正确的。

 

标签:中表名,postgresql,int,create,大小写,mysql,table,id,select
From: https://www.cnblogs.com/lightdb/p/17012621.html

相关文章

  • MySQL优化一,数据表的设计
    前言,表的设计一般都有范式化的设计,以范式化设计作为模板步骤,这个步骤必须是一步一步的往下设计的:###1.1.范式化设计第一范式(1NF)定义:属于第一范式关系的所有属性都......
  • MySQL触发器
    触发器的触发事件有:update,insert,delete,触发时机分为事件前,事件后;触发器是存在每张表中,2张表中触发器名称可重复,同张表中触发器不允许重名触发器的调用是被动的,换句话说......
  • mysql 8.0.30 忘记密码登录mysql:
    mysql8.0.30忘记密码登录mysql:cmd(使用管理员运行)-切换到mysql的bin目录下;一、输入命令:netstopmysql停止服务;二、输入命令:mysqld--console--skip-grant-tables......
  • Mysql:mysqldumpslow 技巧:如何不截断 slow.log 文件,直接指定开始starttime时间、stopti
    mysqldumpslow的选择中,没有开始、结束时间的选项。截断slow日志文件最常规做法,不过很麻烦不是。怎么办才更优雅?  最最最佳做法:使用sed模式范围sed-n'/Time:2022......
  • docker-compose之mysql-router(MGR单主模式)
    一、mysql-router:简单理解就是集群的路由,通过路由来访问具体的数据库集群。二、本编介绍如何搭建docker版的MGR集群 1、dockerfileDockerfi......
  • Mysql:mysqldumpslow 技巧:如何不截断 slow.log 文件,直接指定开始starttime时间,进行分析
    slow日志文件很大很大,包含很多的时间段,如何指定开市时间进行分析呢?mysqldumpslow的选择中,没有开始、结束时间的选项。绝大部分场景下,结束时间不是很重要,而开始时间就很有......
  • MySQL查询数据在一张表不在另一张表的记录
    参考:https://www.cnblogs.com/jelly12345/p/16828722.html方法一:使用notin,易理解,效率低,仅适用单字段匹配适用于数据量小的情况,子表数据少,查外表的时候走外表的索引,这......
  • MySql密码忘记怎么办?
    第一步服务netstopmysql第二步,执行指令mysqld--console--skip-grant-tables--user=mysql--shared-memory第三步,再打开一个DOS窗口执行指令,第二步的窗口不要关,......
  • mysql dump数据备份
    @echooffset"Ymd=%date:,4%%date:5,2%%date:~8,2%"D:\develop\mysql-5.7\mysql-5.7.26-winx64\bin\mysqldump-uroot-p1234--single-transaction--databasesdb>D:......
  • MySQL 数据类型基础篇
    ......