您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle数据库学习资料课件
Oracle的历史•Oracle公司(甲骨文)创始人:LarryEllison32岁,公司提供数据库服务.•公司成立于1977年,83年公司更名为Oracle,原名为”软件开发实验室”.•Oracle数据库适用于大型企业•竞争对手–微软的SQLServer–IBM的DB2•目前的版本–2.0~7.0,8.0,8i,9i,10gOracle的服务:我的电脑右键选择管理--服务和应用程序—服务OracleServerORACLE_SID数据库服务,进程为ORACLE.exeOracleHOME_NAMETNSListener监听器服务,进程TNSLSNR.exe默认端口1521、1526OracleDBConsoleORACLE_SID对应用于OEMOracleHOME_NAMEiSQL*Plus对于于iSQL*PlusORACLE_SID-----是数据库或例程的系统标识符HOME_NAME------是Oracle主目录名称这几个服务之间的关系:启动顺序:1、OracleHOME_NAMETNSListener必须启动2、OracleServerORACLE_SID必须启动3、OracleDBConsoleORACLE_SID启动依赖于OracleServerORACLE_SIDSqlPlusSqlPlus是Oracle任何版本都自带的数据库操作工具,使用它可以完成大部分的数据库操作。SqlPlus可以“开始程序Oracle”启动,也可以命令行启动(互动)1.命令行启动sqlPlussqlplus用户名/密码@orcl或sqlplus用户名@orcl如果用户是管理员要在sqlplus用户名/密码@主机字符串assysdba“/”是用户名和密码分隔符号“@”是密码和数据库的分隔符号“orcl”是数据库的名称,在安装时指定常用命令(互动)connect切换用户showuser显示当前用户setlinesize1000设置行显示长度setpagesize1000设置分页长度descdept查看表结构selecttable_namefromuser_tables查询当前用户的表/运行上一条SQL语句clearscreen清除屏幕edit编辑spoold:/a保存输出结果到某个位置spooloff保存结束quit退出list查看最后一条语句@文件名.sql运行外部文件中的SQL语句Sql*plus的常用命令是一个oracle提供的工具,使用此工具可以完成数据库的操作和管理。SQL*Plus有两种工作方式:1、基于图形界面的---sqlplusw2、基于命令行的---sqlplusSql*plus中可以执行3种类型的命令:1、SQL语句SELECT*FROMtab;2、PL/SQL语句CREATETABLEtest(xnumber,infovarchar(20));Commit;编写一个存储过程,向test表中插入20条记录。DECLARExnumber:=10;BEGINFORIIN1..20LOOPINSERTINTOtestVALUES(x,’测试数据’);x=x+i;ENDLOOP;END;3、SQL*Plus内部命令这些命令用于设置SQL*Plus的环境或格式化输出结果。例如:改变EMP表里SAL列的输出格式COLUMNSALFORMAT$99,99HEADING‘薪水’;使用SQL*Plus可以执行操作系统本身的命令:例如:在windows下的记事本notepad.exeHOSTnotepad.exe;退出SQL*Plus返回操作系统:EXIT(QUIT)帮助提示:HELPSET;HELP@;HELPED;清除屏幕:CLEARSRC;SQL*Plus编辑命令命令缩写作用APPENDtextAtext将text加到当前行末端CHANGE/old/newC/old/new将当前行中的old改为newCHANGE/textC/text从当前行中删除textCLEARBUFFERCLBUFF清除全部行DEL删除当前行INPUTI加入一行或多行INPUTtextItext加入由text组成的行LISTL列出缓冲区中的全部行LISTnLn或n列出n行LISTlastLlast列出最后一行LISTmnLmn列出m到n行运行缓冲区的命令:RUN或/保存缓冲区中的内容为.sql文件:SAVEf:test;编辑或者读取命令文件.sql:EDIT文件名;在SQL文件中的注释有3种方法:使用SQL*Plus的REMARK命令;使用SQL注释分界符/*......*/使用ANSI/SQL的“--”型注释读取命令文件在SQL*PLUS中:GETf:\test.sql;运行.sql文件中的指令:START或@,@使用更多建议:尽量使用记事本编写代码,这样有利于修改。所需要的表在所有的讲解中所要使用到的表全部都是scott用户下的表,所以必须了解在此用户下有那几张表,以及每张表的作用是什么。避免出现汉字,因为实际开发中容易出现乱码问题。雇员表(emp)雇员表中记录的是一个个的雇员的基本信息。雇员表(EMP)No.字段类型描述1EMPNONUMBER(4)表示雇员编号,是唯一编号2ENAMEVARCHAR2(10)表示雇员姓名3JOBVARCHAR2(9)表示工作职位4MGRNUMBER(4)表示一个雇员的领导编号5HIREDATEDATE表示雇佣日期6SALNUMBER(7,2)表示月薪,工资7COMMNUMBER(7,2)表示奖金,或者称为佣金8DEPTNONUMBER(2)部门编号部门表(dept)表示一个个具体的部门信息部门表(dept)No.字段类型描述1DEPTNONUMBER(2)部门编号,是唯一编号2DNAMEVARCHAR2(14)部门名称3LOCVARCHAR2(13)部门位置工资等级表(SALGRADE)一个公司工资是有等级制度,那么用此表表示一个工资的等级工资等级表(SALGRADE)No.字段类型描述1GRADENUMBER等级名称2LOSALNUMBER此等级的最低工资3HISALNUMBER此等级的最高工资奖金表(BONUS)表示的是一个雇员的工资及奖金奖金表(BONUS)No.字段类型描述1ENAMEVARCHAR2(10)雇员姓名2JOBVARCHAR2(9)雇员工作3SALNUMBER雇员工资4COMMNUMBER雇员奖金(佣金)范例:查询每月可以得到奖金的雇员信息·奖金是comm字段·只要字段中存在内容,则表示此内容不为空(null),如果存在内容,则会显示具体的值。·不为空的表示:字段ISNOTNULLSELECT*FROMempWHEREcommISNOTNULL;范例:查询没有奖金的雇员·没有奖金则comm字段的内容肯定是null,格式:字段ISNULLSELECT*FROMempWHEREcommISNULL;范例:要求查询出,基本工资大于1500,同时可以领取奖金的雇员信息。·此时应该是两个条件,而且两个条件必须同时满足·既然要求两个条件全部满足,则必须使用AND操作符进行条件的连接。SELECT*FROMempWHEREsal1500ANDcommISNOTNULL;同时指定了两个条件,两个条件必须同时满足才可以查询出结果。范例:要求查询出,基本工资大于1500,或者可以领取奖金的雇员信息。·如果要表现出或者的概念使用OR进行连接,表示两个条件有一个满足即可。SELECT*FROMempWHEREsal1500ORcommISNOTNULL;之前使用NOT可以取反,把真的条件变为假的,假的变为真的。范例:要求查询出,基本工资不大于1500,同时不可以领取奖金的雇员信息。·此时相当于是整体的条件取反。SELECT*FROMempWHERENOT(sal1500ORcommISNOTNULL);等价于SELECT*FROMempWHEREsal=1500andcommisnull;从程序中可以发现,通过括号表示一组的条件。范例:查询基本工资大于1500,但是小于3000的全部雇员信息。·满足两个:sal1500,sal3000SELECT*FROMempWHEREsal1500ANDsal3000;在SQL语法中,提供了一个专门的指定范围查询的过滤语句:BETWEEN…AND…语法格式:字段BETWEEN最小值AND最大值例:使用BETWEEN…AND修改之前的操作SELECT*FROMempWHEREsalBETWEEN1500AND3000;实际上BETWEEN…AND操作等价:sal=1500ANDsal=3000,包含了等于的功能。范例:查询出在1981年雇佣的全部雇员信息·1981年1月1日~1981年12月31日之间雇佣的雇员·日期表示的时候要加“'”SELECT*FROMempWHEREhiredateBETWEEN'1-1月-81'AND'31-12月-81';结论:BETWEEN…AND查询除了可以支持数字之外,也可以支持日期的查询·随着深入的学习会发现,日期实际上也是以数字的形式表示出来。范例:要求查询出姓名是smith的雇员信息·此时告诉了要查询的名字,条件:ename='smith'SELECT*FROMempWHEREename='smith';执行以上的查询语句之后,并不会返回查询结果,再次查询数据库表的信息,发现smith是采用大写的形式表示的,在Oracle中是对大小写敏感的,所以此时在查询的时候必须以大写的形式进行条件的编写。代码修改如下:SELECT*FROMempWHEREename='SMITH';范例:要求查询出雇员编号是7369、7499、7521的雇员的具体信息·如果此时按照之前的做法,则设置条件要使用OR连接:empno=7369ORempno=7499ORempno=7521SELECT*FROMempWHEREempno=7369ORempno=7499ORempno=7521;实际上,此时是指定了查询的范围,那么既然有范围了在SQL语法中就可以使用IN操作符完成。语法格式:字段IN(值1,值2,…..,值n)如果现在要求查询的内容不在此范围之中,则可以使用NOTIN,语法如下:字段NOTIN(值1,值2,…..,值n)范例:使用以上的格式进行修改SELECT*FROMempWHEREempnoIN(7369,7499,7521);范例:要求查询出雇员编号不是7369、7499、7521的雇员的具体信息SELECT*FROMempWHEREempnoNOTIN(7369,7499,7521);另外,需要说明的是,使用IN操作符不光可以用在数字上,也可以用在字符串的信息上。范例:要求查询出姓名是SMITH、ALLEN、KING的雇员信息SELECT*FROMempWHEREenameIN('SMITH','ALLEN','KING');提示:如果在指定的查询范围中指定了额外的内容,则不影响程序运行。SELECT*FROMempWHEREenameIN('SMITH','ALLEN','KING','$#VC');在一般的日常见到的站点中经常发现有模糊查找功能,即:输入一个指定的关键字,把符合的内容全部查询出来,在SQL中使用LIKE语句完成。在使用LIKE语句的时候要注意通配符的问题,在LIKE语句中主要使用以下两种通配符:·“%”:可以匹配任意长度的内容·“_”:可以匹配一个长度的内容范例:查询出所有雇员姓名中第二个字母包含“M”的雇员信息SELECT*FROMempWHEREenameLIKE'_M%';范例:查询出雇员姓名中包含字母M的雇员信息·此时,表示可以在任意的位置上出现字母MSELECT*FROMempWHEREenameLIKE'%M%';但是,要提醒大家的是:“如果在使用LIKE的时候没有指定查询的关键字,则表示查询全部”SELECT*FROMempWHEREenam
本文标题:Oracle数据库学习资料课件
链接地址:https://www.777doc.com/doc-6151203 .html