初学Oracle_单条selcet语句
来源:互联网 发布:wifi端口是什么 编辑:程序博客网 时间:2024/06/06 09:38
SQL> desc emp; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2)SQL> select *from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO---------- 7369 SMITH CLERK 7902 17-12月-80 800 20 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 EMPNO ENAME JOB MGR HIREDATE SAL COMM---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO---------- 7566 JONES MANAGER 7839 02-4月 -81 2975 20 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 EMPNO ENAME JOB MGR HIREDATE SAL COMM---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO---------- 7782 CLARK MANAGER 7839 09-6月 -81 2450 10 7788 SCOTT ANALYST 7566 19-4月 -87 3000 20 7839 KING PRESIDENT 17-11月-81 5000 10 EMPNO ENAME JOB MGR HIREDATE SAL COMM---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO---------- 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 7876 ADAMS CLERK 7788 23-5月 -87 1100 20 7900 JAMES CLERK 7698 03-12月-81 950 30 EMPNO ENAME JOB MGR HIREDATE SAL COMM---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO---------- 7902 FORD ANALYST 7566 03-12月-81 3000 20 7934 MILLER CLERK 7782 23-1月 -82 1300SQL> select ename||'LinkISing' from emp;字符串连接,字符串中有单引号的时候用''表示'ENAME||'LINKISING'-------------------SMITHLinkISingALLENLinkISingWARDLinkISingJONESLinkISingMARTINLinkISingBLAKELinkISingCLARKLinkISingSCOTTLinkISingKINGLinkISingTURNERLinkISingADAMSLinkISingENAME||'LINKISING'SQL> select distinct deptno from emp;distinct 关键字数表示去除重复 DEPTNO---------- 30 20 10SQL> select distinct deptno,job from emp;distinct连接两个内容的时候,表示去掉两个内容都相同的值 DEPTNO JOB---------- --------- 20 CLERK 30 SALESMAN 20 MANAGER 30 CLERK 10 PRESIDENT 30 MANAGER 10 CLERK 10 MANAGER 20 ANALYSTSQL> select ename,sal from emp where sal>1500;where关键字后跟过滤条件,上段代码表示选择出薪水值大于1500的人员名字略;SQL> select ename,sal,deptno from emp where deptno<>10;上段代码表示取出deptno不等于10的人员名字薪水Oracle里用<>表示不等于ENAME SAL DEPTNO---------- ---------- ----------SMITH 800 20ALLEN 1600 30WARD 1250 30JONES 2975 20MARTIN 1250 30BLAKE 2850 30SCOTT 3000 20TURNER 1500 30ADAMS 1100 20JAMES 950 30FORD 3000 20ENAME SAL COMM---------- ---------- ----------ALLEN 1600 300WARD 1250 500MARTIN 1250 1400TURNER 1500 0SQL> select ename,sal,comm from emp where sal in (800,1500,2000);表示取出薪水值是800,1500,2000人员的名字,in表示是略;SQL> select ename,sal,comm from emp where ename in ('SMITH','KING');in也可以用来选取字符串,如上段代码ENAME SAL COMM---------- ---------- ----------SMITH 800KING 5000SQL> select ename,sal from emp where deptno = 10 and sal >1000;where也可以用于两个过滤条件,用and连接ENAME SAL---------- ----------CLARK 2450KING 5000MILLER 1300SQL> select ename,sal from emp where sal not in (800,1500);not in表示不在800,1500区域的值ENAME SAL---------- ----------ALLEN 1600WARD 1250JONES 2975MARTIN 1250BLAKE 2850CLARK 2450SCOTT 3000KING 5000ADAMS 1100JAMES 950FORD 3000ENAME SAL---------- ----------MILLER 1300SQL> select ename from emp where ename like '%ALL%';表示选取名字中有ALL的人ENAME----------ALLENSQL> select ename from emp where ename like '_A%';表示选取第二个字母是A的人名SQL> select ename from emp where ename like '%$%%' escape '$';当人名中有%的话使用转义字符区分,escape表示用$作为转义字符 ,Oracle默认转义字符是\SQL> select empno,ename from emp order by empno asc;order by 关键字用于排序,默认是升序排序使用order by xxx desc表示降序排序 EMPNO ENAME---------- ---------- 7369 SMITH 7499 ALLEN 7521 WARD 7566 JONES 7654 MARTIN 7698 BLAKE 7782 CLARK 7788 SCOTT 7839 KING 7844 TURNER 7876 ADAMS EMPNO ENAME---------- ---------- 7900 JAMES 7902 FORD 7934 MILLERSQL> select ename,sal,deptno from emp order by deptno asc,sal desc;上段代码表示deptno按照升序排序,当deptno内部相同时,sal升序排序ENAME SAL DEPTNO---------- ---------- ----------KING 5000 10CLARK 2450 10MILLER 1300 10SCOTT 3000 20FORD 3000 20JONES 2975 20ADAMS 1100 20SMITH 800 20BLAKE 2850 30ALLEN 1600 30TURNER 1500 30ENAME SAL DEPTNO---------- ---------- ----------MARTIN 1250 30WARD 1250 30JAMES 950 SQL> select substr(ename,2,3) from emp;截取字符SQL> select chr(65) from dual;将65转换成ASCLL码表中的值SQL> select ascii('a') from dual;把ASCLL码表中的a转化成数字SQL> select round(23.456,2) from dual;四舍五入到小数点后两位SQL> select round(23.456,-1) from dual;四舍五入到第十位SQL> select to_char(sal,'$99,999.9999') from emp;装换格式,数字用数字9的话,当数字前面没有值不显示数字用数字0的话,当数字签名没有值的时候显示0TO_CHAR(SAL,'------------- $800.0000 $1,600.0000 $1,250.0000 $2,975.0000 $1,250.0000 $2,850.0000 $2,450.0000 $3,000.0000 $5,000.0000 $1,500.0000 $1,100.0000TO_CHAR(SAL,'------------- $950.0000 $3,000.0000 $1,300.0000SQL> select to_char(hiredate,'YYYY-MM-DD HH:MI:SS') from emp;把emp中的日期转换成YYYY-MM-DD HH:MI:SS的格式TO_CHAR(HIREDATE,'Y-------------------1980-12-17 12:00:001981-02-20 12:00:001981-02-22 12:00:001981-04-02 12:00:001981-09-28 12:00:001981-05-01 12:00:001981-06-09 12:00:001987-04-19 12:00:001981-11-17 12:00:001981-09-08 12:00:001987-05-23 12:00:00TO_CHAR(HIREDATE,'Y-------------------1981-12-03 12:00:001981-12-03 12:00:001982-01-23 12:00:00SQL> select ename,hiredate from emp where hiredate > to_date('1981-2-20 12:34:56','YYYY-MM-DD HH24:MI:SS');大于那个时间的选出来ENAME HIREDATE---------- --------------WARD 22-2月 -81JONES 02-4月 -81MARTIN 28-9月 -81BLAKE 01-5月 -81CLARK 09-6月 -81SCOTT 19-4月 -87KING 17-11月-81TURNER 08-9月 -81ADAMS 23-5月 -87JAMES 03-12月-81FORD 03-12月-81ENAME HIREDATE---------- --------------MILLER 23-1月 -82SQL> select sal from emp where sal >to_number('$1,250.00','$9,999.99');选出大于1250的人员并且按照$9,999.99格式 SAL---------- 1600 2975 2850 2450 3000 5000 1500 3000 1300SQL> select ename,sal*12*nvl(comm,0)from emp;nvl函数表示若ename中的值是空值,用0代替SQL> select count(*) from emp;一个有多少在emp中 COUNT(*)---------- 14SQL> select deptno,avg(sal) from emp group by deptno;取出平均值按照deptno分组 DEPTNO AVG(SAL)---------- ---------- 30 1566.66667 20 2175 10 2916.66667SQL> select deptn,job,max(sal) from emp group by deptno,job;取出最大值按deptno和job分组 DEPTNO JOB MAX(SAL)---------- --------- ---------- 20 CLERK 1100 30 SALESMAN 1600 20 MANAGER 2975 30 CLERK 950 10 PRESIDENT 5000 30 MANAGER 2850 10 CLERK 1300 10 MANAGER 2450 20 ANALYST 3000SQL> select deptno,max(sal) from emp group by deptno;出现在select的字段没有出现在组函数里必须出现在group by里 DEPTNO MAX(SAL)---------- ---------- 30 2850 20 3000 10 5000SQL> select avg(sal),deptno from emp group by deptno having avg(sal)>2000;having是对分组后的语句进行筛选where是对单条语句进行过滤筛选 AVG(SAL) DEPTNO---------- ---------- 2175 202916.66667 10SQL> select avg(sal) 2 from emp 3 where sal>1200 4 group by deptno 5 having avg(sal)>1500 6 order by avg(sal) desc; AVG(SAL)----------2991.666672916.66667 1690
0 0
- 初学Oracle_单条selcet语句
- 初学Oracle_多条selcet语句
- 初学Oracle_其他语句
- Oracle_连接数据库语句
- Oracle_事务控制语句
- 执行单条java语句
- selcet语句中having与where复用的逻辑。
- Oracle_限制和排序语句
- DML语句---插入单条数据记录
- mysql 单条insert语句,插入多条数据记录
- MySQL 单条语句 插入多条数据
- oracle_随机抽取N条数据
- oracle_脚本获取创建用户语句
- Oracle_画图解释 SQL join 语句
- 单条SQL语句实现复杂逻辑几例
- 用VB如何计算单条语句运行时间
- PL/SQL自动执行单条语句的设置
- 单条DML语句是否要加事务的讨论。
- 栈
- Android消息机制底层原理
- R树简介
- thinkphp request 和 param 的区别
- 【hibernate】小Demo+时间格式问题解决
- 初学Oracle_单条selcet语句
- IE兼容
- JAVA学习——字符
- Android网络库的前世今生四个阶段
- 13.4.2 用计量单位格式化数据
- Android启动流程分析之三:内核启动过程1--head.S
- shared_ptr构造函数
- mysqlimport将日期时间戳NULL值导为“0000-00-00 00:00:00”修复笔记
- Android启动流程分析之三:内核启动过程2--start_kernel