三、 SQL的三种类型、基本SELECT、过滤和排序数据

一、 SQL语句分为以下三种类型:

  • DML: Data Manipulation Language 数据操纵语言
  • DDL: Data Definition Language 数据定义语言
  • DCL: Data Control Language 数据控制语言

DML

DML用于查询与修改数据记录,包括如下SQL语句:

  • INSERT:添加数据到数据库中
  • UPDATE:修改数据库中的数据
  • DELETE:删除数据库中的数据
  • SELECT:选择(查询)数据
    SELECT是SQL语言的基础,最为重要。

DDL

DDL用于定义数据库的结构,比如创建、修改或删除数据库对象,包括如下SQL语句:

  • CREATE TABLE:创建数据库表
  • ALTER TABLE:更改表结构、添加、删除、修改列长度
  • DROP TABLE:删除表
  • CREATE INDEX:在表上建立索引
  • DROP INDEX:删除索引

DCL

DCL用来控制数据库的访问,包括如下SQL语句:

  • GRANT:授予访问权限
  • REVOKE:撤销访问权限
  • COMMIT:提交事务处理
  • ROLLBACK:事务处理回退
  • SAVEPOINT:设置保存点
  • LOCK:对数据库的特定部分进行锁定

二、基本SQL SELECT语句

  • 列举 SQL SELECT语句的功能。
  • 执行简单的选择语句。
  • SQL 语言和 SQL*Plus 命令的不同。
1、基本 SELECT 语句
SELECT	*|{[DISTINCT] column|expression [alias],...}
FROM	table;

SELECT   标识 选择哪些列。
FROM     标识从哪个表中选择。
选择全部列
SELECT *
FROM   departments;
选择特定的列
SELECT department_id, location_id
FROM   departments;

注 意

  • SQL 语言大小写不敏感。
  • SQL 可以写在一行或者多行
  • 关键字不能被缩写也不能分行
  • 各子句一般要分行写。
  • 使用缩进提高语句的可读性。

算术运算符
数字和日期使用的算术运算符。
在这里插入图片描述

SELECT last_name, salary, salary + 300
FROM   employees;

操作符优先级

	*  	/ 	+ 	-
乘除的优先级高于加减。
同一优先级运算符从左向右执行。
括号内的运算先执行。
SELECT last_name, salary, 12*salary+100
FROM   employees;
使用括号
SELECT last_name, salary, 12*(salary+100)
FROM   employees;
定义空值
空值是无效的,未指定的,未知的或不可预知的值
空值不是空格或者0SELECT last_name, job_id, salary, commission_pct
FROM   employees;
空值在数学运算中的使用
包含空值的数学表达式的值都为空值
SELECT last_name, 12*salary*commission_pct
FROM   employees;

列的别名

 重命名一个列。
 便于计算。
 紧跟列名,也可以在列名和别名之间加入关键字‘AS’,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。
 
使用别名
SELECT last_name AS name, commission_pct comm
FROM   employees;
SELECT last_name "Name", salary*12 "Annual Salary"
FROM   employees;

连接符
 
把列与列,列与字符连接在一起。
用 ‘||’表示。
可以用来‘合成’列。

SELECT	last_name||job_id AS "Employees"
FROM 	employees;
字符串
字符串可以是 SELECT 列表中的一个字符,数字,日期。
日期和字符只能在单引号中出现。
每当返回一行时,字符串被输出一次。
SELECT last_name	||' is a '||job_id 
       AS "Employee Details"
FROM   employees;
重复行
默认情况下,查询会返回全部行,包括重复行。
SELECT department_id
FROM   employees;
删除重复行
在 SELECT 子句中使用关键字 ‘DISTINCT’ 删除重复行。
SELECT DISTINCT department_id
FROM   employees

SQL 和 SQL*Plus
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总 结

  1. 书写SELECT语句: SELECT … FROM…
    返回表中的全部数据。
    返回表中指定列的数据。
    使用别名。
  • 使用 SQLPlus 环境,书写,保存和执行 SQL 语句和 SQLPlus 命令。
SELECT	*|{[DISTINCT] column|expression [alias],...}
FROM	table;

三、过滤和排序数据

1、过滤

使用WHERE 子句,将不满足条件的行过滤掉。

SELECT	*|{[DISTINCT] column|expression [alias],...}
FROM	table
[WHERE	condition(s)];

WHERE 子句紧随 FROM 子句。
SELECT employee_id, last_name, job_id, department_id
FROM   employees
WHERE  department_id = 90 ;

字符和日期

字符和日期要包含在单引号中。
字符大小写敏感,日期格式敏感。
默认的日期格式是 DD-MON月-RR。
SELECT last_name, job_id, department_id
FROM   employees
WHERE  last_name = 'Whalen';

SELECT last_name, hire_date, department_id
FROM   employees
WHERE  hire_date = '7-6月-1994'

比较运算
在这里插入图片描述

SELECT last_name, salary
FROM   employees
WHERE  salary <= 3000;

其它比较运算
在这里插入图片描述

BETWEEN

使用 BETWEEN 运算来显示在一个区间内的值

SELECT last_name, salary
FROM   employees
WHERE  salary BETWEEN 2500 AND 3500;

IN
使用 IN运算显示列表中的值。

SELECT employee_id, last_name, salary, manager_id
FROM   employees
WHERE  manager_id IN (100, 101, 201);

LIKE

使用 LIKE 运算选择类似的值
选择条件可以包含字符或数字:

  • % 代表零个或多个字符(任意个字符)。
  • _ 代表一个字符。
SELECT	first_name
FROM 	employees
WHERE	first_name LIKE 'S%';
'%''-'可以同时使用。
SELECT last_name
FROM   employees
WHERE  last_name LIKE '_o%';

可以使用 ESCAPE 标识符 选择‘%’和 ‘_’ 符号。

ESCAPE

回避特殊符号的:使用转义符。例如:将[%]转为[%]、[_]转为[_],然后再加上[ESCAPE ‘\’] 即可。

SELECT job_id
FROM   jobs
WHERE  job_id LIKE ‘IT\_%escape ‘\‘;

NULL

使用 IS (NOT) NULL 判断空值。

SELECT last_name, manager_id
FROM   employees
WHERE  manager_id IS NULL;

逻辑运算
在这里插入图片描述

AND 要求并的关系为真。

SELECT employee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >=10000
AND    job_id LIKE '%MAN%';

OR 要求或关系为真。

SELECT employee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >= 10000
OR     job_id LIKE '%MAN%';

NOT 逻辑否

SELECT last_name, job_id
FROM   employees
WHERE  job_id 
       NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');

优先级

可以使用括号改变优先级顺序
在这里插入图片描述

二、ORDER BY子句

使用 ORDER BY 子句排序

  • ASC(ascend): 升序
  • DESC(descend): 降序

ORDER BY 子句在SELECT语句的结尾。

SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date ;

降序排序
SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date DESC ;

按别名排序
SELECT employee_id, last_name, salary*12 annsal
FROM   employees
ORDER BY annsal;

多个列排序
SELECT last_name, department_id, salary
FROM   employees
ORDER BY department_id, salary DESC;
可以使用不在SELECT 列表中的列排序。

总 结

使用WHERE 子句过滤数据

  • 使用比较运算

    使用 BETWEEN AND, IN, LIKE和 NULL运算
    使用逻辑运算符 AND, OR和NOT 
    
  • 使用 ORDER BY 子句进行排序。

SELECT     *|{[DISTINCT] column|expression [alias],...}
FROM       table
[WHERE     condition(s)]
[ORDER BY  {column, expr, alias} [ASC|DESC]];
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值