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
原创粉丝点击