《数据库》第七章 基本SQL查询

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SELECT * FROM books WHERE quantity IS NULL;
21
Inspur Education
ORDER BY子句的语法
用来按某个顺序显示查询结果
SELECT columnlist FROM tablename ORDER BY [(order_by_expression[ASC|DESC])];
SELECT columnlist FROM tablename WHERE condition;
16
Inspur Education
WHERE子句——条件表达式
在CONDITION中可以用运算符对值进行比较,可用的运算符 如下:
✓A=B 表示如果A和B的值相等,结果为TRUE。 ✓A>B 表示如果A大于B的值,结果为TRUE。 ✓A<B 表示如果A小于B的值,结果为TRUE。 ✓A!=B或者A<>B 表示如果A不等于B的值,结果为TRUE。 ✓A LIKE B LIKE是匹配运算符。 ✓NOT<条件表达式> NOT运算符用于对结果取反。
4
Inspur Education
SELECT语句的语法 2-2
SELECT语句的要点以下几点: • SELECT语句必需的子句只有SELECT和FROM • 方括号表示可选部分 • 可以在几行或一行上输入SQL语句。大多数SQL语句 的输入方式都是一个子句占据单独的一行,以便提 高可读性,并且使编辑变得更容易。
11
Inspur Education
SELECT语句中的运算——使用算数运算 2-2
希望获取每本书所产生的利润。Books表包含两个 可以用来计算利润的字段:BCOST和BRETAIL。一本书的 利润是书店为该书支付的金额(成本)与书的销售价格 (零售价)之间的差值。我们为计算出的字段指定一个 别名。
SELECT * FROM books WHERE quantity>25 OR bretail>=50;
18
Inspur Education
WHERE子句——NULL值3-1
在数据库中,NULL是保留字,用来描述记录中没有内容的 字段值,通常也称之为“空”(注意与空格进行区分)。 在Oracle中,判断某个条件的值时,返回值可能是TRUE、 FALSE。
14
Inspur Education
课堂练习2
1.已知publisher(pubid,pubname,contact,phone),查询 包含各个出版社的名称、通常的联系人以及出版社电话 号码的列表。重新命名包含联系人的列,在显示的结果 中命名为 Contact_Person。 2.根据BOOKS表信息确定当前库存的书都有哪些种类。每 一个种类只能列出一次,不能有重复的。
SELECT [DISTINCT|UNIQUE](*,columnname[AS alias],…) FROM tablename [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY columnname];
比如要查看数据库中所有图书的名称,我们查询BOOKS表 中的BOOKNAME字段
SELECT bookname FROM books;
7
Inspur Education
从表中选择一列 2-2
在Sql*Plus中的几种输入方式
SQL>SELECT TITLE FROM BOOKS; SQL>select title from books; SQL>SELECT title FROM books; SQL>SELECT TITLE FROM BOOKS /
15
Inspur Education
WHERE子句——语法
WHERE子句用于筛选查询返回值,完成的是选择操作。使用 WHERE子句后,将对查询结果行进行条件判断,只有满足WHERE 子句中的判断条件才会被显示,而不满足WHERE条件的行将不 出现在结果集中。
在SELECT语句中,WHERE子句位于FROM子句之后,其语法格 式如下所示:(其中,CONDITION为查询结果应满足的判断条 件)
5
Inspur Education
选择表中的所有数据
显示客户customers表中所有的数据
SELECT * FROM books;
在SELECT后面键入*号
6
Inspur Education
从表中选择一列 2-1
在Oracle中,可以只在结果中返回特定的列。SELECT语 句中选择特定列被称为“投影(projection)”。可以 选择表中的一列,也可以选择多个列或者是所有的列。
SELECT bookname,bretail-bcost FROM books;
12
Inspur Education
SELECT语句中的运算——使用列别名
可以使用“列别名”来代替在查询结果中显示的列名称,在 SELCECT子句中列名称的后面列出列别名即可。
示例:计算出每本书的利润后,结果集中利润的列名为 “bretail-bcost”,为了提高结果集的可读性,可以为它指 定一个别名“profit”。
2
Inspur Education
目标
掌握简单SQL查询 掌握WHERE子句 掌握ORDER BY子句 理解伪列的概念和使用 掌握多种聚合函数的使用 掌握GROUP BY子句 掌握HAVING子句
3
Inspur Education
SELECT语句的语法2-1
使用了大写字母的单词(SELECT,FROM,WHERE等)是 关键字,关键字开始的每一部份都称为一个子句。
INSERT INTO books (isbn, bookname, pubdate, quantity, bcost, bretail, bcategory)
VALUES (2, 'a语言', to_date('2017-10-8', 'yyyy-mm-dd'), null, '40', '68', 'computer');
ROWID 是表中行的存储地址,该地址可以唯一地标识数据库中 的一行,可以使用 ROWID 伪列快速地定位表中的一行
ROWNUM 是查询返回的结果集中行的序号,可以使用它来限 制查询返回的行数
25
Inspur Education
组函数(聚合函数)的概念
组函数也称为“多行函数”,他们处理每一组行并返回一 个结果
数字 字符值 NULL值
升序可以指定asc 除非你指定了desc以使用降序,否则默认情况下, ORDER BY子句将按升序进行排序
23
Inspur Education
次排序
ORDER BY子句只指定一列时,我们称为“主排序”, 如果主排序中的两行或更多行完全相同,那么次排序提 供了另一个进行排序的字段。
类的列表。但是要颠倒列的顺序,首先列举每本书的种 类
10
Inspur Education
SELECT语句中的运算——使用算数运算 2-1
SELECT子句中可以使用+,-,*,/这样的算术运算,Oracle 中遵循以下算术运算: • 在算术等式中从左向右计算,首先计算任何乘法和除法。 • 在进行乘法和除法之后才计算任何加法和减法,也是在等 式中从左向右进行计算。 • 可以使用括号覆盖计算顺序。
SELECT SUM(quantity) FROM books;
27Biblioteka Baidu
Inspur Education
AVG函数
计算指定列中的数值的平均值
AVG ([DISTINCT |ALL] n) 如果没有指定,Oracle默认使用ALL
获取BOOKS表中图书的平均售价(BRETAIL)
SELECT AVG (bretail) FROM books;
例如,如果查询一个列的值是否等于20,而该列的值为NULL, 则对该列进行判断时就会为UNKNOWN,因为它既不等于20也不 不等于20。
19
Inspur Education
WHERE子句——NULL值3-2
示例:对BOOKS表插入一条带NULL值的记录(前提是该字段值 可以为NULL),当前设置库存量(QUANTITY)为NULL。
示例:查询所有BOOKNAME列以“j”开头的书本。
SELECT * FROM books WHERE bookname LIKE 'j%';
17
Inspur Education
WHERE子句——连接运算符
在WHERE子句中可以使用连接运算符将各个表达式关联起 来,组成复合判断条件。常用的连接运算符有AND和OR。
FROM books;
SELECT 语句的SELECT子句中
指定多个列时,应该使用逗号
将列出的列分开。可以加入空
格来提高可读性。
注意:输出结果中的顺序,按 SELECT子句中列出列的顺序。
9
Inspur Education
课堂练习
1.显示BOOKS 表中包含的所有数据的列表 2.创建 BOOKS 表中存储的每一本书以及每本书所属种
Oracle中常用的组函数: • SUM • AVG • COUNT • MIN • MAX
26
Inspur Education
SUM函数
用来计算存储在一组记录的某个数字字段中的总数量
SUM([DISTINCT |ALL] 列名) 如果没有指定,Oracle默认使用ALL
查询BOOKS表中的书本总库存量(QUANTIRY)
20
Inspur Education
WHERE子句——NULL值3-3
在数据库中NULL值是一个特殊的取值,使用“=”对NULL值 进行查询条件判断是不能得到正确结果的。
Oracle为NULL值的判断提供了两个SQL运算符,分别是IS NULL和IS NOT NULL。
示例:查询BOOKS表中库存量(QUANTITY)为NULL的记录。
查询按州降序排列的客户,有多个居住在某个特定州的 客户时,将按城市的升序对客户排序
SELECT lastname,firstname,city,state FROM customers ORDER BY state desc,city;
24
Inspur Education
Oracle伪列
Oracle 中伪列就像一个表列,但是它并没有存储在表中 伪列可以从表中查询,但不能插入、更新和删除它们的值 常用的伪列有ROWID和ROWNUM
在末尾显示
22
Inspur Education
ORDER BY子句的语法
查询所有售价大于等于50(BRETAIL>=50)的书,并且 按照售价从高到低进行排序。
SELECT * FROM books WHERE bretail>=50 ORDER BY bretail DESC;
注意: 按升序排序时,值将按以下顺序列出
关键字,表名和列名都不区分大小写。为了将关键字与 SELECT语句的其他部分区分开,关键字使用了大写字母。 要记住,这“不是”Oracle所必需的,只是用来提高可 读性的一种习惯做法。
8
Inspur Education
从表中选择多个列
要查看数据库中所有图书的名称和出版日期
SELECT bookname,pubdate
SELECT bookname,bretail-bcost AS profit FROM books;
注意可选关键字AS,以便区分列名称和列别名。
13
Inspur Education
使用DISTINCT
删除重复的列可以使用DISTINCT 希望查看一下书的种类有哪些
SELECT DISTINCT bcategory FROM books;
Inspur Education
第7章 基本SQL查询
Inspur Education
知识点回顾
向现有表中添加记录-INSERT 修改表中现有的行-UPDATE 删除记录-DELETE 执行事务控制语句COMMIT、ROLLBACK、SAVEPOINT 事务控制语言GRANT 、REVOKE 区分共享锁和排他锁 使用SELECT…FOR UPDATE命令创建共享锁
示例1:查询出所有库存量大于25(QUANTITY>25)且售价 不低于50(BRETAIL>=50)的书。
SELECT * FROM books WHERE quantity>25 AND bretail>=50;
示例2:查询出所有库存量大于25(QUANTITY>25)或者售 价不低于50(BRETAIL>=50)的书。
相关文档
最新文档