• SQL查询语句的使用


    单表查询
    表是数据库中数据存储的逻辑单元,业务流程处理所需要得到的数据就是从数据库中的表里提取
    的.
    SELECT *|{[DISTINCT] column|expression [alias],………} 
    FROM table
    [WHERE condition(s)] [ORDER BY{column,expr,alias} [ASC|DESC]];

    SELECT 与 FROM 之间可以是表中的列,也可以是表达式,包括算术表达式、字符串、常数、函
    数等(字符串用单引号定界)。

    1.  SELECT 语句中的 * 指提取该表中的所有字段:
    SELECT * FROM employees;
    说明:从员工信息表中提取所有数据(取所有字段)。

    2.  SELECT 语句中的 column 是指表的列:
    SELECT first_name, phone_number FROM employees;
    说明:从员工信息中提取员工姓名和联系电话(取字段 COLUMN)。

    3.  SELECT 语句中的 expression 是指一个表达式:
    SELECT sysdate "CURRENT DATE" 
    FROM dual;
    说明:sysdate 是一个函数,返回服务器的时间,表达式也可以是一个计算公式。该语句中
    的 dual 是一个公有表,用在 select 语句中来查看函数或表达式的返回值。

    4.  SELECT 语句中的[alias]是为列或者表达式取的别名:
    SELECT sysdate "CURRENT DATE" 
    FROM dual;
    说明:别名的目的是为了使提取的数据每一列有对应的名称,从而便于识别。本例提取当前的
    时间,为该字段赋予的名称是“CURRENT DATE”从而使输出的数据更有实际意义。如
    果别名中间有空格或者别名中需要区分大小写,则需要把该别名放在两个双引号之间。

    5.  SELECT 语句中的[WHERE condition(s)]为该查询语句设定条件:
    SELECT first_name, last_name, email
    FROM employees 
    WHERE employee_id = 100;
    说明:从雇员表中提取雇员姓名,邮件地址,提取条件为员工号是 100.

    6.  SELECT 语句中的[ORDER BY]为提取的数据按照指定的列排序:
    SELECT first_name, last_name, email 
    FROM employees 
    ORDER BY last_name;
     
    说明:从雇员表中提取员工名字、姓氏、邮箱地址,按照姓氏排序,缺省的情况下是升序排列。

    7.  SELECT 语句中的[ASC|DESC]为该数据提取语句设定排序方式:
    SELECT first_name, last_name, email 
    FROM employees 
    ORDER BY last_name desc;
    说明:从员工信息中提取员工名字、姓氏、邮箱地址并按姓氏降序排列。也可以对一个语句中
    的多个列进行排序,对每个列后面都可以增加升降序的选项。同时排序的列可以不用出
    现在选择列当中。

    8.  SELECT 语句中的 DISTINCT 用于排除重复的结果行:
    SELECT DISTINCT salary 
    FROM employees 
    WHERE job_id = 'IT_PROG';
    说明:提取职位为 IT_PROG 的所用员工的不同的工资数额。如果没有 DISTINCT 语句,则可
    能会提取出来大量的重复的数据。
    WHERE 子句中的 condition(s)用来设定常用的查询条件,这些条件主要有:
    条件 说明
    =,>,<,>=,<=,!=,<>,!>,!<;NOT 比较运算符
    BETWEEN AND, NOT BETWEEN AND 范围运算符
    IN, NOT IN 集合运算符
    LIKE, NOT LIKE 字符匹配
    IS NULL, IS NOT NULL 空值运算
    AND, OR 多重条件

    9.  在 CONDITION 子句中使用范围运算符:
    SELECT last_name, phone_number 
    FROM employees 
    WHERE employee_id BETWEEN 1 AND 150;
    说明:相当于大于等于某数并且小于等于某数。等同于 >= 和 <= 的结合使用。

    10.  AND 与 OR 的使用及使用括号来解决优先级别的问题:
    SELECT first_name, last_name, salary 
    FROM employees 

    WHERE job_id = 'IT_PROG' AND
    (hire_date > to_date('20050101', 'yyyymmdd') OR salary < 5000);
    说明:提取员工信息中工作岗位为 IT_PROG 并且入职时间晚于 2005 年,或者薪资少于 5000
    元的员工的姓名以及薪资。注意当查询条件涉及到多个时,可以用逻辑运算符 AND 和
    OR 来关联多个查询条件,其优先级顺序与其它开发语言相同,AND 的优先级高于 OR, 
    可以用括号改变优先级。

    11.  使用 IN 运算符:
    SELECT * FROM departments 
    WHERE department_id IN(10, 20, 30);
    说明:IN 谓词实际上是多个 OR 运算的缩写。

    12:表中字段别名的使用:
    SELECT last_name "My name", department_id, salary 
    FROM employees 
    ORDER BY "My name", department_id;
    说明:ORDER BY 后面可以使用字段别名的方式,可以使用多个字段进行排序。

    13. 空值的使用:
    SELECT * 
    FROM employees 
    WHERE commission_pct IS NOT NULL;
    说明:涉及空值条件查询时,必须使用 IS NULL, IS NOT NULL 来判断,这里的 IS 不能
    用 = 替代。空值不能等同于 0 或者空格,排序时空值总是比任何值大,空值与其它数
    值的运算结果仍然是空值。

    14.使用 LIKE 时 % 与 _ 的用法:
    SELECT first_name, last_name, salary 
    FROM employees 
    WHERE phone_number LIKE '01%'
    AND last_name LIKE '_a___' ORDER BY salary ;
    说明:从员工信息中提取用户姓名和薪水,提取条件为电话号码以 01 开头,并且员工姓氏第
    2 个字符是 a 且长度为 5 的员工。在使用 % 时,注意 % 在前面与 % 在后面时所代表
    含义是不同的。另外,WHERE 条件中的字符类型和日期时间类型的数据必须使用单引
    号,并且字符类型是大小写敏感的。

    15. LIKE 的条件中有关键字时的处理方法:
    SELECT employee_id, last_name, job_id 
    FROM employees 
    WHERE job_id LIKE '%SA\_%' ESCAPE '\';
    说明:如果在 LIKE 的内容中包含了 _ 或者 % , 则要使用 ESCAPE 关键词。

  • 相关阅读:
    十大经典排序算法——java语言
    Golang 协程 与 Java 线程池的联系
    你需要知道的webpack高频面试题
    新风口:周星驰招聘要求的Web3.0技术到底是什么?
    软件测试1
    JAVAEE初阶相关内容第十弹--多线程(初阶)
    pandas.DataFrame.apply,DataFrame.applymap,Series.map
    三角换元积分法
    OpenCV安装、QT、VS配置项目设置
    【VSCode】Windows系统的WSL无法启动vscode问题
  • 原文地址:https://blog.csdn.net/qq_50730941/article/details/126347937