oracle学习笔记一——查询之基本查询

       因公司业务需求,需要使用Oracle数据库,因为之前都是用MySQL做简单的处理,现在特意找了个教程系统学习下Oracle数据库。这里记录下学习过程:一,方便今后自己查阅;二,激励自己学下去;三,也方便后来者有个参考。

关于版本:感觉不重要,Oracle的核心功能肯定不会怎么变的。这里还是说明下,本日志使用的Oracle版本是10g(11g也可以),至于更新的版本12c等,问题应该都不大。


一、基本查询

1.查看当前用户:

    show user

2.查看当前用户下的表

    select * from tab;

    -->tab是管理员提供的表

3.查询所有的员工信息

    select * from emp;

    补:sqlplus提供的命令(不用加分号结束,当然加了也没事,一般长词还有缩写)

        --1.设置行宽

            set linesize 150

        --2.设置页面大小(展示多少条记录)

            set pagesize 30

        --3.设置列宽

            col ename for a8

            col sal for 9999

        --4.c命令:change,修改命令行敲错的代码

oracle学习笔记一——查询之基本查询_第1张图片
使用c命令修改错误代码

        --5.ed命令:edit,会打开系统默认的记事本,并将上一段sql命令放进去

                            修改完成后ctrl+s保存,关闭记事本。使用“/”执行刚才的命令

oracle学习笔记一——查询之基本查询_第2张图片
使用ed命令编辑上调命令

        --6.spool:输出在sqlplus里的命令和结果

            SQL>spool c:\test.txt

            SQL>命令1

            SQL>结果1

            ……

            SQL>命令n

            SQL>结果n

            SQL>spool off

            则这中间的所有信息都会被保存在c:\test.txt文件中

        --7.save:保存上一条sql命令到本地

            SQL>命令1

            SQL>save c:\a.sql

            则命令1就被保存在a.sql里了

            SQL>@c:\a.sql

            可以执行刚刚保存的命令

        --8.清屏命令

            host cls:清除页面上的显示

        --9.查看表结构

            desc 表名/describe 表名

4.通过列名查询

    select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;

    补:sql优化

            1. 尽量使用列名取代*: 9i之前,可以列名号

                                                 9i之后:  可以认为是一样的

5.别名

    select empno as "员工号",ename "姓名",sal 月薪, sal*12 年薪 from emp

    注意:别名加双引号和不加双引号的区别:

               1)不加双引号的别名中间不能有空格

                对的: select empno as "员工号",ename "姓名",sal "月  薪", sal*12 年薪 from emp;

                错的: select empno as "员工号",ename "姓名",sal 月  薪, sal*12 年薪 from emp;

               2)不加双引号的别名不能以数字开头

                对的: select empno as "1员工号" from emp;

                错的: select empno as 1员工号 from emp;

    补:关于SQL中null值:

        1. 包含null的表达式都为null,如果需要可以考虑滤空函数nvl或者nvl2

        2. 在SQL中,null永远不等于null

            错的:where comm=null

            对的:where comm is null / where comm is not null

6.DISTINCT 去掉重复记录

    select DISTINCT deptno from emp

    注意:DISTINCT作用于多列

               select DISTINCT deptno,job from emp

               这条命令只会去除deptno和job都相同的行

7.连接符||

    select concat('hello',' world') from dual;

    等价于

    select 'hello'||' world' from dual;

    注意:oracle的select必须跟from,但像select sysdate查询日期怎么办?

               oracle提供了dual伪表,可以写作select sysdate from dual

    --查询员工信息: ***的职位是***

    select ename||'的职位是'||job from emp;

你可能感兴趣的:(oracle学习笔记一——查询之基本查询)