网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL学习脚本

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员为广大网友收集整理了,SQL学习脚本,希望对大家有所帮助!


    selectjobfromemp;
    --distinct剔除重复列
    selectdistinctjobfromemp;
    --在消除重复列时,如果要同时查询多列
    --则必须保证所有都重复才能消除
    selectdistinctempno,jobfromemp;
    --orcale中的链接字符串操作用"||"表示。如果要加入一些显示信息的话,
    --所有的其他固定信息要使用"'"括起来
    select'编号是:'||empno||'的雇员','是:'||ename,'工作是:'||jobfromemp;
    --在程序中支持+、-、*、/的语句
    --代码中sal*12的意义不明确,所以最好给这个运算结果起个别名,但
    --在起别名的时候一定要回避中文
    selectename,sal*12incomefromemp;
    --限定查询
    select*fromempwheresal>1500;
    --不为空的表示isnotnull,为空的表示是isnull
    select*fromempwherecommisnotnull;
    select*fromempwherecommisnull;
    select*fromempwheresal>1500andcommisnotnull;
    --在程序中,通过括号表示一组的条件
    select*fromempwherenot(sal>1500andcommisnotnull);
    select*fromempwheresal>1500orcommisnotnull;
    select*fromempwheresal>1500andsal<3000;
    select*fromempwheresalbetween1500and3000;
    --日期表示的时候要加"'",betweenand支持日期
    select*fromempwherehiredatebetweento_date('1981-1-1','yy-mm-dd')andto_date('1981-12-31','yy-mm-dd');
    --oracle对大小写敏感
    select*fromempwhereename='SMITH';
    --指定了范围,可以使用in操作符
    select*fromempwhereempnoin(7369,7499,7521);
    --若不在此范围内,可以使用notin操作符
    select*fromempwhereempnonotin(7369,7499,7521);
    --in操作符还可以用在字符串的信息上
    select*fromempwhereenamein('SMITH','ALLEN','WARD');
    --如果在查询范围内加入额外信息,不影响程序执行
    select*fromempwhereenamein('SMITH','ALLEN','WARD','asdfasdf');
    --在like中使用两种通配符,"%":可以匹配任意长度的内容,"_":可以匹配一个长度的内容
    select*fromempwhereenamelike'_M%';
    --使用like时,如果没有指定关键字,则查询全部
    select*fromempwhereenamelike'_%';
    --like可以在任何地方使用
    select*fromempwherehiredatelike'%81%';
    select*fromempwheresallike'%5%';
    --在oracle中,不等号有两种表现形式"<>"、"!="
    select*fromempwhereempno!=7369;
    --使用orderby对查询结果进行排序(升asc,降desc),默认为asc
    select*fromemporderbysalasc;
    select*fromemporderbysaldesc;
    --排序放在整个SQL语句的最后执行
    select*fromemporderbysaldesc,hiredateasc;
    --单行函数
    --1.字符函数
    selectupper('smith')fromdual;
    select*fromempwhereename=upper('smith');
    selectlower('HELLOWORLD')fromdual;
    selectinitcap('HELLOWORLD')fromdual;
    selectinitcap(ename)fromemp;
    --字符串除了使用"||"连接之外,还可以使用concat()函数进行连接操作
    selectconcat('hello','world')fromdua
    l;
    --字符串截取,字符串长度,字符串替换
    --在oracle函数中,substr()函数的截取点是从0还是从1开始的,
    --从0和从1开始效果是一样的,oracle比较智能
    selectsubstr('hello',1,3)字符串截取,
    length('hello')字符串长度,
    replace('hello','o','l')字符串替换
    fromdual;
    
    --显示所有雇员和后的三个字符
    selectename,substr(ename,length(ename)-2)fromemp;
    --substr()函数可以采用倒着截取的方式,只要输入的位置是负数,就可以倒着进行
    selectename,substr(ename,-3,3)fromemp;
    --2.数值函数
    --四舍五入:round();截断小数位trunc();取模mod()
    selectround(789.536)fromdual;
    --保留两位小数
    selectround(789.536,2)fromdual;
    --直接对整数进行四舍五入
    selectround(789.536,-2)fromdual;
    --trunc不保留小数,也不进行四舍五入
    selecttrunc(789.536)fromdual;
    selecttrunc(789.536,2)fromdual;
    selecttrunc(789.536,-2)fromdual;
    --去模
    selectmod(10,3)fromdual;
    --3.日期函数
    --日期-数字=日期;日期+数字=日期;日期-日期=数字(天数);
    --显示雇员进入公司的星期数
    selectsysdatefromdual;
    selectempno,ename,round((sysdate-hiredate)/7)fromemp;
    --months_between():求出给定日期范围的月数
    -
    --last_day():求出给定日期的最后一天日期
    selectempno,ename,months_between(sysdate,hiredate)fromemp;
    selectadd_months(sysdate,4)fromdual;
    selectnext_day(sysdate,'星期一')fromdual;
    selectlast_day(sysdate)fromdual;
    --4.转换函数
    --to_char:转换成字符串;
    --to_number:转换成数字;
    --to_date:转换成日期
    --利用to_char()函数进行拆分,拆分的时候必须指定拆分的通配符:
    --年:y,年是四位数字,所以用yyyy表示
    --月:m,月是两位数字,所以使用mm表示
    --日:d,日是两位数字,所以使用dd表示
    selectempno,ename,to_char(hiredate,'yyyy')year,
    to_char(hiredate,'mm')month,to_char(hiredate,'dd')day
    fromemp;
    --使用to_char()进行日期显示的转换功能
    selectename,to_char(hiredate,'yyyy-mm-dd')fromemp;
    --fm可以去掉前导0
    selectename,to_char(hiredate,'fmyyyy-mm-dd')fromemp;
    --可以使用to_char()进行数字格式化
    selectename,to_char(sal,'99,999')fromemp;
    --希望数字可以明确的表示区域,可以使用以下两种符号:
    --$表示美元;LLocal的缩写,一本地语言进行金额显示
    selectename,to_char(sal,'$99,999')fromemp;
    selectename,to_char(sal,'L99,999')fromemp;
    --to_number
    selectto_number('123')+to_number('123')fromdual;
    --to_date
    selectto_date('2010-12-31','yyyy-mm-dd')fromdual;
    --通用函数
    selectempno,ename,(sal+comm)*12fromemp;
    --nvl函数,可以将一个指定的null值变成指定的内容
    --如果需要进行计算的时候,对于null必须使用nvl()函数进行一个转换的操作
    selectempno,ename,nvl(co
    mm,0),(sal+nvl(comm,0))*12fromemp;
    --decode()函数
    selectdecode(1,1,'内容是1',2,'内容是2',3,'内容时3')fromdual;
    selectempno雇员编号,ename雇员,hiredate雇佣日期,
    decode(job,'CLERK','业务员','SALESMAN','销售人员','MANAGER','经理'
    ,'ANALYST','分析员','PRESIDENT','总裁')职位fromemp;
    
    
    --多表查询
    select*fromemp,dept;
    selectcount(*)fromemp;
    selectcount(*)fromdept;
    select*fromemp;
    select*fromdept;
    select*fromempe,deptdwheree.deptno=d.deptno;
    selecte.empno,e.ename,d.deptno,d.dname,d.loc
    fromempe,deptdwheree.deptno=d.deptno;
    selecte.ename,e.job,m.ename,d.dname
    fromempe,empm,deptdwheree.mgr=m.empnoande.deptno=d.deptno;
    select*fromsalgrade;
    selecte.ename,e.sal,d.dname,decode(s.grade,1,'第五等工资',2,'第四等工资',3,'第三等工资',4,'第二等工资',5,'第一等工资')
    ,m.ename,m.sal,decode(ms.grade,1,'第五等工资',2,'第四等工资',3,'第三等工资',4,'第二等工资',5,'第一等工资')
    fromempe,deptd,salgrades,empm,salgradems
    wheree.deptno=d.deptnoande.salbetweens.losalands.hisalande.mgr=m.empno
    andm.salbetweenms.losalandms.hisal;
    --左右连接
    selecte.empno,e.ename,d.deptno,d.dname,d.loc
    --左连接,默认左连接
    fromempe,deptdwheree.deptno=d.deptno(+);
    --右连接
    selecte.empno,e.ename,d.deptno,d.dname,d.loc
    fromempe,deptdwheree.deptno(+)=d.deptno;
    --组函数和及分组统计
    selectmin(sal)fromemp;
    selectmax(sal)fromemp;
    selectsum(sal)fromempwheredeptno=20;
    selectavg(sal)fromemp;
    --分组统计
    selectdeptno,count(deptno)fromemp
    groupbydeptno;
    
    selectdeptno,avg(sal)fromemp
    groupbydeptno;
    1.selectdeptno,count(deptno)fromemp;
    2.selectdeptno,count(deptno),empnofromemp
    groupbydeptno;
    --以上代码不能正确执行,是因为:
    --1,如果程序中使用了分组函数,则有两种可以使用的情况:
    --:程序中存在了groupby,并指定了分组字段,这样可以将分组字段一起查询出来
    --:如果不使用分组的话,则只能单独的使用分组函数
    --2.在使用分组函数的时候,不能出现分组函数和分组字段之外的字段。
    selectd.dname,count(e.empno)
    fromdeptd,empe
    whered.deptno=e.deptno
    groupbyd.dname;
    --分组函数不允许在where语句之中出现,如果假设要指定分组的条件,
    --则只能通过第二种条件的指令:having
    selecte.deptno,avg(e.sal)
    fromempe
    groupbye.deptnohavingavg(sal)>2000;
    selectmax(avg(sal))fromemp
    groupbydeptno;
    --分组的简单原则
    --只要一列上存在重复的内容才有可能考虑到分组
    --注意
    --分组函数可以嵌套使用,但是在组函数嵌套使用的时候不能再出现分组字段的查询语句
    --子查询
    select*fromempwheresal>
    (selectsalfromempwhereempno=7654);
    --所有的子查
    询必须在"()"中编写代码
    --子查询操作分为以下三类:
    --1.单列子查询,返回的结果是一列的一个内容
    --2.单行子查询,返回多个列,有可能是一条完整的记录
    --3.多行子查询,返回多条记录
    select*fromempwheresal>
    (selectsalfromempwhereempno=7654)andjob=(selectjobfromempwhereempno=7788);
    select*fromempwheresal=(selectmin(sal)fromemp);
    selectd.dname,ed.c,ed.a,e.ename
    fromdeptd,
    (selectdeptno,count(empno)c,avg(sal)a,min(sal)min
    fromemp
    groupbydeptno)ed,empe
    where
    d.deptno=ed.deptnoande.sal=ed.min;
    --在子查询中,存在以下三种查询的操作符号
    --inanyall
    --in指定一个查询范围
    select*fromempwheresalin(selectmin(sal)fromempgroupbydeptno);
    --any操作:=any与in的操作符功能一样
    select*fromempwheresal=any(selectmin(sal)fromempgroupbydeptno);
    -->any,比里面的最小值要大
    select*fromempwheresal>any(selectmin(sal)fromempgroupbydeptno);
    --    select*fromempwheresal    --all操作
    -->all,比里面的最大值要大
    select*fromempwheresal>all(selectmin(sal)fromempgroupbydeptno);
    --    select*fromempwheresal    
    --多列子查询
    select*fromempwhere(sal,nvl(comm,-1))in(selectsal,nvl(comm,-1)fromempwheredeptno=20);
    
  • 上一篇资讯: SQL学习语句
  • 下一篇资讯: SQL学习笔记
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师