MySQL到底大小写敏感还是不敏感-
一、MySQL是大小写敏感的吗在工作中,大家可能遇到过在本机开发的程序运行一切正常,发布到服务器后就出现表名找不到的问题,或者当想要查询一条数据时,总是会多出来两条或多条,这其实是因为MySQL设置了大小写敏感造成的。MySQL在Windows下不区分大小写,但在Linux下默认是区分大小写的,如果你稍不注意,就会出现上述问题。 由于这个原因,在阿里巴巴规约中这样要求: 【强制】表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。 因此,数据库名、表名、字段名,都不允许出现任何大写字母,避免引起不必要的麻烦。 二、MySQL的大小写敏感是由参数控制的mysql大小写敏感配置相关的两个参数,lower_case_file_system和lower_case_table_names。 查看当前mysql的大小写敏感配置,可以使用如下语句 1234567show global variables like '%lower_case%';+------------...
达梦数据库如何获取SQL实际执行计划
在达梦数据库中,使用EXPLAIN语句可以查看sql的执行计划,但EXPLAIN只生成执行计划,并不会真正执行SQL语句,因此产生的执行计划有可能不准。本章将带领大家了解多种获取SQL实际的执行计划的方法。 环境说明: 操作系统:银河麒麟V10 数据库:DM8 相关关键字:DM数据库、SQL实际执行计划 一、set autotrace tracedisql下执行set autotrace trace开启AUTOTRACE功能,执行SQL语句,并打印实际的执行计划。 123SQL> set autotrace traceSQL> select a.employee_name, b.department_name from dmtest.t_emp a join dmtest.t_dept bon a.department_id = b.department_id and b.department_id=102; 二、v$cachepln中获取执行计划v$cachepln中保存了SQL缓冲区中的执行计划信息,在ini参数USE_PLN_POOL !=0时才统...
达梦数据库关键字屏蔽
应用系统数据从其他数据库迁移到达梦时可能会遇到表名、字段名等是达梦的关键字,从而导致查询报错。为了数据库兼容,可以选择屏蔽部分达梦的关键字。本文将讨论如何查看达梦关键字,以及屏蔽关键字的两种常用方法,帮助数据库管理人员更好的使用达梦数据库。 环境说明: 数据库版本:DM8; 关键词:关键字屏蔽 一、查看达梦关键字查看视图V$RESERVED_WORD获取DM关键字 1SQL> select keyword,reserved from v$reserved_words; 以关键字LIST为例,由于LIST是关键字,所以作为列的别名时sql会报语法分析错误。 1234567SQL> select username list from dba_users;select username list from dba_users;select username list from dba_users;*第 1 行, 第 34 列[list]附近出现错误[-2007]:语法分析出错. 查看LIST是否存在DM关键字中 12345SQL> select keyword,r...
达梦数据库如何实现不更改SQL而改变其执行计划
SQL优化中,有时数据库选择的执行计划并不是最优的,这时会考虑使用HINT提示来改变SQL的执行计划(比如索引扫描修改为全表扫描、嵌套循环连接修改为哈希连接)。但使用HINT提示需要修改对应的SQL语句,增加HINT子句,在应用中不是很方便,此时可以使用SF_INJECT_HINT函数来绑定SQL语句使其使用对应的HINT。 本章内容已在如下环境中测试: 操作系统:银河麒麟V10 数据库:DM8 相关关键字:DM数据库、INJECT HINT、HINT提示 一、HINT提示如下SQL,默认两表关联使用的是哈希连接HASH JOIN: 123explain select a.department_id, a.employee_name, b.department_namefrom dmhr.employee a, dmhr.department bwhere a.department_id = b.department_id; 使用hint改变其执行计划,修改SQL增加HINT提示 /*+use_nl(a,b) */使其使用内嵌套循环连接: 123explain select...
达梦数据库常用SQL之约束的启用和禁用,索引的失效和重建,触发器的禁用和启用
123456789101112131415161718192021222324--禁用指定模式下的约束create or replace procedure test_varchar_insert ( var1 varchar(100)) as c_count int := 0; con_name varchar(100); tab_name varchar(100); sql1 varchar(500); sql2 varchar(500); c1 cursor; begin sql1 = 'SELECT TABLE_NAME, CONSTRAINT_NAME FROM DBA_CONSTRAINTS WHERE OWNER = '''||var1||''';'; open c1 for sql1...
Linux下JDK环境变量配置
默认情况下Linux系统会自带OpenJDK,但通常情况下,我们可能会需要使用自定义的JDK配置,整体配置很简单,按以下命令操作即可。 1234567891011121314151617181920212223242526#卸载系统的java相关包rpm -qa |grep java |xargs rpm -e --nodepsrpm -qa |grep java#上传jdk包,这里上传JDK1.8的包jdk-8u331-linux-x64.tar.gz#解压到指定目录tar -zxvf jdk-8u331-linux-x64.tar.gz -C /usr/local/#配置系统JDK环境变量(JDK7)vim ~/.bash_profileexport JAVA_HOME=/usr/local/jdk1.7.0_80 # 请替换为你的实际路径export JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/...
修改达梦数据库表的char和varchar类型为按字符存储
达梦数据库支持varchar类型按字符存储,在某些异构数据库中,如PG或MySQL中,有些数据类型是按字符为单位存储的,这种异构数据库的数据迁移到达梦的时候,如果不注意,可能会有迁移失败的问题,数据库在达梦不能入库。针对此种类型的数据,达梦提供了两种方式来解决: 1.达梦数据库初始化的时候开启参数length_in_char=1,即varchar类型以字符为单位。 2.先将异构数据库的表结构迁移到达梦,然后修改达梦数据库中的表结构varchar类型为按字符存储,如varchar(10)修改为varchar(10 char)。 第一种方式在达梦数据库初始化的时候可以直接兼容这种按字符存储的数据,但缺点是该length_in_char参数只是表象上的解决该问题,实际是将数据精度扩大为4倍,因此虽然表面上满足了按字符存储的需求,但是实际上是可以存储多个字符的,有悖于表结构设计的初衷,这种情况下为了严格限制数据符合要求只能再到应用中去做限制。 第二种方式则是严格遵循其他异构数据库表结构设计规范的,缺点就是需要批量对表结构做修改,后续有新增的表时也需要注意建表语句的数据类型设计规...
达梦数据库常用SQL之查询有大字段的表及表中存在的大字段类型
接上篇文章 [post cid=”313”/] 由于只查询表名可能还不满足实际需求,因此将表中存在的大字段也一并列出来,其中重复的大字段做了去重,具体SQL如下: 1234567891011121314151617181920212223242526272829SELECT TABLE_NAME, LISTAGG(DATA_TYPE, ',') WITHIN GROUP (ORDER BY TABLE_NAME)FROM ( SELECT DISTINCT B.NAME AS TABLE_NAME, D."TYPE$" AS DATA_TYPE FROM SYSOBJECTS B INNER JOIN SYSCOLUMNS D ...
达梦数据库常用SQL之生成启用带自增列表插入功能及insert插入语句
123456789101112131415161718192021222324252627282930313233343536373839SELECT ' SET IDENTITY_INSERT "' ||B.NAME ||'" ON; INSERT INTO "' ||B.NAME ||'"("' ||LISTAGG(A.NAME, '","') WITHIN GROUP (ORDER BY A.COLID) ||'") SELECT * FROM "' ||B.NAME ||'";'FROM SYSCOLUMNS AINNER JOIN SYSOBJECTS BON A.ID=B.IDWHERE...
oracle 修改 redo log日志文件大小
一、创建4个新的日志组 1234alter database add logfile group 4 ('/oradata/orcl/redo04.log') size 2048M;alter database add logfile group 5 ('/oradata/orcl/redo05.log') size 2048M;alter database add logfile group 6 ('/oradata/orcl/redo06.log') size 2048M;alter database add logfile group 7 ('/oradata/orcl/redo07.log') size 2048M; 二、切换当前日志到新的日志组 1234alter system switch logfile;alter system switch logfile;alter system switch logfile;--alter system archive log current; ...









