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 关键词。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青木与风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值