MLDN-魔乐科技李兴华Oracle教程学习笔记.docx

上传人:小飞机 文档编号:1663117 上传时间:2022-12-13 格式:DOCX 页数:22 大小:161.40KB
返回 下载 相关 举报
MLDN-魔乐科技李兴华Oracle教程学习笔记.docx_第1页
第1页 / 共22页
MLDN-魔乐科技李兴华Oracle教程学习笔记.docx_第2页
第2页 / 共22页
MLDN-魔乐科技李兴华Oracle教程学习笔记.docx_第3页
第3页 / 共22页
MLDN-魔乐科技李兴华Oracle教程学习笔记.docx_第4页
第4页 / 共22页
MLDN-魔乐科技李兴华Oracle教程学习笔记.docx_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《MLDN-魔乐科技李兴华Oracle教程学习笔记.docx》由会员分享,可在线阅读,更多相关《MLDN-魔乐科技李兴华Oracle教程学习笔记.docx(22页珍藏版)》请在三一办公上搜索。

1、NO.数据类型关键字描述1字符串Varchar2(n)N表示该字符串所能储存的最大长度;2整数Number(n)表示最多为n位的整数,有时候也可以用int代替;3小数Number(n,m)N为小数,n-m为整数位,有时也可以使用float代替;4日期Date存放日期和时间5大文本Clob可以存储海量文字,最大4G;6大对象Blob存放二进制数据,例如电影图片等;Oracle的数据类型:加粗字体(ctrl+B)使用ctrl+/可以快速的弹出一个虚拟符号键盘:(alt + 9999)如果只想复制表的结构到另一张表,而不复制任何的数据,则可以使用一个永远查询不到结果的查询来执行;Create tab

2、le empnull as select * from emp where 1=2;为表重命名:在oracle数据库中,所有的数据实际上都是通过数据字典保存的,例如:select * from tab;以上就是一个数据字典,而在oracle数据库中,提供了三种类型的数据字典,最常用的是dbo、user、所以下面查询一个user_tables数据字典;Select * from user_tables;也就是说oracle中的所有数据都是按照文件保存的,那么所有的内容都会在数据字典中注册,既然这样,修改表名称就相当于修改一条数据而已:Rename 旧的表名称 to 新的表名称;如果希望彻底释放掉

3、一张表所占用的全部资源(表空间、索引等等)就可以使用截断表的语法,语法如下:Truncate table 表名称;在oracle10G中,为了防止用户的误删除表的操作,专门提供了回收站的功能,用户所删除的表默认情况下回在一个回收站之中保存,而用户也可以通过回收站进行表的恢复,所以此技术成为闪回(flashback);可以通过如下名称查看回收站中的表:Show RECYCLEBIN;ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME- - - -MEMBER BIN$r34Nm9OVRxqjy8Jwh1KWJw=$0 TABLE 2012-01

4、-25:10:28:51可以通过如下的命令恢复别删除的表:FLASHBACK TABLE 表名称 TO BEFORE DROP;例如恢复上面的member表:Flashback table member TO before drop;当然呢,也可以直接删除掉回收站中的而一些数据表,语法如下:Purage table 表名称;比如删除回收站中的member表:Purge table member;SQL purge table member;表已清除。也可以清空回收站;PURGE RECYCLEBIN;如果希望删除的时候不进入回收站,则可以加一个purge关键字;Drop table myemp

5、 purge;表结构的修改:添加列:Alter table add(列1 类型)等和创建类似;如果希望修改已经存在的列:Alter table modify ();和创建表类似;但是表结构能不修改就不修改,因为世界上性能最好的DB2是不允许修改表结构的;如果遇到要修改表结构的时候,把表删除,然后重新建立;唯一约束: UNIQUEUnique对于插入多行为null的值的处理理解为不重复,因为这里不知道它的具体值;主键约束:PRIMARY KEY;主键约束=非空约束+唯一约束;设置为主键之后,不允许为空,而且不允许重复;作为数据的唯一标记出现;从正常的开发而言,一张表一般只设置一个主键,但是从SQ

6、L语法来看,一张表可以设置多个主键,称为复合主键:Create table member(Mid number,Name varchar2(50) not null,Constraint pk_mid_name primary key(mid,name);检查约束:CheckCreate table member(Mid number,Name varchar2(50) not null,Sex varchar2(10) not null,Age number(3) ,Constraint pk_mid_name primary key(mid),Constraint ck_sex check

7、 (sex in(男,女,中),Constraint ck_age check (age between 0 and 200);Drop table member;Drop table book;Create table member(mid number,name varchar2(50) not null,Constraint pl_mid primary key(mid);Create table book(bid number,title varchar2(50) not null,mid number,Constraint pk_bid primary key(bid),Constr

8、aint fk_mid foreign key(mid) references member(mid);笔记1部分:1、使用host 可以引用windows系统的copy命令等:Host copy d:demo.sql d:hello.txt2、scott用户的表结构:可以使用以下命令查看所有表:Select * from tab;可以使用以下命令查看表结构:Desc 表名称;雇员表(以下)No.名称类型描述1EMPNONUMBER(4)雇员的编号,由四位数字组成2ENAMEVARCHAR2(10)雇员的姓名,由十位字符组成3JOBVARCHAR2(9)雇员的职位4MGRNUMBER(4)雇员

9、对应的领导编号,领导也是雇员5HIREDATEDATE雇员的雇佣日期6SALNUMBER(7,2)基本工资,其中两位小数,五位整数7COMMNUMBER(7,2)奖金,佣金(销售人员独有的)8DEPTNONUMBER(2)雇员所在的部门编号以下表存放工资数据,基本上用不到;工资登记表:NO.名称类型描述1GRADENUMBER工资的等级2LOSALNUMBER此登记的最低工资3HISALNUMBER此等级的最高工资SQL select 雇员编号是:|empno|的雇员姓名是:|ename|,基本工资是:|sal|,职位是|job|!雇员信息 from emp;雇员信息-雇员编号是:7369的雇

10、员姓名是:SMITH,基本工资是:800,职位是CLERK!雇员编号是:7499的雇员姓名是:ALLEN,基本工资是:1600,职位是SALESMAN!雇员编号是:7521的雇员姓名是:WARD,基本工资是:1250,职位是SALESMAN!雇员编号是:7566的雇员姓名是:JONES,基本工资是:2975,职位是MANAGER!雇员编号是:7654的雇员姓名是:MARTIN,基本工资是:1250,职位是SALESMAN!雇员编号是:7698的雇员姓名是:BLAKE,基本工资是:2850,职位是MANAGER!雇员编号是:7782的雇员姓名是:CLARK,基本工资是:2450,职位是MANAG

11、ER!雇员编号是:7788的雇员姓名是:SCOTT,基本工资是:3000,职位是ANALYST!雇员编号是:7839的雇员姓名是:KING,基本工资是:5000,职位是PRESIDENT!雇员编号是:7844的雇员姓名是:TURNER,基本工资是:1500,职位是SALESMAN!雇员编号是:7876的雇员姓名是:ADAMS,基本工资是:1100,职位是CLERK!在oracle中所有的数据都是区分大小写的;大小写错误可能查询不出相应的数据;以下三个查询语句的结构是相同的:Select * from emp where job!=CLERK;Select * from emp where jo

12、bCLERK;Select * from emp where not job=CLERK -这三种语法都可以在SQL Server中使用;对between and 求反:Select * from emp where not sal between 1500 and 3000Between and 不只是对数据,对日期也一样进行操作;Select * from emp where hiredate between 01-1月-1981 and 31-12月-81Set linesize 300;Set pagesize 200; 对于like操作符,不止可以用于字符串型的数据,而且可以用于其他

13、类型的数据; Order by子句是写在所有语句最后的子句; INITCAP函数,将字符串首字母变为大写;而所有剩余的字母会变成小写; Oracle数据库中为了查询的方便,专门提供了一个dual的虚拟表,这样from后边便可以跟这个表名进行查询; Select * from emp where ename=UPPER(&hh);中的单引号中间的字符表示一个变量,下一步系统会让用户输入该变量的值,然后系统进行查询:结果图如下: SQL select * from emp where ename=upper(&hh); 输入 hh 的值: smith 原值 1: select * from emp

14、 where ename=upper(&hh) 新值 1: select * from emp where ename=upper(smith)EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO- - - - - - - -7369 SMITH CLERK 7902 17-12月-80 800 20 字符串操作有两种方式:语法一:substr(字符串,开始点)表示截取该字符串从开始点一直到结尾的部分;语法二:substr(字符串,开始点,结束点)截取字符串倒数三个字符:除了可以用length(字符串)-2以外,还可以使用负数表示:SQL select su

15、bstr(ename,-3) from emp;SUBSTR-ITHLENARDNESTINAKEARKOTTINGNERAMS面试题:请问substr截取的时候下标是从0还是从1开始?答:从0和1都一样;数字函数:Round(数字|列,保留小数的位数),表示四舍五入的操作;保留小数位数如果不写,则表示不保留小数;Trunc(数字|列,保留小数的位数),舍弃指定位置的内容;Mod(数字1,数字2)取模,取余数;SQL select round(903.53567),round(-903.53567),round(903.53567,-1) from dual;ROUND(903.53567)

16、ROUND(-903.53567) ROUND(903.53567,-1)- - - 904 -904 900SQL select trunc(903.5325),trunc(-903.5367),trunc(903.53567,2),trunc(903.53567,-1) from dual;TRUNC(903.5325) TRUNC(-903.5367) TRUNC(903.53567,2) TRUNC(903.53567,-1)- - - - 903 -903 903.53 900可以使用sysdate来取得当前日期的值;Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函

17、数,其他函数)关键词: Oracle函数 字符串函数 数学函数 日期函数 逻辑运算函数 SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A A ZERO SPACE - - - - 65 97 48 32 2.CHR 给出整数,返回对应的字符; SQL select chr(54740) zhao,chr(65) chr65 from dual; ZH C - - 赵 A 3.CONCAT 连接两个字符串; SQL selec

18、t concat(010-,88888888)|转23 高乾竞电话 from dual; 高乾竞电话 - 010-88888888转23 4.INITCAP 返回字符串并将字符串的第一个字母变为大写; SQL select initcap(smith) upp from dual; UPP - Smith 5.INSTR(C1,C2,I,J) 在一个字符串中搜索指定的字符,返回发现指定的字符的位置; C1 被搜索的字符串 C2 希望搜索的字符串 I 搜索的开始位置,默认为1 J 出现的位置,默认为1 SQL select instr(oracle traning,ra,1,2) instrin

19、g from dual; INSTRING - 9 6.LENGTH 返回字符串的长度; SQL select name,length(name),addr,length(addr),sal,length(to_char(sal) from gao.nchar_tst; NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL) - - - - - - 高乾竞 3 北京市海锭区 6 9999.99 7 7.LOWER 返回字符串,并将所有的字符小写 SQL select lower(AaBbCcDd)AaBbCcDd from dua

20、l; AABBCCDD - aabbccdd 8.UPPER 返回字符串,并将所有的字符大写 SQL select upper(AaBbCcDd) upper from dual; UPPER - AABBCCDD 9.RPAD和LPAD(粘贴字符) RPAD 在列的右边粘贴字符 LPAD 在列的左边粘贴字符 SQL select lpad(rpad(gao,10,*),17,*)from dual; LPAD(RPAD(GAO,1 - *gao* 不够字符则用*来填满 10.LTRIM和RTRIM LTRIM 删除左边出现的字符串 RTRIM 删除右边出现的字符串 SQL select lt

21、rim(rtrim( gao qian jing , ), ) from dual; LTRIM(RTRIM( - gao qian jing 11.SUBSTR(string,start,count) 取子字符串,从start开始,取count个 SQL select substr(13088888888,3,8) from dual; SUBSTR( - 08888888 12.REPLACE(string,s1,s2) string 希望被替换的字符或变量 s1 被替换的字符串 s2 要替换的字符串 SQL select replace(he love you,he,i) from du

22、al; REPLACE(H - i love you 13.SOUNDEX 返回一个与给定的字符串读音相同的字符串 SQL create table table1(xm varchar(8); SQL insert into table1 values(weather); SQL insert into table1 values(wether); SQL insert into table1 values(gao); SQL select xm from table1 where soundex(xm)=soundex(weather); XM - weather wether 14.TRI

23、M(s from string) LEADING 剪掉前面的字符 TRAILING 剪掉后面的字符 如果不指定,默认为空格符 15.ABS 返回指定值的绝对值 SQL select abs(100),abs(-100) from dual; ABS(100) ABS(-100) - - 100 100 16.ACOS 给出反余弦的值 SQL select acos(-1) from dual; ACOS(-1) - 3.1415927 17.ASIN 给出反正弦的值 SQL select asin(0.5) from dual; ASIN(0.5) - .52359878 18.ATAN 返回

24、一个数字的反正切值 SQL select atan(1) from dual; ATAN(1) - .78539816 19.CEIL 返回大于或等于给出数字的最小整数 SQL select ceil(3.1415927) from dual; CEIL(3.1415927) - 4 20.COS 返回一个给定数字的余弦 SQL select cos(-3.1415927) from dual; COS(-3.1415927) - -121.COSH 返回一个数字反余弦值 SQL select cosh(20) from dual; COSH(20) - 242582598 22.EXP 返回

25、一个数字e的n次方根 SQL select exp(2),exp(1) from dual; EXP(2) EXP(1) - - 7.3890561 2.7182818 23.FLOOR 对给定的数字取整数 SQL select floor(2345.67) from dual; FLOOR(2345.67) - 2345 24.LN 返回一个数字的对数值 SQL select ln(1),ln(2),ln(2.7182818) from dual; LN(1) LN(2) LN(2.7182818) - - - 0 .69314718 .99999999 25.LOG(n1,n2) 返回一个

26、以n1为底n2的对数 SQL select log(2,1),log(2,4) from dual; LOG(2,1) LOG(2,4) - - 0 2 26.MOD(n1,n2) 返回一个n1除以n2的余数 SQL select mod(10,3),mod(3,3),mod(2,3) from dual; MOD(10,3) MOD(3,3) MOD(2,3) - - - 1 0 2 27.POWER 返回n1的n2次方根 SQL select power(2,10),power(3,3) from dual; POWER(2,10) POWER(3,3) - - 1024 27 28.RO

27、UND和TRUNC 按照指定的精度进行舍入 SQL select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual; ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5) - - - - 56 -55 55 -55 29.SIGN 取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 SQL select sign(123),sign(-100),sign(0) from dual; SIGN(123) SIGN(-100) SIGN(0) - - - 1 -1 0 30.

28、SIN 返回一个数字的正弦值 SQL select sin(1.57079) from dual; SIN(1.57079) - 1 31.SIGH 返回双曲正弦的值 SQL select sin(20),sinh(20) from dual; SIN(20) SINH(20) - - .91294525 242582598 32.SQRT 返回数字n的根 SQL select sqrt(64),sqrt(10) from dual; SQRT(64) SQRT(10) - - 8 3.1622777 33.TAN 返回数字的正切值 SQL select tan(20),tan(10) fro

29、m dual; TAN(20) TAN(10) - - 2.2371609 .64836083 34.TANH 返回数字n的双曲正切值 SQL select tanh(20),tan(20) from dual; TANH(20) TAN(20) - - 1 2.2371609 35.TRUNC 按照指定的精度截取一个数 SQL select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual; TRUNC1 TRUNC(124.16666,2) - - 100 124.16 36.ADD_MONTHS 增加或减去月份 SQL sele

30、ct to_char(add_months(to_date(199912,yyyymm),2),yyyymm) from dual; TO_CHA - 200002 SQL select to_char(add_months(to_date(199912,yyyymm),-2),yyyymm) from dual; TO_CHA - 199910 37.LAST_DAY 返回日期的最后一天 SQL select to_char(sysdate,yyyy.mm.dd),to_char(sysdate)+1,yyyy.mm.dd) from dual; TO_CHAR(SY TO_CHAR(S -

31、 - 2004.05.09 2004.05.10 SQL select last_day(sysdate) from dual; LAST_DAY(S - 31-5月 -04 38.MONTHS_BETWEEN(date2,date1) 给出date2-date1的月份 SQL select months_between(19-12月-1999,19-3月-1999) mon_between from dual; MON_BETWEEN - 9 SQLselectmonths_between(to_date(2000.05.20,yyyy.mm.dd),to_date(2005.05.20,y

32、yyy.mm.dd) mon_betw from dual; MON_BETW - -60 39.NEW_TIME(date,this,that) 给出在this时区=other时区的日期和时间 SQL select to_char(sysdate,yyyy.mm.dd hh24:mi:ss) bj_time,to_char(new_time 2 (sysdate,PDT,GMT),yyyy.mm.dd hh24:mi:ss) los_angles from dual; BJ_TIME LOS_ANGLES - - 2004.05.09 11:05:32 2004.05.09 18:05:32

33、 40.NEXT_DAY(date,day) 给出日期date和星期x之后计算下一个星期的日期 SQL select next_day(18-5月-2001,星期五) next_day from dual; NEXT_DAY - 25-5月 -0141.SYSDATE 用来得到系统的当前日期 SQL select to_char(sysdate,dd-mm-yyyy day) from dual; TO_CHAR(SYSDATE, - 09-05-2004 星期日 trunc(date,fmt)按照给出的要求将日期截断,如果fmt=mi表示保留分,截断秒 SQL select to_char(

34、trunc(sysdate,hh),yyyy.mm.dd hh24:mi:ss) hh, 2 to_char(trunc(sysdate,mi),yyyy.mm.dd hh24:mi:ss) hhmm from dual; HH HHMM - - 2004.05.09 11:00:00 2004.05.09 11:17:00 42.CHARTOROWID 将字符数据类型转换为ROWID类型 SQL select rowid,rowidtochar(rowid),ename from scott.emp; ROWID ROWIDTOCHAR(ROWID) ENAME - - - AAAAfKAA

35、CAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES 43.CONVERT(c,dset,sset) 将源字符串 sset从一个语言字符集转换到另一个目的dset字符集 SQL select convert(strutz,we8hp,f7dec) conversion from dual; conver - strut

36、z 44.HEXTORAW 将一个十六进制构成的字符串转换为二进制 45.RAWTOHEXT 将一个二进制构成的字符串转换为十六进制 46.ROWIDTOCHAR 将ROWID数据类型转换为字符类型 47.TO_CHAR(date,format) SQL select to_char(sysdate,yyyy/mm/dd hh24:mi:ss) from dual; TO_CHAR(SYSDATE,YY - 2004/05/09 21:14:41 48.TO_DATE(string,format) 将字符串转化为ORACLE中的一个日期 49.TO_MULTI_BYTE 将字符串中的单字节字符

37、转化为多字节字符 SQL select to_multi_byte(高) from dual; TO - 高 50.TO_NUMBER 将给出的字符转换为数字 SQL select to_number(1999) year from dual; YEAR - 1999 51.BFILENAME(dir,file) 指定一个外部二进制文件 SQLinsert into file_tb1 values(bfilename(lob_dir1,image1.gif); 52.CONVERT(x,desc,source) 将x字段或变量的源source转换为desc SQL select sid,ser

38、ial#,username,decode(command, 2 0,none, 3 2,insert, 4 3, 5 select, 6 6,update, 7 7,delete, 8 8,drop, 9 other) cmd from v$session where type!=background; SID SERIAL# USERNAME CMD - - - - 1 1 none 2 1 none 3 1 none 4 1 none 5 1 none 6 1 none 7 1275 none 8 1275 none 9 20 GAO select 10 40 GAO none 53.DU

39、MP(s,fmt,start,length) DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值 SQL col global_name for a30 SQL col dump_string for a50 SQL set lin 200 SQL select global_name,dump(global_name,1017,8,5) dump_string from global_name; GLOBAL_NAME DUMP_STRING - - ORACLE.WORLD Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D 54.EMPTY_BLOB()和EMPTY_CLOB() 这两个函数都是用来对大数据类型字段进行初始化操作的函数 55.GREATEST 返回一组表达式中的最大值,即比较字符的编码大小. SQL select greatest(AA,AB,AC) from dual; GR - AC SQL select greatest(啊,安,天) from dual; GR - 天 56.LEAST 返回一组表达式中的最小值 SQL select least(啊

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号