① 常用的数据库有哪些
虽然是cop的,但是是专业的。
1. IBM 的DB2
作为关系数据库领域的开拓者和领航人,IBM在1997年完成了System R系统的原型,1980年开始提供集成的数据库服务器—— System/38,随后是sql/DSforVSE和VM,其初始版本与SystemR研究原型密切相关。DB2 forMVSV1 在1983年推出。该版本的目标是提供这一新方案所承诺的简单性,数据不相关性和用户生产率。1988年DB2 for MVS 提供了强大的在线事务处理(OLTP)支持,1989 年和1993 年分别以远程工作单元和分布式工作单元实现了分布式数据库支持。最近推出的DB2 Universal Database 6.1则是通用数据库的典范,是第一个具备网上功能的多媒体关系数据库管理系统,支持包括Linux在内的一系列平台。
2. Oracle
Oracle 前身叫SDL,由Larry Ellison 和另两个编程人员在1977创办,他们开发了自己的拳头产品,在市场上大量销售,1979 年,Oracle公司引入了第一个商用SQL 关系数据库管理系统。Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率名列前茅。
3. Informix
Informix在1980年成立,目的是为Unix等开放操作系统提供专业的关系型数据库产品。公司的名称Informix便是取自Information 和Unix的结合。Informix第一个真正支持SQL语言的关系数据库产品是Informix SE(StandardEngine)。InformixSE是在当时的微机Unix环境下主要的数据库产品。它也是第一个被移植到Linux上的商业数据库产品。
4. Sybase
Sybase公司成立于1984年,公司名称“Sybase”取自“system”和 “database” 相结合的含义。Sybase公司的创始人之一Bob Epstein 是Ingres 大学版(与System/R同时期的关系数据库模型产品)的主要设计人员。公司的第一个关系数据库产品是1987年5月推出的Sybase SQLServer1.0。Sybase首先提出Client/Server 数据库体系结构的思想,并率先在Sybase SQLServer 中实现。
5. SQL Server
1987 年,微软和 IBM合作开发完成OS/2,IBM 在其销售的OS/2 ExtendedEdition 系统中绑定了OS/2Database Manager,而微软产品线中尚缺少数据库产品。为此,微软将目光投向Sybase,同Sybase 签订了合作协议,使用Sybase的技术开发基于OS/2平台的关系型数据库。1989年,微软发布了SQL Server 1.0 版。
6. PostgreSQL
PostgreSQL 是一种特性非常齐全的自由软件的对象——关系性数据库管理系统(ORDBMS),它的很多特性是当今许多商业数据库的前身。PostgreSQL最早开始于BSD的Ingres项目。PostgreSQL 的特性覆盖了SQL-2/SQL-92和SQL-3。首先,它包括了可以说是目前世界上最丰富的数据类型的支持;其次,目前PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统.
7.mySQL
mySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。MySQL的官方网站的网址是: www.mysql.com
② 修改一个数据表的字段值,可是这个字段是索引列,修改有错误提示
错误的大概意思就是,数据库中你要修改的字段本来没有有主键约束或唯一约束,而现在你要在这个字段上加上主键或唯一约束,如果数据库中没有数据这样做当然不会有任何问题,可是从你的错误来看你的数据库中已经有了数据,而且在你要修改的字段上有重复的数据
例如:你的数据库中有两个字段id,name,此时你的数据库中的数据:001,zhangsan;002,lisi;003,zhangsan,此时你在name字段上加主键约束或唯一约束的话就会出你说的错误
解决办法:
1、如果你的数据库允许你现有的数据有重复的数据,你可以在可视化界面下建立主键或约束,在完成那一步里有个选项会询问是否检测现有数据,勾掉就可以了
2、如果你的数据库不允许你现有的数据有重复的数据,这样就比较麻烦了,你可以再别的列上加约束,也可以用多列上建立约束
注:其中有些地方说的不一定准确,还请以事实为依据
③ MS SQL和Oracle学习哪一个更好还是两个都学
看你想做什么了!
DBA(数据库管理员),那就学oracle吧,企业用mssql的几乎都是微软或某软件供应商直接提供技术支持,而oracle比较严格,专职的oracle dba也很少,但国内企业发展前景是必须拥有专职DBA。
developer(开发人员),那还是从ms sql学起吧,入门容易,另外就是ms提供的集成环境也容易使用。(有人学oracle,上来就是cmd窗口操作,竟然认为ms sql没有cmd模式操作,就知SQLPLUS,不知SQLCMD,微软提供简单可视化环境,把操作难度降低了)学好MSSQL后,可以学Oracle,也可不学,微软会把sql server企业化的,oracle不会是永远的企业级霸主。
说考OCA、COP、OCM都是DBA方向的。
考证只是在国企事业单位管用,然而,用oracle的企业要是能自己有专职的DBA,大小银行、移动、电信、石化、联通,这样的企业会有,其它的企业,不会有专职的dba,包括联想。
④ java写的带数据库的程序如何在没安装数据库的系统上运行
你的问题应该从两个方面进行分析
第一、使用java内嵌式数据库
在程序中使用 Derby和HSQLDB等java内嵌式数据库,只需在程序中将数据库配置好即可,是程序专用的。
可以达到你所说的java数据库程序不需要配置在任何机器上运行。
但是,内嵌式数据库的处理能力很低,只适合小数据量的程序使用。
第二、使用Oracle、MSSql、MySql等数据库
首先这些数据库软件需要安装,即使不在本机安装也需要在一台可以访问到的机器上安装,然后使用jdbc访问。
如果程序安装在已经安装这些数据库的机器上,你只需要将程序的数据库访问指向本机即可。
但是,在本机安装数据库的机器很少,大部分都是访问网络上的数据库,这就需要你引入配置文件。
在配置文件中进行参数配置。当然,你可以写一些默认配置,当实际环境与默认配置不同时就需要修改默认配置。
所以说不用配置的程序其实是符合你默认配置的程序,你需要根据不同的系统或环境组织自己的默认配置文件。
没有万能的东西,只能是适应大部分,而且需要你在编写程序时提前考虑针对各种运行环境的变化。
有问题请留言吧
⑤ SQL查询 数据表中,哪一个字段是没有重复值的字段
select stu from Table1 group by stu having count(1)>1
如果有结果,就证明stu有重复的.
依次查其它字段即可知道重复情况.
请参考<sql语句操作数据库重复数据>:http://www.it118.org/specials/c9fba99e-4401-49cf-8256-ac3c1a34c0d9/35402864-969a-4e7f-b50e-5bc30d4c07d4.htm
⑥ oracle数据库培训哪里有
据说甲骨文(重庆思庄)认证学习中心是西南地区最好的,他们只做Oracle 11g COP认证培训和企业定制培训,并且从08年就开始做了,师资是最强的,可以去多了解一下
⑦ Oracle数据库 和 MySQL, SQL Server ,ACCESS大概需要学多长时间
wcopwzk68fwox92wmxk
⑧ selectCommand 不返回 任何键列信息,无法生成updatecommand
我刚才遇到跟你一样的问题,不过现在解决了.原因就是数据库中该表没有PrimaryKey
手上有事,我就不给你分析你的代码了.我把我的贴出来.仅供参考.(我的只用到更新所以只有UpdateCommand ,其他一样的.)
using(SqlDataAdapter sda = new SqlDataAdapter("SELECT TD001,TD002,TD003,TD016 FROM COPTD",conn))
{
//SqlCommandBuilder scb = new SqlCommandBuilder(sda);
//sda.UpdateCommand = scb.GetUpdateCommand();出错,跟你的一样.
SqlCommand updateCmd = new SqlCommand("UPDATE COPTD SET TD016=@TD016 WHERE TD001=@TD001 AND TD002=@TD002 AND TD003=@TD003",sda.SelectCommand.Connection);
updateCmd.Parameters.Add("@TD016",SqlDbType.NVarChar,1,"TD016");
updateCmd.Parameters.Add("@TD001",SqlDbType.NVarChar,4,"TD001");
updateCmd.Parameters.Add("@TD002",SqlDbType.NVarChar,11,"TD002");
updateCmd.Parameters.Add("@TD003",SqlDbType.NVarChar,4,"TD003");
sda.UpdateCommand = updateCmd;
rtl = sda.Update(dataSet,"COPTD");
}
⑨ oracle 把一个字段的值更新另一个字段。
你报的这个错,基本就是当a.值1=b.值1时,选出来的值2有两个或更多的结果,数据库一蒙圈,就不知道该给你更新哪个了。
如果你更新规则不复杂,可以
updatetab1aset值2=(selectmin(值2)fromtab2bwherea.值1=b.值1)--这个里的值2取最小值,当然也可以max取最大值,如果有其他规则的话就说明
whereexists(select1fromtab2bwherea.值1=b.值1)
anda.值1in(selecta.值1fromtab2a)
andcop_g_noin(select*fromtab3)
⑩ oracle问题。 简述shareplex工作原理。
1 体系结构, 3 queues and 4 processes
Redo Log/archived log -->Capture process -->capure queue--> Read Process--> Export queue-->NETWORK--
>Import process-->Post queue-->Post Process-->target DB
我的测试环境:ndb1:XE -----> ndb3:DEMO
2 源端进程
sp_cop --> sp_ocap, sp_ordr, sp_xport
Cature Process(sp_ocap)
从redo logs/arch logs中读取active config中变化的数据,写到capture queue
每个data source有个capure process
Reader Process(sp_ordr)
从capture queue读取数据,加上路由信息写到export queue
每个data source有个read process
Export Process(sp_xport)
跟每个target建立一个TCP/IP连接,并从export queue读取数据,把数据传到目的端
每个source-target对都有一个Export Process
3目的端进程
ps -fu qust
sp_cop --> sp_pst_mt, sp_mport 0xc0a86e66+PI+ndb1+sp_mport+0xc0a86e65 R
Import Process(sp_mport)
与每个source建立一个TCP/IP连接,接受数据写到post queue中
每个source-target对都有一个Import Process
Post Process(sp_post_mt)
从post queue中读取数据,apply到目标数据库中
每个post queue都有一个Post Processs
4网络端口
lsof -i :2100
源端:
sp_cop TCP ndb1.test:2100 (LISTEN)
sp_xport TCP ndb1.test:34347->ndb3.test:2100 (ESTABLISHED)
目的端:
sp_cop TCP ndb3.test:2100 (LISTEN)
sp_mport TCP ndb3.test:2100->ndb1.test:34347 (ESTABLISHED)
sp_mport TCP ndb3.test:2100->ndb1.test:34347 (ESTABLISHED)
sp_cop在2端都监听2100端口
sp_xport连接到源端2100端口,只有一个连接
sp_mport连接到目的端 2100端口, 有2个连接
5 Oracle的连接(正常工作状态)
SQL> select username,mole from v$session where username is not null order by 1,2;
源端:
QUEST [email protected] (TNS V1-V3)
QUEST [email protected] (TNS V1-V3)
QUEST [email protected] (TNS V1-V3)
QUEST [email protected] (TNS V1-V3)
QUEST [email protected] (TNS V1-V3)
QUEST [email protected] (TNS V1-V3)
QUEST [email protected] (TNS V1-V3)
QUEST [email protected] (TNS V1-V3)
QUEST [email protected] (TNS V1-V3)
目的端:
QUEST Post-2100-ndb1-XE
QUEST [email protected] (TNS V1-V3)
6 queue的情况
qview list
源端:
o.XE+C
WRITER +PA+o.XE+sp_ocap+o.XE
READER +PR+o.XE+sp_ordr+o.XE
ndb1+X
WRITER +PR+o.XE+sp_ordr+o.XE
READER +PX+ndb1+sp_xport+0xc0a86e66 (192.168.110.102)
Capture Queue(+C)
用于快速存放捕捉道德变化数据
每个Oracle实例只有一个cature queue,用Oracle_SID命名:O.{ORACLE_SID}
Export Queue(+X)
用于存放加上路由的数据
缺省,一个Host/Server只有一个Export queue(多个Oracle实例共用),用hostname命名:{hostname}
用named export queue来实行每个实例用独立的queue
目的端:
ndb1+P+o.XE-o.DEMO
subqueues range from 0 to 3
WRITER +PI+ndb1+sp_mport+0xc0a86e65 (192.168.110.101)
READER +PP+ndb1+sp_opst_mt+o.XE-o.DEMO
PostQueue(+P)
用于存放收到的数据
每个source-target对都有一个Post Queue,以两个Oracle实例来命名:O.{SRC_SID}-O.{DEST_SID}
再看目的端post进程的参数
sp_mport 0xc0a86e66+PI+ndb1+sp_mport+0xc0a86e65 R
queue是源端export queue的reader+目的端post queue的writer