Oracle之基本的SQL语句

 4.1 SQL简介
   在实际中,各个数据库的SQL的区别就是提供的函数不同,SQL(结构化查询语言)是关系数据库管理的标准语言。
    分为以下几类:
      DML(Data Manipulation Language,数据操作语言)--用于检索或则修改数据(SELECT,update,save)
      DDL(Data Definition Language,数据定义语言) --用于定义数据的结构,create,drop,delete
      DCL(Data Control Language,数据控制语言)    --用于定义数据库用户的权限


 4.2 简单查询语句
   SELECT *|具体的列 别名
   FROM 表名称;
   
   如果只要查询部分信息(雇员编号,姓名,工作),就需要制定查询列,可以制定返回列的名称,即为一个列起别名
   SELECT empno 编号, ename 姓名, job 工作 FROM emp;
   
   现在要查询出所有的工作,
   SELECT job FROM emp;(结果有重复)
   
   SELECT (distinct) *|具体的列 别名(查询多列,必须保证所有列都重复才能删除掉重复)
   FROM 表名称
   
  
   exa: SELECT distinct empno,job FROM emp;(由于编号不重复 无法执行去重操作)
   
   一个新的要求:要求雇员编号 姓名 工作 但是显示的格式 :
    exa:编号是7369的雇员,姓名是:SMITH 工作是:CLERK
   要想使用此种功能,则可以使用Oracle中提供的字符串连接操作,使用"||"表示,如果要加入一些显示信息,所有的其他的固定信息要使用单引号括起来。
 exa:
 SQL> SELECT '编号是:' ||empno|| '的雇员,姓名是:'||ename || '的工作是:' ||job  FROM emp

'编号是:'||EMPNO||'的雇员,姓名是:'||ENAME||'的工作是:'||JOB
--------------------------------------------------------------------------------
编号是:7369的雇员,姓名是:SMITH的工作是:CLERK
编号是:7499的雇员,姓名是:ALLEN的工作是:SALESMAN
编号是:7521的雇员,姓名是:WARD的工作是:SALESMAN
编号是:7566的雇员,姓名是:JONES的工作是:MANAGER
编号是:7654的雇员,姓名是:MARTIN的工作是:SALESMAN
编号是:7698的雇员,姓名是:BLAKE的工作是:MANAGER
编号是:7782的雇员,姓名是:CLARK的工作是:MANAGER
编号是:7788的雇员,姓名是:SCOTT的工作是:ANALYST
编号是:7839的雇员,姓名是:KING的工作是:PRESIDENT
编号是:7844的雇员,姓名是:TURNER的工作是:SALESMAN
编号是:7876的雇员,姓名是:ADAMS的工作是:CLERK
编号是:7900的雇员,姓名是:JAMES的工作是:CLERK
编号是:7902的雇员,姓名是:FORD的工作是:ANALYST
编号是:7934的雇员,姓名是:MILLER的工作是:CLERK

已选择14行。  


4.3 

  在查询中也可以使用四则运算功能(+-*/(优先顺序)),例如 要求列出每个雇员的姓名和年薪

SQL> SELECT ename,sal*12 income FROM emp;(别名避免汉字)
   
   
   限定查询(WHERE子句)
   之前的查询时将一张表的所有记录全部查询出来,那么现在如果希望可以根据制定的条件查询,则必须指定限定查询。语法如下:
   
   SELECT(DISTINCT)*|具体的列 别名
   FROM 表名称
   WHERE 条件
   
   SELECT * FROM emp where sal>1500;
   
  查询每月可以得到奖金的雇员的信息;
  奖金是comm字段
  只要字段中存在内容,则表示内容不为空(null),如果存在内容 显示具体的值
  SELECT * FROM emp WHERE  comm IS NOT NULL;(is null 为空)
   
  多条件查询:
范例:要求查询出基本工资大于1500 同时可以领取奖金的雇员信息
    (同时指定2个条件 2个条件同时满足才可以查询)
  SQL> SELECT * FROM emp WHERE comm is not null and sal>1500;

范例:要求查询出基本工资大于1500 或则可以领取奖金的雇员信息
   SQL> SELECT * FROM emp WHERE comm is not null or sal>1500;
   之前使用NOT可以取反,把真的条件变成假的,假的变成真的!
   
范例:要求查询出基本工资不大于1500 并且不可以领取奖金的雇员信息
    SELECT * FROM emp WHERE not(comm is not null and sal>1500);
   
范例:查询基本工资大于1500,小于3000的全部雇员信息
     SELECT * FROM emp WHERE sal>1500 and sal<3000;
     SQL> SELECT * FROM emp WHERE sal between 1500 and 3000;(包含1500和3000)
      
范例:查询1981年雇佣的全部员工信息(1981-1-1 到1981-12-31)
     SELECT * FROM emp wnere hiredate between ‘1-1月-81’ and ‘31-12月-81’ ;
     结论: between and查询 除了可以支持数字之外还可以支持 日期执行
   
范例:要求查询姓名是smith的雇员的信息
    SELECT * FROM emp WHERE ename ='smith';
    执行上述语句 无返回结果,再次查询数据库表中的信息发现smith是采用大写的,所以ORACLE 是对大小写敏感的,所以必须要使用大写的形式进行查询
    
范例:要求查询出 雇员编号是 7369、7499、7521的雇员的具体信息;
    SELECT * FROM emp WHERE empno=7369 or empno=7499 or empno=7521;
    实际上,此时是指定了查询了范围,那么既然有范围了,在SQL语法中就可以使用IN操作符完成
    语法格式:字段 IN(值、值、值);
    SELECT * FROM emp WHERE empno in(7369,7499,7521);
    如果查询的内容不再此范围中 使用 NOT IN(值、值、值);
 
范例:要求查询出 雇员编号是不是 7369、7499、7521的雇员的具体信息   
    SELECT * FROM emp WHERE empno not in(7369,7499,7521);
    
范围:要求查询出姓名是 SMITH,ALLEN,KING的雇员的信息;
    SELECT * FROM emp WHERE ename in('SMITH','ALLEN','KING');(大小写要匹配)
  
    提示:如果在指定的查询范围中指定了额外的内容(表中没有的),不影响查询;
    SELECT * FROM emp WHERE ename in('SMITH','ALLEN','KING',"SOMEBADY");

通配符:
  在一般的日常见到的站点中经常发现有模糊查询的功能,即 输入一个指定的关键字,
  把符合内容的全部查询出来,在SQL中使用LIKE 语句查询。
  ‘%’可以匹配任意长度的内容
  '_'可以匹配一个长度的内容

范例:查询出所有雇员姓名中第二个字母包含“M”的雇员信息;
    SELECT *FROM emp WHERE ename like '_M%';

范例:查询出所有雇员姓名中包含“M”的雇员信息
     SELECT *FROM emp WHERE ename like '%M%';
    提示:如果在使用LIKE的时候没有使用查询的关键字,则表示查询全部;
    SELECT *FROM emp WHERE ename like '%%';

范例:查询工资中带6的 雇员信息:
    SELECT * FROM emp WHERE sal like '%6%';   
总结:在操作条件中 还可以使用 >、>=、=、<、<=等计算符(对日期和数字也有效)
    SELECT * FROM emp WHERE hiredate like '%81%';
    
    不等于 符号:在SQL中如果使用不等于符号 '<>' '!='
    SELECT * FROM emp WHERE empno <>7369;
  
  4.4 对查询的结果进行排序(ORDER BY字句)(重点)
  
  在SQL中可以使用ORDER BY 字句对查询的结果 进行排序,例如 现在使用查询的全部的语句:
  SELECT * FROM emp;
  
  此时,从查询的结果可以发现,是按照雇员的编号进行排序的,那么此时如果要对使用指定的列进行排序,则必须使用ORDER BY 语句 格式如下:
  SELECT (DISTINCT) *|指定列 别名
  FROM emp
  WHERE 条件语句
  (ORDER BY)排序字段1,排序字段2 ASC(DESC降序) 默认是升序排列
 范例:要求查询出 10部门的所有雇员信息,查询的信息按照工资由高到低排序,如果工资相等,则按照雇佣日期由早到晚进行排序
  此时存在2个排序条件:第一个是降序,第二个是升序
  SELECT * FROM emp WHERE deptno=10 order by sal desc,hiredate asc;
  排序操作肯定是放在整个SQL语句的最后执行的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值