数据库(Oracle)——SQL查询篇

本文深入探讨了SQL语言的基础知识,包括SELECT语句的使用、条件查询、表达式查询、行记录查询以及排序方法。同时,文章还介绍了如何使用SQL进行数据管理,涵盖了从简单数据存储到复杂数据处理的多种场景。

数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库;随着信息技术和市场的发展,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

SQL语言介绍

SQL(Structured Query Language)为数据库的语言,在 1974 年由 Boyce【博伊 斯】和 Chamberlin【钱伯林】提出的一种介于关系代数与关系演算之间的结构化查询 语言,是一个通用的、功能极强的关系型数据库语言。它包含三部分:
在这里插入图片描述

SELECT

语法(命令不区分大小写,内容区分大小写)

SELECT [DISTINCT] {*,column alias,..}
FROM table alias 
WHERE 条件表达式
ORDER BY 排序字段列表 [asc|desc]

注意:
解析步骤: from where select order by

条件查询

查询列(字段)

select distinct *|字段|表达式 as 别名 from 表 表别名

查询某个表中所有的记录的所有字段信息
SELECT * FROM 表名;
查询某个表中所有的记录的指定字段信息
SELECT 列名 FROM 表名;
查询某个表中所有的记录的字段 1 字段 2
SELECT 列名 1,列名 2 FROM 表名;
去除重复记录
SELECT distinct 列名 FROM 表名;
查询表达式
SELECT 表达式 FROM 表名;
使用别名
SELECT xxx as 别名 FROM 表名 表别名
例表:
在这里插入图片描述

部分列

例1:
在这里插入图片描述
例2:
在这里插入图片描述

所有列

例1:
在这里插入图片描述

去除重复

例1:
在这里插入图片描述

别名

例1:
在这里插入图片描述
注意:
as: 字段别名可以使用 as,表别名不能使用 as (可省略)
" ": 原样输出,可以存在 空格与区分大小写

字符串

注意:使用’ '表示字符串(注意区分" ") ,拼接使用 ||
例1:
在这里插入图片描述

伪列

例1:
在这里插入图片描述

虚表(用于计算表达式,显示单条记录的值)

例1:
在这里插入图片描述

null

注意:null 遇到数字参与运算的结果为 null,遇到字符串为空串
例1:
在这里插入图片描述
例2:
在这里插入图片描述
例3:
在这里插入图片描述

查询行(记录)

where 过滤行记录条件
① = 、 >、 <、 >=、 <=、 !=、 <>、 between and
② and 、or、 not、 union、 union all、 intersect 、minus
③ null :is null、 is not null、 not is null
④ like :模糊查询 % _ escape(‘单个字符’)
⑤ in 、 exists(难点) 及子查询 m
例表:
在这里插入图片描述

比较条件(= 、>、 <、 >=、 <=、 !=、 <>)

例1:(嵌套一个: 查询在前 过滤在后)
在这里插入图片描述
例2:(不使用别名 (推荐) :过滤在前,查询在后)
在这里插入图片描述
any、some、all(了解)
例1:
在这里插入图片描述

且(and)、或(or)、非(not)

例1:
在这里插入图片描述
例2:
在这里插入图片描述
例3:
在这里插入图片描述

NULL(null 不能使用条件判断,只能使用 is)

例1:
在这里插入图片描述
例2:
在这里插入图片描述

集合操作(Union、Union All、Intersect、Minus)

Union: 并集(去重) 对两个结果集进行并集操作,不包括重复行同时进行默认规则的排序;
Union All: 全集(不去重) 对两个结果集进行并集操作,包括重复行,不进行排序;
Intersect: 交集(找出重复) 对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
Minus: 差集(减去重复)。
例1:(Union)
在这里插入图片描述
例2:(Union all)
在这里插入图片描述
例3:Intersect
在这里插入图片描述
例4:Minus
在这里插入图片描述

模糊查询(like)

模糊查询,使用通配符:
%: 零个及以上(任意个数的)的字符
_: 一个字符
例1:
在这里插入图片描述
例2:
在这里插入图片描述
注意:

遇到内容中包含 % _ 使用 escape('单个字符')指定转义符
--1)、编写测试数据
insert into emp(empno,ename,sal) values(1000,'t_%test',8989);
insert into emp(empno,ename,sal) values(1200,'t_tes%t',8000);
--2)、查找
--查询员工姓名中包含字符%的员工名称 岗位 工资 部门编号
select ename,job,sal,deptno from emp where ename like '%a%%'
escape('a');
--指定一个字符

获取所有行的记录

select * from emp;
select * from emp where 1=1 ;
select * from emp where ename like '%';

in、exists与排序

例表:
在这里插入图片描述

in与exists

in

相当于使用 or 的多个等值、定值集合,如果存在 子查询,确保类型相同、字 段数为 1;如果记录多,效率不高,用于一些少量定值判断上。

例1:in
在这里插入图片描述
注意:


```java
便于理解 使用 java 思维
while(外层结果集){
	while(内层结果集){
		if(emp.deptno==10){
			syso("....");
		}
		if(emp.deptno==30){
			syso("....");
		}
	}
}
==>in :如果记录多,效率不高,用于 一些 少量定值判断上

exists

条件为 true,存在记录则返回结果,后续不再继续比较查询,与查询的字段无
关,与记录有关。

例1:exists
在这里插入图片描述
例2:
在这里插入图片描述

排序(order by)

使用 ORDER BY 排序,排序不是真实改变存储结构的顺序,而是获取的集合的 顺序。
升序 : asc(默认) 降序: desc;
多字段: 在前面字段相等时,使用后面的字段排序;
空排序: 升序 null 排在最前面;降序 null 排在最后面。

例1:升序
在这里插入图片描述
例2:降序
在这里插入图片描述

一、 概念介绍: 数据库DATABASE、TABLE、列COLUMN、行ROW、关键字PRIMARY KEY、索引INDEX 二、 数据类型: LONG RAM:超长大型数据(照片、图形、描述等不定长数据)。 DATE:包含日期和时间。 INTEGER:有符号全长二进制整数(31位精度)。 SMALLINT:有符号半长二进制整数(15位精度)。 DECIMAL (p[,q]): 有符号的封装了的十进制小数,最多有 p 位数,并假设有 q 位在小数点右边。 如果省略 q ,则认为是 0。 FLOAT:有符号双字浮点数。 CHAR(n): 长度为 n 的定长字符串。 VARCHAR(n): 最大长度为 n 的变长字符串。 CHAR (5) 和 VARCHAR2(5)的区别是 CHAR不足5位后面自动加上空格,VARCHAR2不加 三、 列的非空属性NOT NULL: 如果一个列具有非空属性,则在给该增加、修改数据时必须保证该列有内容,否则会出错。 如果一个列允许为空,该列可以不放任何内容,即空值(在SQL中书写为NULL),空值不是空格。 如果一个列内容为空值,则该列不等于任何值(包括空值)。 例如:列SAGE1、SAGE2的内容为空,列SAGE3内容为20,则下面的逻辑达式全部为NULL:SAGE1=SAGE2、SAGE1SAGE2、SAGE1=SAGE3、SAGE3>SAGE1。下面的逻辑达式全部为真:SAGE1 IS NULL、SAGE3 IS NOT NULL。下列达式全为空:sage1+100,sage2+sage3 四、 特殊约定: 1. 所有SQL语句以分号结束不是以回车换行结束。 2. 中扩号代选项,就是其中的内容可有可无。 3. 下面讲的列名在很多情况下也可以是达式。 4. 名格式:[用户名.]名,例如:user001.student,如果不注名用户,则说明是当前登陆的用户的。 五、 建或视图语句CREATE 格式: CREATE TABLE (列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL]); CREATE VIEW 视图名 AS SELECT ……; CREATE TABLE 名 AS SELECT ……; Create table as 经常在修改一个前备份该,而且运行速度很快且不用提交 例如:Select table a_student as select * from student; Create table as 还可以用来复制结构 例如:假设有三个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值