Oracle学习(二)
来源:互联网 发布:淘宝上便宜的零食店铺 编辑:程序博客网 时间:2024/04/28 03:28
<pre name="code" class="plain">1 打开数据库;资源管理器--管理工具--服务--OracleServiceORCL(启动时间会比较慢)--OracleOraDb11g_home1TNSListener(启动时间可能比较慢);测试昨天的项目;完成!2 查询系统当前的时间,但是格式和我们的不一样;SQL> select sysdate from dual;SYSDATE--------------25 - 3月 - 16SQL >3 格式显示;SQL> select * from v$nls_parameters;PARAMETER VALUE---------------------------------------------------------------- ---------------------------------------------------------- -NLS_LANGUAGE SIMPLIFIED CHINESENLS_TERRITORY CHINANLS_CURRENCY ¥NLS_ISO_CURRENCY CHINANLS_NUMERIC_CHARACTERS .,NLS_CALENDAR GREGORIANNLS_DATE_FORMAT DD - MON - RRNLS_DATE_LANGUAGE SIMPLIFIED CHINESENLS_CHARACTERSET ZHS16GBKNLS_SORT BINARYNLS_TIME_FORMAT HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT DD - MON - RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZRNLS_TIMESTAMP_TZ_FORMAT DD - MON - RR HH.MI.SSXFF AM TZRNLS_DUAL_CURRENCY ¥NLS_NCHAR_CHARACTERSET AL16UTF16NLS_COMP BINARYNLS_LENGTH_SEMANTICS BYTENLS_NCHAR_CONV_EXCP FALSE已选择19行。4 修改显示日期的格式;SQL> alter session set NLS_DATE_FORMAT = 'RR-MON-DD';会话已更改。SQL> select sysdate from dual;SYSDATE--------------16 - 3月 - 255 修改回去;SQL> alter session set NLS_DATE_FORMAT = 'DD-MON-RR';会话已更改。SQL> select sysdate from dual;SYSDATE--------------25 - 3月 - 16注意:字符和日期都要包含在单引号中;字符大小写敏感,日期格式敏感;默认的日期格式是DD - MON - RR;6 where使用初探;查询表中比81年1月1日入职晚的员工信息;SQL> select * from emp where hiredate > '01-1月 -81'; //注意日期格式要完全和表中的格式一致,字符串要写在单引号里边EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- -------- - ---------- -------------- ---------- ---------- ----------7499 ALLEN SALESMAN 7698 20 - 2月 - 81 1600 300 307521 WARD SALESMAN 7698 22 - 2月 - 81 1250 500 307566 JONES MANAGER 7839 02 - 4月 - 81 2975 207654 MARTIN SALESMAN 7698 28 - 9月 - 81 1250 1400 307698 BLAKE MANAGER 7839 01 - 5月 - 81 2850 307782 CLARK MANAGER 7839 09 - 6月 - 81 2450 107788 SCOTT ANALYST 7566 19 - 4月 - 87 3000 207839 KING PRESIDENT 17 - 11月 - 81 5000 107844 TURNER SALESMAN 7698 08 - 9月 - 81 1500 0 307876 ADAMS CLERK 7788 23 - 5月 - 87 1100 207900 JAMES CLERK 7698 03 - 12月 - 81 950 307902 FORD ANALYST 7566 03 - 12月 - 81 3000 207934 MILLER CLERK 7782 23 - 1月 - 82 1300 10已选择13行。注意:oracle 支持隐式类型转换;日期转化的函数;7 where语句使用语法格式;select ...... from .......where col(列名) > number;col(列名) in();col(列名) between a and b; 注意: a一定要小于b,即[a,b],都是闭区间col(列名) is null;col(列名)like ...;比较运算:操作符 =(等于,不是==) , > , <, >= , <= , <>(不等于, 也可以是 != );7.1 查询表中工资在1000元到2000元之间的员工信息表;SQL> select * from emp where sal between 1000 and 2000;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- -------- - ---------- -------------- ---------- ---------- ----------7499 ALLEN SALESMAN 7698 20 - 2月 - 81 1600 300 307521 WARD SALESMAN 7698 22 - 2月 - 81 1250 500 307654 MARTIN SALESMAN 7698 28 - 9月 - 81 1250 1400 307844 TURNER SALESMAN 7698 08 - 9月 - 81 1500 0 307876 ADAMS CLERK 7788 23 - 5月 - 87 1100 207934 MILLER CLERK 7782 23 - 1月 - 82 1300 107.2 查询部门编号是10,20的员工信息;SQL> select * from emp where deptno in(10, 20);EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- -------- - ---------- -------------- ---------- ---------- ----------7369 SMITH CLERK 7902 17 - 12月 - 80 800 207566 JONES MANAGER 7839 02 - 4月 - 81 2975 207782 CLARK MANAGER 7839 09 - 6月 - 81 2450 107788 SCOTT ANALYST 7566 19 - 4月 - 87 3000 207839 KING PRESIDENT 17 - 11月 - 81 5000 107876 ADAMS CLERK 7788 23 - 5月 - 87 1100 207902 FORD ANALYST 7566 03 - 12月 - 81 3000 207934 MILLER CLERK 7782 23 - 1月 - 82 1300 107.2 查询部门编号不是10,20的员工信息;SQL> select * from emp where deptno not in(10, 20);EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- -------- - ---------- -------------- ---------- ---------- ----------7499 ALLEN SALESMAN 7698 20 - 2月 - 81 1600 300 307521 WARD SALESMAN 7698 22 - 2月 - 81 1250 500 307654 MARTIN SALESMAN 7698 28 - 9月 - 81 1250 1400 307698 BLAKE MANAGER 7839 01 - 5月 - 81 2850 307844 TURNER SALESMAN 7698 08 - 9月 - 81 1500 0 307900 JAMES CLERK 7698 03 - 12月 - 81 950 30 7.3 in中是一个集合,各参数之间用一个逗号隔开,其中的参数也可以是null; SQL > select * from emp where deptno in(10, 20, null); ---- - 能够正确编译,查询结果不受影响SQL > select * from emp where deptno not in(10, 20, null); ----不能正确编译,无法查询!why ? ? ?7.4 模糊查询;----使用like运算选择类似的值----选择条件可以包含字符和数字:%代表零个或多个字符(人一个字符);_代表一个字符。;例1:查询员工姓名是以字母‘S’开头的员工信息;SQL> select * from emp where ename like 'S%';----单引号中的字符串是大小写敏感的!EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- -------- - ---------- -------------- ---------- ---------- ----------7369 SMITH CLERK 7902 17 - 12月 - 80 800 207788 SCOTT ANALYST 7566 19 - 4月 - 87 3000 20例2:查询员工姓名是四个字母的员工信息;SQL> select * from emp where ename like '____';EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- -------- - ---------- -------------- ---------- ---------- ----------7521 WARD SALESMAN 7698 22 - 2月 - 81 1250 500 307839 KING PRESIDENT 17 - 11月 - 81 5000 107902 FORD ANALYST 7566 03 - 12月 - 81 3000 20例3:向表中插入一行数据insert into emp(empno, ename, sal, deptno) values(1, "tom_abc", 8000, 10);例4:查询带有下划线的员工信息SQL> select * from emp where ename like '%\_%' escape '\';EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- -------- - ---------- -------------- ---------- ---------- ----------1 tom_abc 8000 108 order by子句8.1 使用order by子句排序ASC(ascend):升序DESC(descend):降序order by语句在select语句的结尾。 8.2 order by默认是按照升序进行排序的SQL> select * from emp order by sal;-----默认是升序的EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- -------- - ---------- -------------- ---------- ---------- ----------7369 SMITH CLERK 7902 17 - 12月 - 80 800 207900 JAMES CLERK 7698 03 - 12月 - 81 950 307876 ADAMS CLERK 7788 23 - 5月 - 87 1100 207521 WARD SALESMAN 7698 22 - 2月 - 81 1250 500 307654 MARTIN SALESMAN 7698 28 - 9月 - 81 1250 1400 307934 MILLER CLERK 7782 23 - 1月 - 82 1300 107844 TURNER SALESMAN 7698 08 - 9月 - 81 1500 0 307499 ALLEN SALESMAN 7698 20 - 2月 - 81 1600 300 307782 CLARK MANAGER 7839 09 - 6月 - 81 2450 107698 BLAKE MANAGER 7839 01 - 5月 - 81 2850 307566 JONES MANAGER 7839 02 - 4月 - 81 2975 207902 FORD ANALYST 7566 03 - 12月 - 81 3000 207788 SCOTT ANALYST 7566 19 - 4月 - 87 3000 207839 KING PRESIDENT 17 - 11月 - 81 5000 101 tom_abc 8000 10SQL> select * from emp order by sal desc;----降序EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- -------- - ---------- -------------- ---------- ---------- ----------1 tom_abc 8000 107839 KING PRESIDENT 17 - 11月 - 81 5000 107902 FORD ANALYST 7566 03 - 12月 - 81 3000 207788 SCOTT ANALYST 7566 19 - 4月 - 87 3000 207566 JONES MANAGER 7839 02 - 4月 - 81 2975 207698 BLAKE MANAGER 7839 01 - 5月 - 81 2850 307782 CLARK MANAGER 7839 09 - 6月 - 81 2450 107499 ALLEN SALESMAN 7698 20 - 2月 - 81 1600 300 307844 TURNER SALESMAN 7698 08 - 9月 - 81 1500 0 307934 MILLER CLERK 7782 23 - 1月 - 82 1300 107521 WARD SALESMAN 7698 22 - 2月 - 81 1250 500 307654 MARTIN SALESMAN 7698 28 - 9月 - 81 1250 1400 307876 ADAMS CLERK 7788 23 - 5月 - 87 1100 207900 JAMES CLERK 7698 03 - 12月 - 81 950 307369 SMITH CLERK 7902 17 - 12月 - 80 800 208.3 order by后面+列名 表达式 别名 序号按照年薪进行排序SQL> select empno, ename, sal, sal * 12 + nvl(comm, 0) 年薪 from emp order by 年薪;EMPNO ENAME SAL 年薪---------- ---------- ---------- ----------7369 SMITH 800 96007900 JAMES 950 114007876 ADAMS 1100 132007521 WARD 1250 155007934 MILLER 1300 156007654 MARTIN 1250 164007844 TURNER 1500 180007499 ALLEN 1600 195007782 CLARK 2450 294007698 BLAKE 2850 342007566 JONES 2975 357007902 FORD 3000 360007788 SCOTT 3000 360007839 KING 5000 600001 tom_abc 8000 960008.4 排序之后将控制摆在最后SQL> select * from emp order by comm nulls last;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- -------- - ---------- -------------- ---------- ---------- ----------7844 TURNER SALESMAN 7698 08 - 9月 - 81 1500 0 307499 ALLEN SALESMAN 7698 20 - 2月 - 81 1600 300 307521 WARD SALESMAN 7698 22 - 2月 - 81 1250 500 307654 MARTIN SALESMAN 7698 28 - 9月 - 81 1250 1400 307782 CLARK MANAGER 7839 09 - 6月 - 81 2450 107788 SCOTT ANALYST 7566 19 - 4月 - 87 3000 207839 KING PRESIDENT 17 - 11月 - 81 5000 107876 ADAMS CLERK 7788 23 - 5月 - 87 1100 207900 JAMES CLERK 7698 03 - 12月 - 81 950 307902 FORD ANALYST 7566 03 - 12月 - 81 3000 207698 BLAKE MANAGER 7839 01 - 5月 - 81 2850 307566 JONES MANAGER 7839 02 - 4月 - 81 2975 207934 MILLER CLERK 7782 23 - 1月 - 82 1300 101 tom_abc 8000 107369 SMITH CLERK 7902 17 - 12月 - 80 800 20已选择15行。 8.5 order by后面有多个列,如果多个列中有desc修饰,只作用于最后的那一列,即家里的desc最近的那一个,其他的按照升序进行排序例:首先按照部门编号降序排序,在部门一样的情况下在按照工资降序排序SQL> select * from emp order by deptno desc, sal desc;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- -------- - ---------- -------------- ---------- ---------- ----------7698 BLAKE MANAGER 7839 01 - 5月 - 81 2850 307499 ALLEN SALESMAN 7698 20 - 2月 - 81 1600 300 307844 TURNER SALESMAN 7698 08 - 9月 - 81 1500 0 307521 WARD SALESMAN 7698 22 - 2月 - 81 1250 500 307654 MARTIN SALESMAN 7698 28 - 9月 - 81 1250 1400 307900 JAMES CLERK 7698 03 - 12月 - 81 950 307902 FORD ANALYST 7566 03 - 12月 - 81 3000 207788 SCOTT ANALYST 7566 19 - 4月 - 87 3000 207566 JONES MANAGER 7839 02 - 4月 - 81 2975 207876 ADAMS CLERK 7788 23 - 5月 - 87 1100 207369 SMITH CLERK 7902 17 - 12月 - 80 800 201 tom_abc 8000 107839 KING PRESIDENT 17 - 11月 - 81 5000 107782 CLARK MANAGER 7839 09 - 6月 - 81 2450 107934 MILLER CLERK 7782 23 - 1月 - 82 1300 10已选择15行。
0 0
- oracle学习总结(二)
- oracle学习(二)
- oracle学习笔记(二)
- oracle学习总结(二)
- Oracle学习笔记(二)
- oracle学习总结(二)
- oracle学习总结(二)
- oracle学习总结(二)
- oracle PLSQL 学习二
- Oracle学习(二)
- Oracle学习笔记(二)
- oracle学习笔记二
- oracle学习笔记(二)
- ORACLE学习(二)
- oracle学习笔记二
- oracle学习笔记 二
- oracle 学习(二)
- oracle 学习笔记(二)
- python学习(六):面向对象
- HTML、css、JavaScript 代码分离
- 詩經神學國際論文1:日能習財武經
- servletcontext的使用总结
- SnapKit动画效果的实现
- Oracle学习(二)
- 关于双向链表的审计 audit
- Codova简介
- C#获取本地IP地址兼容win7和xp
- 使用Profiler工具分析内存占用情况
- JS 运动框架2 链式运动
- JSON与XML的区别比较
- 单元测试
- virtio /rpmsg 发送data/msg流程