zoukankan      html  css  js  c++  java
  • oracle 表查询(一)

    通过scott用户下的表来演示如何使用select语句,接下来对emp、dept、salgrade表结构进行解说。

                 
    emp 雇员表
    字段名称   数据类型       是否为空   备注
    --------   -----------   --------   --------
    EMPNO    NUMBER(4)                 员工编号                
    ENAME    VARCHAR2(10) Y         员工名称        
    JOB        VARCHAR2(9)   Y         职位                
    MGR       NUMBER(4)       Y         上级的编号            
    HIREDATE DATE             Y         入职日期               
    SAL         NUMBER(7,2)   Y         月工资            
    COMM      NUMBER(7,2)   Y         奖金                
    DEPTNO   NUMBER(2)      Y         所属部门
    -------------------------------------------
    job字段:
    clerk 普员工
    salesman 销售
    manager 经理
    analyst 分析师
    president 总裁

                    

    dept 部门表
    字段名称    数据类型          是否为空   备注
    --------    -----------      --------   --------
    DEPTNO   NUMBER(2)                    部门编号               
    DNAME    VARCHAR2(14)    Y          部门名称        
    LOC         VARCHAR2(13)   Y          部门所在地点
    -------------------------------------------
    DNAME字段:
    accounting 财务部
    research 研发部
    operations 业务部
      
    salgrade 工资级别表
    字段名称  数据类型   是否为空  备注
    --------  ---------  --------  --------
    GRADE   NUMBER     Y         级别                
    LOSAL    NUMBER     Y         最低工资               
    HISAL     NUMBER     Y         最高工资

                               

    1、查看表结构
    desc emp;

            

    2、查询所有列
    select * from dept;
    备注:切忌动不动就用select *,使用*效率比较低,特别在大表中要注意。
            
    3、set timing on/off;
    打开显示操作时间的开关,在底部显示操作时间。
    eg、sql> insert into tb_stu values('0001', 'zhangsan', 24); 
    1 row inserted
    executed in 0.015 seconds

                  

    4、insert into...select...表复制语句
    语法:insert into table2(field1,field2,...) select value1,value2,... from table1

    --创建tb_dept表
    create table tb_dept
    (
      deptno number(4) not null,
      dname  varchar2(14),
      loc    varchar2(13)
    )
    --添加主键约束
    alter table tb_dept add constraint tb_dept primary key (deptno);

    --insert into...select...用法
    insert into tb_dept (deptno, dname, loc) select a.deptno, a.dname, a.loc from dept a;

               

    5、统计
    select count (*) from emp;

                   

    6、查询指定列
    select ename, sal, job, deptno from emp;

                

    7、如何取消重复行distinct
    select distinct deptno, job from emp;

                  

    8、查询smith所在部门,工作,薪水
    select deptno, job, sal from emp where ename = 'smith';
    注意:oracle对内容的大小写是敏感的,所以ename='smith'和ename='smith'是不同的

                 

    9、nvl函数
    格式为:nvl(string1, replace_with)   
    功能:如果string1为null,则nvl函数返回replace_with的值,否则返回string1的值。  
    注意事项:string1和replace_with必须为同一数据类型,除非显示的使用to_char函数。  
    eg、如何显示每个雇员的年工资?
    select sal*13+nvl(comm, 0)*13 "年薪" , ename, comm from emp;

                   

    10、使用列的别名
    select ename "姓名", sal*12 as "年收入" from emp;

                  

    11、如何处理null值
    使用nvl函数来处理

                  

    12、如何连接字符串(||)
    select ename || ' is a ' || job from emp;

                     

    13、使用where子句
    问题:如何显示工资高于3000的员工?
    select * from emp where sal > 3000;
    问题:如何查找1982.1.1后入职的员工?
    select ename,hiredate from emp where hiredate >'1-1 月-1982';
    问题:如何显示工资在2000到3000的员工?
    select ename,sal from emp where sal>=2000 and sal<=3000;

                    

    14、如何使用like操作符
    %:表示0到多个字符 _:表示任意单个字符
    问题:如何显示首字符为s的员工姓名和工资?
    select ename,sal from emp where ename like 's%';
    如何显示第三个字符为大写o的所有员工的姓名和工资?
    select ename,sal from emp where ename like '__o%';

                    

    15、在where条件中使用in
    问题:如何显示empno为7844,7839,123,456的雇员情况?
    select * from emp where empno in (7844, 7839, 123, 456);

              

    16、使用is null的操作符
    问题:如何显示没有上级的雇员的情况?
    错误写法:select * from emp where mgr = '';
    正确写法:select * from emp where mgr is null;

    参见:http://www.cnblogs.com/linjiqin/archive/2012/02/02/2335347.html

  • 相关阅读:
    SharePoint 2013 安装.NET Framework 3.5 报错
    SharePoint 2016 配置工作流环境
    SharePoint 2016 站点注册工作流服务报错
    Work Management Service application in SharePoint 2016
    SharePoint 2016 安装 Cumulative Update for Service Bus 1.0 (KB2799752)报错
    SharePoint 2016 工作流报错“没有适用于此应用程序的地址”
    SharePoint 2016 工作流报错“未安装应用程序管理共享服务代理”
    SharePoint JavaScript API in application pages
    SharePoint 2016 每天预热脚本介绍
    SharePoint 无法删除搜索服务应用程序
  • 原文地址:https://www.cnblogs.com/GtShare/p/7520290.html
Copyright © 2011-2022 走看看