您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > oracle数据库基础笔记
ORACLE学习笔记基础oracle数据库中的四个主要用户:超级管理员:sys/change_on_install;普通管理员:system/manager;普通用户:scott/tiger;大数据用户:sh/sh;设置每行显示记录长度:setlinesize300;设置每页显示记录长度:setpagesize30;用户登录切换conn用户名/密码【ASSYSDBA】;关闭数据库实例:shutdownimmediate;一旦关闭之后用户是无法直接连接sqlplusw命令,此时可以先使用/nolog登陆,之后使用管理员登陆;启动数据库:startup;ed创建记事本@执行记事本sqlplusw命令窗口页可以调用本机的操作系统命令,使用“host”作为前缀。hostcopyd:\demo.sqld:\hello.txt;scott用户的表结构(重点,背)查看每张表的表结构,则可以采用以下命令完成:DESC表名称;1部门表:deptNo.名称类型描述1DeptnoNotnullnumber(2)表示部门编号2DnameVarchar2(14)表示部门名称,最多由14个字符组成3LocVarchar2(13)表示部门地址,最多由13个字符组成2雇员表:empNO.名称类型描述1EMPNONOTNULLNUMBER(4)雇员的编号,由四位数字组成2ENAMEVARCHAR2(10)雇员的姓名,最多由十位数字组成3JOBVARCHAR2(9)雇员的职位,最多由九位数字组成4MGRNUMBER(4)雇员对应的领导编号,领导也是雇员5HIREDATEDATE雇员的雇佣日期6SALNUMBER(7,2)基本工资,两位小数,五位整数,一共七位7COMMNUMBER(7,2)奖金,佣金8DEPTNONUMBER(2)雇员所在部门编号3工资等级表:salgradeNo.名称类型描述1GRADENUMBER工资等级2LOSALNUMBER此等级的最低工资3HISALNUMBER此等级的最高工资4工资表:bonusNO.名称类型描述1ENAMEVARCHAR2(10)雇员的姓名2JOBVARCHAR2(9)雇员的职位3SALNUMBER雇员的工资4COMMNUMBER雇员的奖金简单查询DML(DataManipulationLanguage,数据操作语言)--用于检索或者修改数据。(难点)DDL(DataDefinitionLanguage,数据定义语言)--用于定义数据的结构,创建,修改或者删除数据库对象,属于定义语言,定义表结构。DCL(DataControlLanguage,数据控制语言)--用于定义数据库用户的权限,用于数据库控制语言。简单查询指的是查寻出一张表的所有的数据,简单查询的语法如下:SELECT[DISTINCT]*|字段[别名]FROM表名称[别名]范例:查询dept表的全部记录select*fromdept;范例:查询每个雇员的编号姓名基本工资selectempno,ename,salfromemp;范例:查询出每个雇员的职位selectjobfromemp;这个时候查询出来的job内容出现了重复的内容,DISTINCT正好是去重。在进行简单查询的操作之中,也可以使用各个数学的四则运算。范例:要求显示每一个雇员的姓名,职位,基本年薪selectename,job,sal*12incomefromemp;在简单查询中也可以使用“||”连接查询的字段selectempno||','||enamefromemp;由于“,”属于原样输出的字符串,所以必须使用“'”括起来。雇员编号是:7369的雇员姓名是:SMITH,基本工资是:800,职位是:CLERK!select'雇员编号是'||empno||'雇员姓名是'||ename||'基本工资是:'||sal||'职位是:'||job雇员信息fromemp;一定要记住别名上的内容一定不要使用“'”括起来,而只有在select子句出现的内容才可以用“'”子句:select之后的语句叫select子句from之后的语句叫子句。限定查询(重点)在之前的简单查询之中,是将所有的记录进行显示,但是现在可以对显示的记录进行过滤的操作,而这就属于限定查询的工作了,限定查询就是在之前语法的基础上增加了一个where子句,用于指定限定条件,此时语法如下:Select[DISTINCT]*|字段[别名]FROM表名称[别名]WHERE条件(S);在WHERE子句之后可以增加多个条件,最常见的条件就是基本的关系运算:,=,,=,!=(),BETWEENAND,LIKE,IN,ISNULL,AND,OR,NOT;查询所有办事员的信息:select*fromempwherejob=’CLERK’;Oracle查询时区分大小写。范围判断:BETWEEN…AND…“BETWEEN最小值AND最大值”,表示的是一个范围间的判断过程,不仅可以判断字符,数字,还可以判断日期。范例:查询基本工资在1500~3000雇员信息。Select*fromempWHEREsalBETWEEN1500AND3000;求反在sal前面加NOT。范例:要求查询在1981年雇佣信息Select*fromempWHEREhiredateBETWEEN‘01-1月-1981’AND’31-12月-1981’;判断是否是空:is(NOT)NULL使用词语发可以判断某一个字段上的内容是否是“null”,但是null和数字0以及空字符串是两个概念。查询出所有领取奖金的雇员:select*fromempwherecommisNOTNULL;指定范围的判断:IN操作符IN操作符表示的是指定一个查询的范围,例如,现在又如下的一个查询要求:范例:查询雇员编号是7369,7566,7799的雇员信息Select*fromempwhereempnoIN(7369,7566,7799);NOTIN表示不再指定范围内注意点:关于NOTIN的问题·如果现在使用了IN操作符,查询的范围之中存在了null,不影响查询;Select*fromempwhereempnoIN(7369,7566,null);如果NOTIN中出现了null则表示的就是查询全部数据,对其限定,否则会出现极大漏洞。模糊查询LIKE子句的功能提供了模糊查找的操作。匹配单个字符:_;一个匹配任意多个字符:%;一个,o个,多个范例:要求查询出雇员姓名中第二个字母是A的全部雇员信息Select*FROMempWHEREenameLIKE‘_A%’;LIKE子句可以在任意数据上表示;Select*fromempWHEREenameLIKE‘%1%’ORhiredateLIKE‘%1%’ORsalLIKE‘%1%’;数据的排序(重点)ORDERBY升序(ASC)用户不需指定降序(DESC);用户需要指定由大到小排序范例:要求查询出所有的雇员信息,按照工资由高到低,如果工资相同,则按照雇佣日期由早到晚排序。Select*FROMempORDERBYsalDESC,hiredateASC;ORDERBY子句是写在所有的SQL语句的最后的部分。单行函数:(重点)虽然各个数据库都是支持SQL语句的,但是每一个数据库也有每一个数据库自己支持的操作函数,这些就是单行函数,而如果要想进行数据库开发的话,出了要会使用SQL之外,就是要多学习函数。单行函数分为五类:字符函数,数字函数,日期函数,转换函数,通用函数;字符函数字符函数的功能主要进行字符串数据的操作UPPER(字符串|列):将输入的字符串变为大写返回LOWER(字符串|列):将输入的字符串变为小写返回INITCAP(字符串|列):开头首字母大写;LENGTH(字符串|列);求出字符串的长度;REPLACE(字符串|列):进行替换;SUBSTR(字符串|列,开始点[,结束点]):字符串截取;Oracle数据库中为了用户查询方便,所以专门提供了一个“dual”的虚拟表。转大写selectUPPER(‘hello’)FROMdual;转小写selectLOWER(‘HELLO’)FROMdual;查询长度是5的雇员信息selectenamelength(ename)fromempwherelength(ename)=5;将雇员姓名里面的’A’替换成’_’selectreplace(ename,’A’,’_’)fromemp;字符串的截取由两种语法:语法一:substr(字符串|列,开始点),表示从来时点一直截取到结尾。语法二:substr(字符串|列,开始点,结束点),表示从开始点截取到结束点,截取部分内容;范例:要求截取雇员姓名的后三个字母正常思路:通过长度-2确定开始点Selectename,SUBSTR(ename,length(ename)-2)fromemp;新思路:设置负数,表示从后制定截取位置;Selectename,substr(ename,-3)fromemp;面试题请问substr函数截取的时候下标是从0还是从1开始?在oracle数据库中,substr()函数从0或1开始都是一样的;Substr()也可以设置为负数,表示由后制定截取的开始点;数字函数数字函数一共有三个:Round(数字|列[,保留小数的位数]):四射五入的操作;Trunc(数字|列[,保留小数的位数]):舍弃指定位置的内容,不进位;Mod(数字1,数字2):取余数;验证round()函数Selectround(123.567,2),round(123.567,-1)fromdual;负数表示从整数开始截取。日期函数用SYSDATE来取得当前日期selectsysdatefromdual;日期+数字表示若干天后的日期日期-数字表示若干天前的日期日期-日期表示两个日期间的天数,肯定是大日期-小日期;LAST_DAY(日期):求出指定日期的最后一天NEXT_DAY(日期,‘星期几’)求出下一个指定星期X的日期ADD_MOUNTHS(日期,数字)求出若干月后的日期MONTHS_BETWEEN(日期1,日期2)求出两个日期之间所经历的月份转换函数(核心)现在已经解除到了oracle数据库之中的三种数据:数字(NUMBER),字符串(VARCHAR2),日期(DATE),转换函数主要功能是完成这几种数据间互相转换操作,一共有三种转换函数TO_CHAR(字符串|列,格式字符串):将日期或者是数字转换为字符串显示;TO_DATE(字符串,格式字符串):将字符串变为DATE数据显示TO_NUMBER(字符串):将字符串变为数字显示;TO_CHAR(字符串|列,格式字符串):将日期或者是数字转换为字符串显示.Selectto_char(SYSDATE,’yyyy-mm-dd’),to_char(sysdate,’yyyy’)year,to_char(sysdate,’mm’)months,to_char(sysdate,’dd’)dayfromdual;消除前导0加fm:selectto_char(sysdate,’fmyyyy-mm-dd’)fromdual;时分秒表示:selectto_char(sysdate,’yyyy-mm-ddhh24:mi:ss’)dayfromdual;数字格式化:每一个9表示一位数字的概念,不表示数字9Selectto_char(234324234,’L999,999,999,999,999’)fromdual;字母“L”表示的是“locale”的含义,即:当前的所在的语言环境下的货币符号。TO_DATE(字符串|列,格式字符串):Selectto_date(‘1989-09-08’,’yyyy-mm-dd’)fromdual;一般在数据库更新时候使用TO_NUMBER(字符串1,字符串2)基本不用了通用函数(核心)通用函数有两个:NVL(),DECODE(),这两个函数算是oracle自己的特色函数1,NVL()函数主要是处理null,NVL
本文标题:oracle数据库基础笔记
链接地址:https://www.777doc.com/doc-6151197 .html