Oracle3437604245.docx
DayO1.SQKstructurequery1.anguage)DBdatabaseDD1.(datadefinitionIangUaga)数据定义语言:createtab1.e/a1.terta1.be/dropta1.beco1.umn,datatyx?.widthconstraintDH1.(DataHanipu1.ationIang1.IHge)数据操作语:insert,update,d<?IBte(增,拒,改)rowTC1.anInSde1.ion(事务)contro1.IdngUdge)事务控制语言:事务核<:语句:COanit提交、ro1.1.back回覆DC1.Cgrant授权revoke收回权RoDQ1.(dataquery1.anguage)数据查询语*:se1.ectR(关系型)DRYS数据库产商数据库名版本orac1.eOrac1.e1.Ogorac1.e10.2.0IBMdb2MSSQ1.serverSYBASESEMYSQ1.ORAC1.E_SID数据库对应的真例的名字(即一个具体数推库的名称)创立数据库其实是创立了:数据文件,日志文件,操作文件->SGA进程一>instance与应用程序空值(NU1.1.)在皱入数据时,该字段没有指定值,并且没有空值不等于0空值不等于空格算术表达式中包含空值导致结果为空在算术表达式中包含空值者要用空值转换函数Cod1.RSCe处理2 .空值转换函数coa1.esce函数通用)数据类型可以是数值number、字符character.B期date数箔类型必须匹配NY1.(P1.P2)函数(OraIC专用)nv1.(p1.p2)ifp1.isnu1.1thenreturnp2:e1.sereturnp1.:endif;3 .拼樱运算符II用于连接多个字段的值拼接在一起,特殊符号放在单引号里4 .文字字符串用单引号表示5 .distinct关纯字,去掉也复值从distinct开始到fro<n中所有字段的联合中右重复的去重(注意,是联合起来的重复)distinct后跟多果distinct应用到se1.ect后面所有列,所有列联合是来唯一如果Se1.eC1.后面跟distinct关键字,一定是直接跟在SC1.eCt后?.T而没有任何内容。6 .where的作用用where子句对表里的记录进行过速1. )where子句跟在FROM子句之后2. )where子句后跟条件表达式列名、表达式(比方:sa1.ary*12).量比较运算符文字值3. )where子句后不能跟别名总结:I)Where子旬执行在前,Se1.eCt执行在后,别名不能故在Where子句2)se1.ectsa1.ary*12ann_sa1.froms_e®pwheresa1.ary12>1200se1.ectsa1.ary*12ann_sa1.froms_<»pwhereSa1.ary>1000(能提摘登询效率)SaIary可速支索引.索引的目的,提商查询效率3) where子句能不用表达式尽量不用表达式:4) WhCrC子句中的列为字符类理字符串必而用单引号括起来字符串是大小写批.感6) 比较和逻辑运算符D逐辑比较运等符=>>=<V=2)SQ1.比较运算符betweenand:表示一个范图.是闭区间orin表示一个靠合,是离散值,含义为等于其中任常一个值,等价于:=anyin(X,Y,Z>:表示符合X.Y.Z的。等价于dept=any(X,Y,Z),表示等于任意一个7. 1.IKE运竟符在字符串比较中,可用Iike和通配符进行查找通比符种类:%与_%表示O或S个字符_表示任意单个字符8. isnu1.1.运算符isnu1.1.是到新是否为空测试NV1.1.值需要用ISNU1.1.运算符,不能使用=或V>来测试一列是IN(或者关系)NU1.1.不能用等于(=和不等于<<>>跟任何值比较,包括它自身。所以否有空值9. isnotnu1.1.运算符表示不为空18.运算符的否认形式里辑比较运算符O!="=SQ1.比较运算符NOTBETIEENANDNOTIN<=>V>A1.1.(并旦关系,注意别让NU1.1.在NoTIN里出现)NOT1.IKENOTISNU1.1.11.0RDERBY子句用ORDERBY子句杏询出来的结果集进行排序ASC:升序,我认DESC:降序ORDERBYSEUjCT语句P的最后一个孑句ORDERBY执行于SE1.ECT语句之后ORDERBY之后可以跟字戏名,别名,字段NE号,表达式(尽量不用)NU1.1.t1.I在排序中的显显升序显示在最后除序显示在前?(Nu1.1.值表示无穷大按多列进行排序ORDERBY后面的列可以不出现在SE1.ECT后而Day02一、SQ1.语数的两种类型单行函致字符类型(character)效值(number)日期(date)转换多行函数(配函做)1.单行函数where后跟条件表达式.还可以收隼行函蚊表达式或函数的写法导致索引用不了大小写转换函数1.OWERO转小写UPPERO转大写一般用于insert得俗中,便于以后操作(查询方便,没有大小写限制参数为列名或常量.谢常量,f1.fromdua1.(系统表,只有一条记录)IMTCAPO首字线大写ConCato拼接se1.ectconcat(,He,.,Ho','Wor1.(T)"He1.1.o"fromdua1.:求于申:substr('string',1.3)叁数:字符,起始位,供取个数求七度:1.ength(string)叁或:字耕事se1.ectsubstr(firstname.Iength(first_name>-1,2)frees_emp;左片齐:Ipad(String,,返回长度,'*不够就科*符号),位数不够的,左边扑指定字符se1.ectdeptno,1.pad(deptno.5.'W,)fro三dept;右对齐rpa<1.Ose1.ectdeptno.rpad(deptno,5,!")fromdept;数值函数四台五入round(效,精度)如round(45.723,2)ft45.72round(45.723.-1)得50round(45.723.D得46Mtrunc(ft,起始横取点)¼>round(45.723,2)得45.72round(45.723.-1)45T表示保存到十位敷,0保存到个位数,1保存一位小数,依此类推se1.ectround(44.723.-1)fromdua1.;40se1.ectround(44.723)freedua1.:45se1.ectround(44.323)froadua1.:44se1.ectround(44.323.1)fromdua1.;44.3se1.ectround(44.373.1)fromdua1.:41.4系统自动调用的函数(隐式调用,orac1.e的自动构换函数一敷都越向于字符*转数值)toju三ber(数字字符),返回教值(注意一定要是数字字符)se1.ecttonumber('12,)*10fromdua1.:120se1.ccifromtestwherec1.=10;se1.ect*fromtestwheretonu三ber(c1.)10;这语句会导致索弓I用不了,所以表达式一定要做到数据类型匹配,to_nuaber()se1.ecttonumberC!$'.'xx,)fromdua1.:('xx'代表两位十六迸制)得171to.char(ft,格式)函数9:代表数字位se1.ectto_char(sa1.ary.'J9,)from$_cmp;0:当定义宽度大于实际低宽度时,0会被强制显示在前面,以补齐住敷se1.ecttochar(sa1.ary.,000.000.00.000')fromstop;se1.ectto_Char(Sa1.ary.'909,099,999.990')froms_emp:se1.ectto_char(235,'900.00.00,)fro三s_emp:$:代表美元的北币符号se1.ecttochar(sa1.ary.'599.999.99')fro三s_emp;1.:本地货币符号se1.ectto-cbar(sa1.ary,1.99.999.99')fros_emp;(跟环境变量有关)设置中文BHHE1.1.N1.S_1.ANG=SIMP1.IFIEDCHINESE_CmNA.ZHS1.6GBK'exportN1.S1.ANG设置英文N1.S_1.ANG=RMERICAN.AMERICA.US7ASCIIexportN1.S_1.ANG直接在SQ1.环境下a1.tersessionsetn1.s_1.anguage=,simp1.ifiedChinese':a1.tersessionsetn1.s_1.anguage=AMER1.CAN_AMERICA.US7ASC1I;CSHE1.1.SetenYN1.S_IANC=SIMP1.IFIEDCHINESE_CIIINA.ZHSI6GK,SetenYN1.S_1.ANG=AMERICAN.AMERICA.US7ASCII.如查显示位数缺乏(定又宽度小于实际长度),用#'代替二、多表查询交叉连接.内连接.外连接内逐援原理(重要知识点,查看另一文件Sq1.notes.Ixt>1 .交叉连接corss:实际上是芮个表中的记录的笛卡尔枳(即苒张表组合)列出每个员工在哪个部门se1.ecte.first11aae.c.deptid.d.id.d.namefromSempecrossjoinsdeptd;(300条记录,s<三p(25)*s-dept(I2)=300)问题:每个员工都在好多部门解决方案,用:表1join表2On两个表关联字段匹配表达式se1.ecte.first_name.e.deptid.d.id.d.naaefromseapejoins_deptdone.dept_id=d.id:另一例题se1.ectd.id.d.name,r.namefroms_deptdinnerjoins_regionrond.region_id=r.id;2 .内控接等值连接(join):西联表中描城共同属性的列.常见形式为你米的主键和子表的外键相等.非等值连接(join):可以用bet腕enand这样的非等值运算符将两张表中的列写成一个表达式,所谓表之间的关系,实际指表中的行(记录)之间的关系,该关系通过将来中的列写成表达式来表达。自建接(se1.fjoin):同一张表的列之间的关系实际反映的是同一张表的行记录)之间的关系;通过给我起别名将同一眠表的列之间的关系转换成不同表的列之间的关系内连接中包含,here或and时,都是先连楼后过戏原理:t1.表和12表做内旌接.建接条件为Ont1.,c1.=12.c2.假设t1.表做更动表,t2表做匹配表,记录的匹龙过程如下:1.从t1.表中读取策一条记录r1.,若它的CItft为12,根据该值到t2表中丧我匹配的记录