《Oracle数据库》word版

上传人:pia****nwu 文档编号:140689849 上传时间:2022-08-23 格式:DOC 页数:13 大小:464.51KB
收藏 版权申诉 举报 下载
《Oracle数据库》word版_第1页
第1页 / 共13页
《Oracle数据库》word版_第2页
第2页 / 共13页
《Oracle数据库》word版_第3页
第3页 / 共13页
资源描述:

《《Oracle数据库》word版》由会员分享,可在线阅读,更多相关《《Oracle数据库》word版(13页珍藏版)》请在装配图网上搜索。

1、Oracle数据库客户端链接服务器前,服务器要启动监听服务,并且客户端工具要安装Oracle客户端,并且在客户端要建立本地网络服务名。Oracle服务和监听启动后才能对数据库进行操作。一:打开服务 启动OracleOraDb10g_home1TNSListener服务或者二:进入命令行输入:lsnrctl start 即可启动lsnrctl stop 停止服务lsnrctl status 查看状态在SQL*Plus中,启动Oracle必须是sys用户,命令格式是:startupopen图24Oracle服务启动Oracle服务关闭用命令:shutdownimmediate图25Oracle服务

2、关闭6.Oracle用户和权限Oracle中,一般不会轻易在一个服务器上创建多个数据库,在一个数据库中,不同的项目由不同的用户访问,每一个用户拥有自身创建的数据库对象,因此用户的概念在Oracle中非常重要。Oracle的用户可以用CREATEUSER命令来创建。其语法是:语法结构:创建用户CREATEUSER用户名IDENTIFIEDBY口令ACCOUNTLOCK|UNLOCK在Oracle开发中,客户端把SQL语句发送给服务器,服务器对SQL语句进行编译、执行,把执行的结果返回给客户端。OracleSQL语句由如下命令组成:数据定义语言(DDL),包括CREATE(创建)命令、ALTER(

3、修改)命令、DROP(删除)命令等。数据操纵语言(DML),包括INSERT(插入)命令、UPDATE(更新)命令、DELETE(删除)命令、SELECTFORUPDATE(查询)等。数据查询语言(DQL),包括基本查询语句、OrderBy子句、GroupBy子句等。事务控制语言(TCL),包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。数据控制语言(DCL),GRANT(授权)命令、REVOKE(撤销)命令。Oracle的查询中,必须使用“select列from表”的完整语法,当查询单行函数的时候,from后面使用DUAL表,dual表在系统中只

4、有一行一列,该表在输出单行函数时为了selectfrom的语法完整性而使用我现在有两张表结构一莫一样的表,表中的主要字段信息也是一样的,主键信息业一样,就是后面的有个别字段中的值不同,怎么能查找对比出来呢?SELECT ID=CASE WHEN(B.ID=A.ID)THEN LTRIM(B.ID) ELSE LTRIM(B.ID)+不同 END, 姓名=CASE WHEN(B.姓名=A.姓名) THEN B.姓名 ELSE B.姓名+不同 END, 年龄=CASE WHEN(B.年龄=A.年龄)THEN LTRIM(B.年龄) ELSE LTRIM(B.年龄)+不同 END, 学业=CASE

5、WHEN(B.学业=A.学业) THEN B.学业 ELSE B.学业+不同 END, 身高=CASE WHEN(B.身高=A.身高) THEN LTRIM(B.身高) ELSE LTRIM(B.身高)+不同 END, 体重=CASE WHEN(B.体重=A.体重) THEN LTRIM(B.体重) ELSE LTRIM(B.体重)+不同 ENDFROM A JOIN B ON A.ID=B.ID将两个不同数据库的两张不同表的字段值做对比,如果相同则不显示,否则显示出来:select id, a as memo from a where id not in (select id from b)

6、union allselect id, b from b where id not in (select id from a) 比较数据表的数据是否一样select from formula A where not exists (select from formula B where A。formulaNameB。formulaName and A。formulaContentB。formulaContent and A。formulaTypeB。formulaType)对比查询显示两张表:select * from aminusselect * from b查找出b表中没有的,但是a表中存

7、在的数据select a.* where a.id not in (select b.id from b)二、使用表的别名进行多表查询如:SELECTa.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 a, tb_demo065_tel b WHERE a.id=b.id AND b.id=$_POSTtextidSQL语言中,可以通过两种方式为表指定别名 第一种是通过关键字AS指定,如SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_de

8、mo065 AS a,tb_demo065_tel AS b WHERE a.id=b.id第二种是在表名后直接加表的别名实现SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 a,tb_demo065_tel b WHERE a.id=b.id 使用表的别名应注意几下几点(1)别名通常是一个缩短了的表名,用于在连接中引用表中的特定列,如果连接中的多个表中有相同的名称列存在,必须用表名或表的别名限定列名(2)如果定义了表的别名就不能再使用表名三、 合并多个结果集SQL语言中,可以通过UNION 或 AL

9、L将多个SELECT语句的查询结果合并输出,这两个关键字的使用说明如下:UNION:利用该关键字可以将多个SELECT 语句的查询结果合并输出,并删除重复行ALL:利用该关键字可以将多个SELECT 语句的查询结果合并输出,但不会删除重复行在使用UNION或ALL关键字将多个表合并输出时,查询结果必须具有相同的结构并且数据类型必须兼容,另外使用UNION时两张表的字段数量也必须相同,否则会提示SQL语句有错误。e.x:SELECT id,name,pwd FROM tb_demo067 UNION SELECT uid,price,date FROM tb_demo067_tel四、 简单嵌套

10、查询子查询:子查询是一个SELECT查询,返回单个值且嵌套在SELECT、INSERT、UPDATE和DELETE语句或其它查询语句中,任何可以使用表达式的地方都可以使用子查询.SELECT id,name,sex,date FROM tb_demo068 WHERE id in(SELECT id FROM tb_demo068 WHERE id=$_POSTtest)内连接:把查询结果作为WHERE子句的查询条件即称为内连接五、复杂的嵌套查询多表之间的嵌套查询可以通过谓词IN实现,语法格式如下:test_expressionNOT IN subquery参数说明:test_expressi

11、on指SQL表达式,subquery包含某结果集的子查询多表嵌套查询的原理:无论是多少张表进行嵌套,表与表之间一定存在某种关联,通过WHERE子句建立此种关联实现查询六、嵌套查询在查询统计中的应用实 现多表查询时,可以同时使用谓词ANY、SOME、ALL,这些谓词被称为定量比较谓词,可以和比较运算符联合使用,判断是否全部返回值都满足搜索条 件.SOME和ANY谓词是存在量的,只注重是否有返回值满足搜索条件,这两个谓词的含义相同,可以替换使用;ALL谓词称为通用谓词,它只关心是否有谓 词满足搜索要求.SELECT * FROM tb_demo069_people WHERE uid IN(SEL

12、ECT deptID FROM tb_demo069_dept WHERE deptName=$_POSTselect)SELECT a.id,a.name FROM tb_demo067 AS a WHERE idANY 大于子查询中的某个值 =ANY 大于等于子查询中的某个值 =ANY 小于等于子查询中的某个值 =ANY 等于子查询中的某个值 !=ANY或ANY 不等于子查询中的某个值 ALL 大于子查询中的所有值 =ALL 大于等于子查询中的所有值 =ALL 小于等于子查询中的所有值 =ALL 等于子查询中的所有值 !=ALL或ALL 不等于子查询中的所有值七、使用子查询作派生的表在实际

13、项目开发过程中经常用到从一个信息较为完善的表中派生出一个只含有几个关键字段的信息表,通过子查询就可以来实现这一目标,如SELECT people.name,people.chinese,people.math,people.english FROM (SELECT name,chinese,math,english FROM tb_demo071) AS people注:子查询应遵循以下规则:(1)由比较运算符引入的内层子查询只包含一个表达式或列名,在外层语句中的WHERE子句内命名的列必须与内层子查询命名的列兼容(2)由不可更改的比较运算符引入的子查询(比较运算符后面不跟关键字ANY或ALL

14、)不包括GROUP BY 或 HAVING子句,除非预先确定了成组或单个的值(3)用EXISTS引入的SELECT列表一般都由*组成,不必指定列名(4)子查询不能在内部处理其结果八、 使用子查询作表达式SELECT (SELECT AVG(chinese)FROM tb_demo071),(SELECT AVG(english)FROM tb_demo071),(SELECT AVG(math)FROM tb_demo071) FROM tb_demo071注:在使用子查询时最好为列表项取个别名,这样可以方便用户在使用mysql_fetch_array()函数时为表项赋值,如SELECT (S

15、ELECT AVG(chinese) FROM tb_demo071) AS yuwen ,(SELECT AVG(english) FROM tb_demo071) AS yingyu,(SELECT AVG(math) FROM tb_demo071) AS shuxue FROM tb_demo071九、 使用子查询关联数据SELECT * FROM tb_demo072_student WHERE id=(SELECT id FROM tb_demo072_class WHERE className = $_POSTtext)十、 多表联合查询利用SQL语句中的UNION,可以将不同表

16、中符合条件的数据信息显示在同一列中。e.x:SELECT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten注:使用UNION时应注意以下两点:(1)在使用UNION运算符组合的语句中,所有选择列表的表达式数目必须相同,如列名、算术表达式及聚合函数等(2)在每个查询表中,对应列的数据结构必须一样。十一、对联合后的结果进行排序为了UNION的运算兼容,要求所有SELECT语句都不能有ORDER BY语句,但有一种情况例外,那就是在最后一个SELECT语句中放置ORDER BY 子句实现结果的最终排序输出。e.x:SELE

17、CT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten ORDER BY id使用UNION条件上相对比较苛刻,所以使用此语句时一定要注意两个表项数目和字段类型是否相同十二、条件联合语句SELECT * FROM tb_demo076_BEIJING GROUP BY name HAVING name=人民邮电出版社 OR name=机械工业出版社 UNION SELECT * FROM tb_demo076_BEIJING GROUP BY name HAVING name 人民邮电出版社 AND name 机械工

18、业再版社 ORDER BY id上面语句应用了GROUP BY分组语句和HAVING语句实现条件联合查询。其实现目的是先保证将人民邮电出版社和机械工业出版社始终位于名单最前列,然后再输出其它的出版社十三、 简单内连接查询SELECT filedlist FROM table1 INNER JOIN table2 ON table1.column1 = table2.column1其中,filedlist是要显示的字段,INNER表示表之间的连接方式为内连接,table1.column1=table2.column1用于指明两表间的连接条件,如:SELECT a.name,a.address,a

19、.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id十四、 复杂内连接查询复杂的内连接查询是在基本的内连接查询的基础上再附加一些查询条件,如:SELECT a.name,a.address,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id WHERE b.id=(SELECT id FROM tb_demo0

20、65 WHERE tb_demo065.name=$_POSTtext)总之,实现表与表之间的关联的本质是两表之间存在共同的数据项或者相同的数据项,通过WHERE 子句或内连接INNER JOIN ON 语句将两表连接起来,实现查询十五、 使用外连接实现多表联合查询(1)LEFT OUTER JOIN表示表之间通过左连接方式相互连接,也可简写成LEFT JOIN,它是以左侧的表为基准故称左连接,左侧表中所有信息将被全部输出,而右侧表信息则只会输出符合条件的信息,对不符合条件的信息则返回NULLe.x:SELECT a.name,a.address,b.math,b.english FROM t

21、b_demo065 AS A LEFT OUTER JOIN tb_demo065_tel AS b ON a.id=b.id(2)RIGHT OUTER JOIN表示表之间通过右连接方式相互连接,也可简写成RIGHT JOIN,它是以右侧的表为基准故称右连接,右侧表中所有信息将被全部输出,而左侧表信息则只会输出符合条件的信息,对不符合条件的信息则返回NULLE.X:SELECT a.name,a.address,b.math,b.english FROM tb_demo065 AS A RIGHT OUTER JOIN tb_demo065_tel AS b ON a.id=b.id十六、

22、利用IN或NOTIN关键字限定范围e.x:SELECT * FROM tb_demo083 WHERE code IN(SELECT code FROM tb_demo083 WHERE code BETWEEN $_POSTtext1 AND $_POSTtext2)利用IN可指定在范围内查询,若要求在某范围外查询可以用NOT IN代替它十七、由IN引入的关联子查询e.x:SELECT * FROM tb_demo083 WHERE code IN(SELECT code FROM tb_demo083 WHERE code = $_POSTtext)十八、利用HAVING语句过滤分组数据HAVING子句用于指定组或聚合的搜索条件,HAVING通常与GROUP BY 语句一起使用,如果SQL语句中不含GROUP BY子句,则HAVING的行为与WHERE子句一样.e.x:SELECT name,math FROM tb_demo083 GROUP BY id HAVING math 95

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!