简单查询

简单查询

1、控制列

简单查询要使用DML中的查询部分支持,对于简单查询的通俗理解就是就是将表中的全部记录都查询出来,但是可以通过语法控制列的显示。

简单查询SQL语法结构:

【②SELECT字句控制所要查询的数据列】SELECT [DISTINCT] * | 列 [别名], 列 [别名],…

【①FROM 控制字句的数据来源】FROM 表名称 [别名];

简单查询

除了进行基本的查询列之外,简单查询也支持四则运算,可以直接使用列的内容进行四则运算。(定义别名时不建议使用中文)

简单查询

在进行简单查询的过程之中,还支持数据的连接操作,使用“||”,对于数据的连接操作,考虑两种类型的数据:

  • 普通数字:直接编写(SELECT ename||1 from emp;)

    简单查询

  • 字符串: 单引号声明 (SELECT empno||‘hello’ from emp;)

简单查询

简单查询中的关键字DISTINCT关键字,主要目的是消除重复内容,重复内容指的是查询出来所有列的内容都重复。

简单查询

2、限定查询(控制行)

如果想要对所选择的数据列进行控制,利用where字句完成,此时SQL语法结构

【③选出所需要的数据列】SELECT [DISTINCT] * | 列 [别名],列 [别名],列 [别名]…

【①确定数据来源】FROM 表名称 [别名]

【②筛选数据行】WHERE 限定条件(s);

SELECT 子句是整个语法最后执行的,但是如果要进行数据筛选,必须要使用若干个条件运算符:

  • 关系运算符:>、<、=、>=、<=、!=(<>);

  • 范围运算:BETWEEN…AND…;

  • 空判断:IS NULL、IS NOT NULL;

  • IN 判断:IN 、NOT IN、exit()(复杂查询);

  • 模糊查询:LIKE、NOT LIKE。

    以上限定符都只能判断一次,如果现在有若干个限定符,那么就需要进行若干个限定符的连接,可以使用逻辑运算符:AND(与)、OR(或)、NOT(非);

    • 与操作表示所有的判断条件都满足时返回真(true)

    • 或操作表示若干个判断条件只要有一个满足就返回真(true)

      以上所给出的判断符号是SQL中的标准支持。

3、关系运算符

范例:查询薪资小于3000的雇员

简单查询

4、逻辑运算符

范例:查询不是办事员,但是工资小于3000 的雇员

简单查询

范例:查询出职位是办事员,或者工资大于3000的雇员

简单查询

除了AND和OR之外,还可以使用NOT进行求反,即:true变为false,false变为true

范例:查询工资小于等于2000的员工

简单查询

5、范围运算

BETWEEN…AND的主要功能是进行范围的查询

语法: WHERE 字段| 数值 BETWEEN 最小值 AND 最大值。(包含边界值)

范例:查询出工资在1500到3000的雇员

简单查询

效率问题:使用between…and 是一个运算符,而使用关系与逻辑的组合是两个运算符,所以使用between…and 效率更高。

在Oracle中的所有运算符都不受数据类型的控制,除了数字,也可以使用字符串或者日期进行判断。

日期判断

范例:查询所有在1981年雇佣的雇员信息

  • 范围:1981-01-01到 1981-12-31 按照已有的数据结构通过字符串来描述日期

    简单查询

6、空判断

null从数据库定义上来讲属于一个未知的数据,任何情况下如果任何一个数字与null进行计算,那么结果恒为null。

简单查询

null、空、0的区别:

null:表示不知道(例如:电话号码填null 表示有电话号码,但是暂时不知道)

空:表示没有(没有电话号码)

0:表示数字0

在某些数据列上是允许存在有null值的,但是null不能使用关系运算判断,关系运算符判断的是数据,null不是空字符串,也不是数字0.所以在SQL之中只能通过IS NULL来判断为空、IS NOT NULL(NOT 列 IS NULL) 来判断不为空。

范例:查出所有领取佣金的雇员

简单查询

7、IN操作符(谓词IN)

IN指的是根据一个指定的范围进行数据查询。

范例:查询出雇员编号是7369、7366、7388、9999的雇员信息

①利用关系运算符查找

简单查询

②利用IN操作符

简单查询

在比较①和②时,发现②不仅短而且性能好。

在使用IN的同时,其实还可以使用NOT IN,但是在使用NOT IN时,如果查询的数据范围之中有null值,则不会有任何结果返回,IN操作无此限制。

简单查询

8、模糊查询:LIKE

LIKE可以实现数据的模糊查询操作,如果要想使用LIKE则必须使用如下两个匹配符号:

  • “_”: 匹配任意的以为符号
  • “%”: 匹配任意的符号 (包含匹配 0位、1位、多位) 。

范例:查询所有雇员中以字母A开头的雇员信息

简单查询

范例:查询所有雇员中第二个字母是M的所有雇员

简单查询

范例:查询雇员姓名中任意位置上存在有字母A的信息

简单查询

关于LIKE的两点说明:

  • 如果在使用LIKE进行限定查询的时候,没有设置任何的关键字,那么表示查询全部;

    简单查询

  • LIKE 可以在任意数据类型上使用

  • 简单查询

虽然所有的数据类型都支持LIKE,但是往往会在字符串上使用,大部分的系统搜索(不包含搜索引擎)功能也都是通过此语句实现的。

9、查询排序

在默认情况下进行数据查询的时候,都会按照自然顺序进行数据排列。用户想要自己来进行排序操作,可以使用ORDER BY子句。

SQL 语法结构:

【③选出所需要的数据列】SELECT [DISTINCT] * | 列 [别名],列 [别名],列 [别名]…

【①确定数据来源】FROM 表名称 [别名]

【②筛选数据行】WHERE 限定条件(s);

【④数据排序】ORDER BY 排序字段[ASC | DESC] ,排序字段 [ASC | DESC] …;

ORDER BY 是在SELECT 子句之后执行,所以ORDER BY 可以使用SELECT 子句定义的别名,而WHERE 子句不可以。

字段排序两种形式(排序可以在任意数据类型上进行,包括字符串、日期):

  • 升序:ASC, 默认不写排序也是升序。
  • 降序: DESC 由高到低进行排序。

范例: 按照工资由高到低进行排序

简单查询

除了可以进行单一字段的排序,也可以进行字段的混合排序操作,指的是可以进行若干个字段的排序。

范例:按照工资由高到低排序,如果工资相同,则按照雇佣日期由早到晚排序

简单查询

范例:查询出所有办事员的编号、职位、年薪,按照年薪由高到低排序。

简单查询

10、总结

1、SELECT 子句控制数据列

2、WHERE子句控制数据行

3、ORDER BY 子句永远最后执行