5 minute read

MySQL

SQL Server

SQL Server不同版本的驱动

  • msbase.jar、mssqlserver.jar、msutil.jar 在连接数据时候需要手动导入驱动包,即手动导入class.forName(驱动名称),支持sql2000
  • sqljdbc.jar 应用程序必须首先按class.forName(驱动名称)注册驱动程序。Jdk1.6以上版本不推荐使用.支持sql2005,sql2008
  • sqljdbc4.jar DriverManager.getConnection方法得到了增强,可自动加载 JDBC Driver。因此使用sqljdbc4.jar 类库时,应用程序无需调用 Class.forName 方法来注册或加载驱动程序。调用 DriverManager 类的 getConnection 方法时,会从已注册的 JDBC Driver 集中找到相应的驱动程序。sqljdbc4.jar 文件包括“META-INF/services/java.sql.Driver”文件,后者包含.sqlserver.jdbc.SQLServerDriver 作为已注册的驱动程序。现有的应用程序(当前通过使用 Class.forName 方法加载驱动程序)将继续工作,而无需修改。要求使用 6.0 或更高版本的JRE,支持sql2005,sql2008

全文索引和普通索引的区别

两种索引的功能和结构都是不同的,普通索引的结构主要以B+树和哈希索引为主,用于实现对字段中数据的精确查找,比如查找某个字段值等于给定值的记录,A=10这种查询,因此适合数值型字段和短文本字段。全文索引是用于检索字段中是否包含或不包含指定的关键字,有点像搜索引擎的功能,因此全文索引内部采用的是与搜索引擎相同的倒排索引结构,其原理是对字段中的文本进行分词,然后为每一个出现的单词记录一个索引项,这个索引项中保存了所有出现过该单词的记录的信息,也就是说在索引中找到这个单词后,就知道哪些记录的字段中包含这个单词了。因此适合用大文本字段的查找。大字段之所以不适合做普通索引,最主要的原因是普通索引对检索条件只能进行精确匹配,而大字段中的文本内容很多,通常也不会在这种字段上执行精确的文本匹配查询,而更多的是基于关键字的全文检索查询,例如你查一篇文章信息,你会只输入一些关键字,而不是把整篇文章输入查询(如果有整篇文章也就不用查询了)。而全文索引正是适合这种查询需求。

提示找不到存储过程(SQLServer)

在sql server 里新建了几个存储过程,每次都是建了之后,存储过程是可以看见的,但用exec语句的时候,却一直有红色波浪线提示找不到存储过程,但是直接执行,却又是可以执行成功的,每次都需要重新打开ssms,红色的波浪线提示才会取消。 原因是这样的.你的SQL Server 客户端,在连接到 SQL Server 数据库以后。会自动读取数据库的数据字典信息。也就是当前数据库,有哪些表/字段/视图/存储过程等基础信息。保存在客户端的内存里面。这样。当你在客户端输入 SQL 语句的时候,输入表名字.会自动弹出这个表的字段列表让你选择。但是当你新建了一个对象的时候,例如表或者上面那个例子,新建存储过程abc这个时候,数据库那里已经有存储过程abc 了。但是客户端的缓存里面并没有存储过程 abc 的信息。因为内存里面的信息没有更新。因此在客户端那里。输入EXEC abc,abc下有红线。将客户端关闭后,重新打开,由于客户端重新加载了数据库的基础信息。知道了当前数据库里面,有一个名字叫 abc 的存储过程,因此就不出红线了。

Oracle Database

oracle疑难问题排查集

PL/SQL Developer

Oracle 11g服务详细介绍及哪些服务是必须开启的?

成功安装Oracle 11g后,共有7个服务,这七个服务的含义分别为:

  • Oracle ORCL VSS Writer Service:Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝(shadow copy)。它可以在多卷或者单个卷上创建映射拷贝,同时不会影响到系统的性能。(非必须启动)
  • OracleDBConsoleorcl:Oracle数据库控制台服务,orcl是Oracle的实例标识,默认的实例为orcl。在运行Enterprise Manager(企业管理器OEM)的时候,需要启动这个服务。(非必须启动)
  • OracleJobSchedulerORCL:Oracle作业调度(定时器)服务,ORCL是Oracle实例标识。(非必须启动)
  • OracleMTSRecoveryService:服务端控制。该服务允许数据库充当一个微软事务服务器MTS、COM/COM+对象和分布式环境下的事务的资源管理器。(非必须启动)
  • OracleOraDb11g_home1ClrAgent:Oracle数据库.NET扩展服务的一部分。 (非必须启动)
  • OracleOraDb11g_home1TNSListener:监听器服务,服务只有在数据库需要远程访问的时候才需要。(非必须启动,下面会有详解)。
  • OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务该服务,是数据库启动的基础, 只有该服务启动,Oracle数据库才能正常启动。(必须启动)

那么在开发的时候到底需要启动哪些服务呢?对新手来说,要是只用Oracle自带的sql*plus的话,只要启动OracleServiceORCL即可,要是使用PL/SQL Developer等第三方工具的话,OracleOraDb11g_home1TNSListener服务也要开启。OracleDBConsoleorcl是进入基于web的EM必须开启的,其余服务很少用。

注:ORCL是数据库实例名,默认的数据库是ORCL,你可以创建其他的,即OracleService+数据库名。

ORACLE_HOME/ORACLE_SID

ORACLE_HOME 安装目录 ORACLE_SID 实例ID 一台linux机器上安装一个oracle,两个实例,分别对应两个用户。切换到对应用户时 echo $ORACLE_SID会显示各自的实例

ESCAPE关键字用法

  定义:escape关键字经常用于使某些特殊字符,如通配符:’%’,’_‘转义为它们原来的字符的意义,被定义的转义字符通常使用’',但是也可以使用其他的符号。实例:

SQL> select * from t11 where name like '%_%';
SQL> select * from t11 where name like '%\_%' escape '\';

注意:如果是 ‘/’ 作为检索字符, 必须 用 ‘/’ 作为转义符, 正斜扛也一样。

select * from wan_test where psid like '%//%' escape '/'

1.使用 ESCAPE 关键字定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。 2.ESCAPE ‘escape_character’ 允许在字符串中搜索通配符而不是将其作为通配符使用。escape_character 是放在通配符前表示此特殊用途的字符。

DB2

Oracle Berkeley DB

MariaDB

SQLite

mongodb

Teradata

GreenPlum

hbase

Hive

Pig

Redis

Others

数据模型

PowerDesigner两张表主键如何设成一致的

设置方法:Tools—>Model Options->Model Settings。在Data Item组框中定义数据项的唯一性代码选项(Unique Code)与重用选项(Allow Reuse)。把allow reuse选上,去掉unique code选项。

Comments