Oracle数据库-五-SQL基本查询

5.1 SELECT 基本查询语句

  1.使用计算列
     1.查询scott方案下的emp表中每个雇员的姓名和将工资增sal加300后的新工资。
     SELECT ename ||'的工作是'||job AS 雇员,sal + 300 AS 新工资 FROM scott.emp;

   2.DISTINCT关键字
     使用DISTINCT可以从结果中消除重复行。
     例如:查询emp表中的job和deptno字段,要求去除重复行.
       SELECT DISTINCT job,deptno FROM emp;


   3.WHERE子句
    where子句的功能是查找符合条件的记录:
    1.比较运算符 (=、>、<、<=、>=、<>或!、!>、!<)
    2.逻辑运算符 (OR AND NOT)
    3.字符串模式匹配
      %表示字符串包括0个或多个任意字符
      _表示包含一个任意字符
      倒数第二个字母是E的员工:SELECT * FROM emp WHERE ename LIKE '%E_';
    4.范围比较
     BETWEEN AND
    5.使用查询列表
      IN: where column_name in (value1,value2,value3);
    6.空值判定
      IS NULL:空
      NOT NULL:非空


   4.ORDER BY子句
      对查询结果进行排序:
       ASC:升序排序
       DESC:降序排序
       默认为升序ASC排序,可以用字段序号或字段别名排序:
        SELECT ename,sal FROM emp ORDER BY sal DESC;
       可以指定多列数据排序,先将第一列数据排序,再按第二列排序。


   5.使用统计函数
       AVG、MAX、MIN、SUM、COUNT、COUNT(*)


   6.GROUP BY子句
      统计emp表中每个工作的员工人数:
       SELECT job,COUNT(*) AS 人数 FROM emp GROUP BY job;
      统计emp中每个部门中各种工作相同的员工人数:
       SELECT dept,job,COUNT(*) AS 人数 FROM emp GROUP BY deptno,job;


   7.HAVING子句
     使用GROUP BY子句和统计函数后还可以使用HAVING子句进行再次的筛选。WHERE是对表中已有数据进行筛选。
     1.统计平均工资大于2500的工作
       SELECT job,AVG(sal) AS 平均工资 FROM emp GROUP BY job HAVING AVG(sal)>2500;
      在SELECT语句中,先WHERE语句、再GROUP BY、后HAVING语句。
     2.统计emp中1982年后参加工作的、雇员人数超过2人的部门编号
      SELECT deptno,COUNT(8) AS 人数
      FROM emp
      WHERE hiredate>'1 -1月 -1982'
      GROUP BY deptno
      HAVING COUNT(*)>=2


5.2 SQL*PLUS 中常用函数介绍

1.字符串函数

  • CONCAT:连接两个字符串
  • LENGTH:返回字符串长度
  • LOWER:转小写
  • UPPER:转大写
  • INITCAP:首字母转大写
  • INSTR(string,value):查询字符value在string中的位置
  • LPAD(string,length[,padding]):在字符串左侧填充padding字符length长度,没指定padding用空格填充
  • RPAD(string,length[,padding]):同上在右侧填充
  • REPLACE(string,old,new):用new字符串替换old字符串,如果没有指定new或new为空,则删除old字符串
  • SUBSTR(string,start,length):获取子串,从start开始长度为length。
    在使用这些函数时需要一个特殊的表--DUAL。

2.数值函数

  • ABS:绝对值
  • CEIL:大于或等于value的最小值
  • FLOOR:等于或小于value的最大值
  • COS:求余弦值
  • COSH:求反余弦值
  • EXP:返回以e为底的指数
  • LN:返回自然对数值
  • POWER(vakue,exponent):返回value^exponent
  • SQRT:返回value的平方根
  • ROUND(value,precision):将value按precision进行四舍五入
  • MOD(value,divisor):求余
  • TRUNC(value,precision):将value按精度precision进行截取

3.日期时间函数

  • ADD_MONTHS(date,number):在指定日期date上增加number个月
  • LAST_DAY(date):返回date所在月的最后一天
  • MONTHS_BETWEEN(date1,date2):返回date1与date2之间间隔多少天
  • NEW_TIME(date,old_zone,new_zone):将日期date从时区old_zone转换到new_zone
  • NEXT_DAY(date,’day’):返回date后的下个星期day的日期
  • SYSDATE:返回系统当前日期
  • CURRENT_TIMESTAMP:返回当前的日期和时间
  • EXTRACT(c1 from d1):从日期c1中抽取指定的年、月、日、时、分、秒

4.转换函数

  • TO_CHAR(date,’format’):按照format格式将date转换为字符串
  • TO_NUMBER(char):将包含数字的字符串转换为数值类型
  • TO_DATE(string,’format’):将日期格式的字符串转换为日期型
  • CHARTOROWID(char): 将字符串转换为ROWID格式
  • ROWIDTOCHAR(x):将ROWID转换为字符串

5.3 SQL*PLUS格式化查询结果

  1. linesize:设置在一行中所能显示的总字符数
  2. space:设置每列之间的空格数
  3. timing:设置是否统计每个SQL命令的执行时间

5.4 SQL脚本文件的创建与执行

   将sql语句保存为脚本文件:SELECT * FROM emp; SAVE D:\select_emp.sql
   执行脚本文件:@D:\select_emp.sql 或 @@D:\select_emp.sql或 START D:\select_emp.sql
   @:必须给出脚本完整路径
   @@: 如果执行在当前路径可以不用完整路径

文章目录
  1. 1. 5.1 SELECT 基本查询语句
    1. 1.1.
  2. 2. 5.2 SQL*PLUS 中常用函数介绍
  3. 3. 5.3 SQL*PLUS格式化查询结果
  4. 4. 5.4 SQL脚本文件的创建与执行
|