高级数据库 数据库高级查询2
各位老铁们好,相信很多人对高级数据库都不是特别的了解,因此呢,今天就来为大家分享下关于高级数据库以及数据库高级查询2的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
数据库高级查询2
分组查询(group by)
分组查询:
1.查询每个部门的最高工资
select deptno,max(sal) from emp group by deptno;
2.查询每个职位的平均工资
select deptno,avg(sal) from emp group by deptno;
3.查询每个部门的人数
select deptno,count(*) from emp group by deptno;
4.查询工资大于1000的员工,每个部门的最大工资
select deptno,max(sal) from emp where sal>1000 group by deptno;
多字段分组查询:group by字段1,字段2;
1.查询每个部门下每个主管的手下人数
select deptno, mgr, count(*) from emp where mgr is not null group by deptno,mgr;
2.查询emp表中每个部门的编号,人数,工资总和,最后根据人数进行升序排序,如果人数一致,根据工资总和降序排序
select deptno,count(*),sum(sal) from emp group by deptno order by count(*) asc,sum(sal) desc;
3.查询工资在1000-3000之间的员工信息,每个部门的编号,平均工资,最低工资,最高工资,根据平均工资进行升序排序排列
select deptno,avg(sal),min(sal),max(sal) from emp where sal between 1000 and 3000 group by deptno order by avg(sal)
4.查询含有上级领导的员工,每个职业的人数,工资的总和,平均工资,最低工资,最后根据人数进行降序排列,如果人数一致,根据平均工资进行升序排列
select job, count(*),avg(sal),min(sal) from emp where mgr is not null group by job order by count(*) desc,avg(sal) asc;
各种关键字的顺序
select* from表名 where.... group...having... order by... limit...
having(结合group by使用)
having一般要结合分组查询和聚合函数使用,用于给聚合函数的内容添加条件
聚合函数的条件不能写在where后面
普通字段的条件写在where后面,聚合函数的条件写在having后面
1.查询每个部门的平均工资,要求平均工资大于2000(c是别名的用法)
select deptno,avg(sal) c from emp group by deptno having c>2000;
2.查询每个分类的平均单价,要求平均单价低于100
select category_id,avg(price) a from t_item group by category_id having a<100;
3.查询category_id分类为238和917的两个分类的平均单价
select category_id,avg(price) from t_item where category_id in(238,917) group by category_id;
4.查询emp表中每个部门的平均工资高于2000的部门编号,部门人数,平均工资,最后根据平均工资降序排列
select deptno,count(*),avg(sal) a from emp group by deptno having a>2000 order by a desc;
5.查询emp表中工资在1000-3000之间的员工,每个部门编号,工资总和,平均工资,过滤掉平均工资低于2000的部门,按照平均工资进行升序排序
select deptno,sum(sal), avg(sal) a from emp where sal between 1000 and 3000 group by deptno having a>=2000 order by a asc;
6.查询emp表中每年入职的人数
select extract(year from hiredate) year,count(*) from emp group by year;
7.查询每个部门的最高平均工资
select deptno,avg(sal) from emp group by deptno order by avg(sal) limit 0,1;
子查询(嵌套查询)
子查询可以写在where或having后面当做查询条件的值
写在from后面,当做一张新表(但是必须要有别名)
select ename from(select* from emp where sal>1000) newtable;
写在创建表的时候
create table emp_20 as(select* from emp where deptno=20);
1.查询emp表中工资最高的员工信息
select* from emp where sal=(select max(sal) from emp);
2.查询emp表中工资大于平均工资的所有员工的信息
select* from emp where sal>(select avg(sal) from emp);
3.查询工资高于20号部门最大工资的员工信息
select* from emp where sal>(select max(sal) from emp where deptno=20);
4.查询工资高于20号部门最大工资的员工信息
select* from emp where sal>(select avg(sal) from emp);
5.查询和Jones相同工资的其他员工信息
select* from emp where job=(select job from emp where ename='jones' and ename!='jones');
6.查询工资最低的员工的同事们的信息(同事=相同job)
select* from emp where job=(select job from emp where sal=(select min(sal) from emp)) and sal!=(select min(sal) from emp);
7.查询最晚入职的员工信息
select* from emp where hiredate=(select max(hiredate) from emp);
8.查询名字为King的部门编号和部门名称(需要用到dept表)
select deptno,dname from dept where deptno=(select deptno from emp where ename='king');
9.查询有员工的部门信息(编号和名称)
select deptno,dname from dept where deptno in(select distinct deptno from emp);
10.查询平均工资最高的部门信息
select* from dept where deptno in(select deptno from emp group by deptno having avg(sal)=(select avg(sal) from emp group by deptno order by avg(sal) desc limit 0,1));
关联查询
同时查询多张表的数据称为关联查询
1.查询每一个员工的名称和其对应的部门名称
select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno;
2.查询在new york工作的所有员工的信息
select e.* from emp e,dept d where e.deptno=d.deptno and d.loc='new york';
笛卡尔积
如果关联查询不写关联关系则查询到的数据是两张表的乘积,这个乘积称为笛卡尔积,笛卡尔是一种错误查询方式的结果,工作切记不要出现.
等值连接和内连接
等值连接:
select* from A,B where A.x=B.x and A.age=18;
内连接:
select* from A join B on A.x=B.x where A.age=18;(将关联关系写在on后面)
1.查询每个员工的名称和其对应的部门名称
select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;
外连接
使用外连接查询得到的数据层除了两张表的交集数据以外和另外一张主表的全部数据,哪个表为主表通过left/rigth控制, left以join左边表为主表 rigth以join右边表为主表
1.查询所有员工的名称和其对应的部门名称
select e.ename,d.dname from emp e left join dept d on e.deptno=d.deptno;
数据库的发展简史
使用计算机后,随着数据处理量的增长,产生了数据管理技术。数据管理技术的发展与计算机硬件(主要是外部存储器)系统软件及计算机应用的范围有着密切的联系。数据管理技术的发展经历了以下四个阶段:人工管理阶段、文件系统阶段、数据库阶段和高级数据库技术阶段。
数据管理的诞生
数据库的历史可以追溯到五十年前,那时的数据管理非常简单。通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理,其运行结果在纸上打印出来或者制成新的穿孔卡片。而数据管理就是对所有这些穿孔卡片进行物理的储存和处理。然而,1950年雷明顿兰德公司(Remington Rand Inc)的一种叫做Univac I的计算机推出了一种一秒钟可以输入数百条记录的磁带驱动器,从而引发了数据管理的革命。1956年IBM生产出第一个磁盘驱动器—— the Model 305 RAMAC。此驱动器有50个盘片,每个盘片直径是2英尺,可以储存5MB的数据。使用磁盘最大的好处是可以随机存取数据,而穿孔卡片和磁带只能顺序存取数据。
1951: Univac系统使用磁带和穿孔卡片作为数据存储。
数据库系统的萌芽出现于二十世纪60年代。当时计算机开始广泛地应用于数据管理,对数据的共享提出了越来越高的要求。传统的文件系统已经不能满足人们的需要,能够统一管理和共享数据的数据库管理系统(DBMS)应运而生。数据模型是数据库系统的核心和基础,各种DBMS软件都是基于某种数据模型的。所以通常也按照数据模型的特点将传统数据库系统分成网状数据库、层次数据库和关系数据库三类。
最早出现的网状DBMS,是美国通用电气公司Bachman等人在1961年开发的IDS(Integrated Data Store)。1964年通用电气公司(General ElectricCo.)的Charles Bachman成功地开发出世界上第一个网状DBMS也即第一个数据库管理系统——集成数据存储(Integrated Data Store IDS),奠定了网状数据库的基础,并在当时得到了广泛的发行和应用。IDS具有数据模式和日志的特征,但它只能在GE主机上运行,并且数据库只有一个文件,数据库所有的表必须通过手工编码生成。之后,通用电气公司一个客户——BF Goodrich Chemical公司最终不得不重写了整个系统,并将重写后的系统命名为集成数据管理系统(IDMS)。
网状数据库模型对于层次和非层次结构的事物都能比较自然的模拟,在关系数据库出现之前网状DBMS要比层次DBMS用得普遍。在数据库发展史上,网状数据库占有重要地位。
层次型DBMS是紧随网络型数据库而出现的,最著名最典型的层次数据库系统是IBM公司在1968年开发的IMS(Information Management System),一种适合其主机的层次数据库。这是IBM公司研制的最早的大型数据库系统程序产品。从60年代末产生起,如今已经发展到IMSV6,提供群集、N路数据共享、消息队列共享等先进特性的支持。这个具有30年历史的数据库产品在如今的WWW应用连接、商务智能应用中扮演着新的角色。
1973年Cullinane公司(也就是后来的Cullinet软件公司),开始出售Goodrich公司的IDMS改进版本,并且逐渐成为当时世界上最大的软件公司。网状数据库和层次数据库已经很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。而后来出现的关系数据库较好地解决了这些问题。
1970年,IBM的研究员E.F.Codd博士在刊物《Communication of the ACM》上发表了一篇名为“A Relational Model of Data for Large Shared Data Banks”的论文,提出了关系模型的概念,奠定了关系模型的理论基础。尽管之前在1968年Childs已经提出了面向集合的模型,然而这篇论文被普遍认为是数据库系统历史上具有划时代意义的里程碑。Codd的心愿是为数据库建立一个优美的数据模型。后来Codd又陆续发表多篇文章,论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系数据库的基础。关系模型有严格的数学基础,抽象级别比较高,而且简单清晰,便于理解和使用。但是当时也有人认为关系模型是理想化的数据模型,用来实现DBMS是不现实的,尤其担心关系数据库的性能难以接受,更有人视其为当时正在进行中的网状数据库规范化工作的严重威胁。为了促进对问题的理解,1974年ACM牵头组织了一次研讨会,会上开展了一场分别以Codd和Bachman为首的支持和反对关系数据库两派之间的辩论。这次著名的辩论推动了关系数据库的发展,使其最终成为现代数据库产品的主流。
1969年Edgar F.“Ted” Codd发明了关系数据库。
1970年关系模型建立之后,IBM公司在San Jose实验室增加了更多的研究人员研究这个项目,这个项目就是著名的System R。其目标是论证一个全功能关系DBMS的可行性。该项目结束于1979年,完成了第一个实现SQL的 DBMS。然而IBM对IMS的承诺阻止了System R的投产,一直到1980年System R才作为一个产品正式推向市场。IBM产品化步伐缓慢的三个原因:IBM重视信誉,重视质量,尽量减少故障;IBM是个大公司,官僚体系庞大,IBM内部已经有层次数据库产品,相关人员不积极,甚至反对。
然而同时,1973年加州大学伯克利分校的Michael Stonebraker和Eugene Wong利用System R已发布的信息开始开发自己的关系数据库系统Ingres。他们开发的Ingres项目最后由Oracle公司、Ingres公司以及硅谷的其他厂商所商品化。后来,System R和Ingres系统双双获得ACM的1988年“软件系统奖”。
1976年霍尼韦尔公司(Honeywell)开发了第一个商用关系数据库系统——Multics Relational Data Store。关系型数据库系统以关系代数为坚实的理论基础,经过几十年的发展和实际应用,技术越来越成熟和完善。其代表产品有Oracle、IBM公司的 DB2、微软公司的MS SQL Server以及Informix、ADABAS D等等。 1974年IBM的Ray Boyce和Don Chamberlin将Codd关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language)语言。SQL语言的功能包括查询、操纵、定义和控制,是一个综合的、通用的关系数据库语言,同时又是一种高度非过程化的语言,只要求用户指出做什么而不需要指出怎么做。SQL集成实现了数据库生命周期中的全部操作。SQL提供了与关系数据库进行交互的方法,它可以与标准的编程语言一起工作。自产生之日起,SQL语言便成了检验关系数据库的试金石,而SQL语言标准的每一次变更都指导着关系数据库产品的发展方向。然而,直到二十世纪七十年代中期,关系理论才通过SQL在商业数据库Oracle和DB2中使用。
1986年,ANSI把SQL作为关系数据库语言的美国标准,同年公布了标准SQL文本。SQL标准有3个版本。基本SQL定义是ANSⅨ3135-89,“Database Language- SQL with Integrity Enhancement”[ANS89],一般叫做SQL-89。SQL-89定义了模式定义、数据操作和事务处理。SQL- 89和随后的ANSⅨ3168-1989,“Database Language-Embedded SQL”构成了第一代SQL标准。ANSⅨ3135-1992[ANS92]描述了一种增强功能的SQL,叫做SQL-92标准。SQL-92包括模式操作,动态创建和SQL语句动态执行、网络环境支持等增强特性。在完成SQL-92标准后,ANSI和ISO即开始合作开发SQL3标准。SQL3的主要特点在于抽象数据类型的支持,为新一代对象关系数据库提供了标准。
1976年IBM E.F.Codd发表了一篇里程碑的论文“R系统:数据库关系理论”,介绍了关系数据库理论和查询语言SQL。Oracle的创始人Ellison非常仔细地阅读了这篇文章,被其内容震惊,这是第一次有人用全面一致的方案管理数据信息。作者E.F.Codd 1966年就发表了关系数据库理论,并在IBM研究机构开发原型,这个项目就是R系统,存取数据表的语言就是SQL。Ellison看完后,敏锐意识到在这个研究基础上可以开发商用软件系统。而当时大多数人认为关系数据库不会有商业价值。Ellison认为这是他们的机会:他们决定开发通用商用数据库系统Oracle,这个名字来源于他们曾给中央情报局做过的项目名。几个月后,他们就开发了Oracle 1.0。但这只不过是个玩具,除了完成简单关系查询不能做任何事情,他们花相当长的时间才使Oracle变得可用,维持公司运转主要靠承接一些数据库管理项目和做顾问咨询工作。而IBM却没有计划开发,为什么蓝色巨人放弃了这个价值上百亿的产品,原因有很多:IBM的研究人员大多是学术出身,他们最感兴趣的是理论,而非推向市场的产品,从学术上看,研究成果应公开发表论文和演讲能使他们成名,为什么不呢?还有一个很主要的原因就是IBM当时有一个销售得还不错的层次数据库产品IMS。直到1985年IBM才发布了关系数据库DB2,Ellision那时已经成了千万富翁。Ellison曾将IBM选择Microsoft的MS-DOS作为IBM-PC机的操作系统比为:“世界企业经营历史上最严重的错误,价值超过了上千亿美元。”IBM发表R系统论文,而且没有很快推出关系数据库产品的错误可能仅仅次之。Oracle的市值在1996年就达到了280亿美元。随着信息技术和市场的发展,人们发现关系型数据库系统虽然技术很成熟,但其局限性也是显而易见的:它能很好地处理所谓的“表格型数据”,却对技术界出现的越来越多的复杂类型的数据无能为力。九十年代以后,技术界一直在研究和寻求新型数据库系统。但在什么是新型数据库系统的发展方向的问题上,产业界一度是相当困惑的。受当时技术风潮的影响,在相当一段时间内,人们把大量的精力花在研究“面向对象的数据库系统(object oriented database)”或简称“OO数据库系统”。值得一提的是,美国Stonebraker教授提出的面向对象的关系型数据库理论曾一度受到产业界的青睐。而Stonebraker本人也在当时被Informix花大价钱聘为技术总负责人。
然而,数年的发展表明,面向对象的关系型数据库系统产品的市场发展的情况并不理想。理论上的完美性并没有带来市场的热烈反应。其不成功的主要原因在于,这种数据库产品的主要设计思想是企图用新型数据库系统来取代现有的数据库系统。这对许多已经运用数据库系统多年并积累了大量工作数据的客户,尤其是大客户来说,是无法承受新旧数据间的转换而带来的巨大工作量及巨额开支的。另外,面向对象的关系型数据库系统使查询语言变得极其复杂,从而使得无论是数据库的开发商家还是应用客户都视其复杂的应用技术为畏途。二十世纪六十年代后期出现了一种新型数据库软件:决策支持系统(DSS),其目的是让管理者在决策过程中更有效地利用数据信息。于是在1970年,第一个联机分析处理工具——Express诞生了。其他决策支持系统紧随其后,许多是由公司的IT部门开发出来的。
1985年,第一个商务智能系统(business intelligence)由Metaphor计算机系统有限公司为Procter& Gamble公司开发出来,主要是用来连接销售信息和零售的扫描仪数据。同年, Pilot软件公司开始出售第一个商用客户/服务器执行信息系统——Command Center。同样在这年,加州大学伯克利分校Ingres项目演变成Postgres,其目标是开发出一个面向对象的数据库。此后一年, Graphael公司开发了第一个商用的对象数据库系统—Gbase。
1988年,IBM公司的研究者Barry Devlin和Paul Murphy发明了一个新的术语—信息仓库,之后,IT的厂商开始构建实验性的数据仓库。1991年,W.H. Bill Inmon出版了一本“如何构建数据仓库”的书,使得数据仓库真正开始应用。
1991: W.H.“Bill” Inmon发表了”构建数据仓库”
二十世纪九十年代,随着基于PC的客户/服务器计算模式和企业软件包的广泛采用,数据管理的变革基本完成。数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。Internet的异军突起以及XML语言的出现,给数据库系统的发展开辟了一片新的天地。
电子图书数据库有哪些
问题一:我国三大电子图书数据库分别是什么 1)、超星电子图书馆:收录的电子图书内容丰富,包括经典理论、哲学、社科、经济、语言文字、文学、数理化、生物、工业技术、计算机等50余个学科门类,现拥有中文电子图书80万种,论文300万篇,全文总量4亿余业,并且每天仍在不断地更新与增加2)书生之家数字图书馆:主要收录1999年以后出版的新书,其收录量为每年中国出版的新书品种一半以上,目前拥有图书15万种,数量可观,学科门类齐全。3)中国学术期刊全文数据库:该库的产品分为十大专辑:理工A、理工B、理工C、农业、医药卫生、文史哲、政治军事与法律、教育与社会科学综合、电子技术与信息科学、经济与管理。个专辑分为若干专题,共168个专题。4)维普中文科技期刊数据库:按照《中国图书馆分类法》进行分类,所有文献被分为8个专辑:社会科学、自然科学、工程技术、医药卫生、农业科学、经济管理、教育科学和图书情报。8大专辑又被细分为36个专题。5)万方数字化期刊收藏资源的特点:目前集纳了理、工、农、医、人文五大类70多个类目,2500多种科技类核心期刊,实现全文上网。该系统收录的期刊种类主要有7个:基础科学、农业科学、社会科学、哲学政法、医学卫生、教科文艺、经济财政。维普、万方、超星的使用方法1)、维普中文科技期刊数据库“高级检索”的方法:打开维普数据库,点击高级检索,输入关键词、作者、分类号、机构、刊名,扩展检索条件,如:时间条件、专业限制、期刊范围,然后点击检索。2)、中国学术期刊全文数据库“高级检索”的方法:打开中国知网,点击高级检索,进入中国学术期刊全文数据库,输入检索控制条件,如:发表时间来源期刊`期刊年期支持基金,然后输入内容检索条件。
问题二:我国著名的电子图书数据库有? dportal.nlc.gov:8332/nlcdrss/database/sjk_lb这是网址
问题三:哪些数据库可以检索电子图书超星图书馆
问题四:图书书目检索系统与电子图书数据库有什么区别馆外最多可以检索到图书目录,电子图书需要到馆内或者校内去下载,电子图书书商都做了ip限制,只有校内ip才可以下载或者在线看电子图书。
问题五:我馆购买的全文电子图书数据库有哪些主要有:
ACS
IEEE/IET
EI工程索引
Elsevier数据库 SCIE科学引文索引
超星电子图书
万方数据
CNKI中国知识资源总库
除此以外还有其他的数字资源,欢迎登陆图书馆主页查询哦
问题六:读者通过什么数据库资源获取中文电子图书电子资源服务是大型图书馆为了方便读者查阅书籍而开通的网上查询平台。
举例说明:
北京大学图书馆电子资源服务
(1)光盘及网络数据库检索
北大图书馆自1993年底开始陆续购置光盘数据库及其检索设备,稍后又陆续进了多种网络数据库。目前我馆拥有的光盘及网络
数据库的品种和数量居全国高校前列,且均已实现了在校园网环境下的多用户共享,校园网用户可以随时随地方便地使用这些资源。
目前北大图书馆共拥有涉及20余个学科的、国内外的200余种光盘及网络数据库,利用这些数据库资源,我们可为读者提供专题
检索、全文检索、定题检索及论文查收查引等服务。本馆数据库服务由本馆主页电子资源部分、地址是:
162.105.138.23/reference/wuc/,光盘及网络数据库的检索结果可以拷盘、打印、email等方式输出。
(馆藏重要光盘及网络数据库目录见附录)
我馆是教育部系统的科技成果查新工作站,可联机检索美国Dialog联机检索系统中的近600个数据库。读者
可到图书馆东区一层南侧的光盘及网络检索室(E101)使用该项服务。
问题七:某学生想找本电子图书,可以到哪个数据库查找问题描述不清楚,为让您更好地得到答案,您可以通过文字、截图,对问题更详细的描述并悬赏,然后把你疑惑的问题提交,就可以啦.如果您对我的回答有不满意的地方,请您继续追问
答题不易,互相理解.
问题八:某学生想找本电子图书,可以到哪个数据库查找学生想找本电子图书,可以到哪个数据库查找?正确答案:超星数字图书
问题九:国内有哪些查找期刊论文,学位论文,电子图书的数据库知网、万方、维普、龙源等都是目前比较主流的学术期刊数据库
论文咨询我头像
问题十:西北民族大学图书馆的电子图书数据库有哪些 subunit-boundary{
fill: none;
stroke:#777;
stroke-dasharray: 2,2;
stroke-linejoin: round;
}
subunit-boundary.IRL{
stroke:#aaa;
}
关于高级数据库和数据库高级查询2的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。