网站首页 > 技术文章 正文
使用的是scott用户的数据
范例:查询一个用户的所有表
Select * from tab;
Scott用户一共有4张表:BONUS、DEPT、EMP、SALGRADE
范例:查询表结构
Desc dept;
4.2、SQL简介(了解)
SQL(structrued Query Language)结构化查询语言
DML(data manipulation language,数据操作语言 )--数据查询
DDL (data definition language,数据定于语言)--定义数据库对象,
DCL (data control language,数据控制语言)--控制用户操作权限,一般由DBA负责
简单查询(重点、控制列 )
对于查询可分:简单查询、限定查询、多表查询、统计查询,四类查询,其中最简单查询语法如下:
Select [distinct] *| 列 [别名],列 [别名],….
From 表名称 [别名];
范例:查询所有雇员信息
Select * from emp;
范例:查询每个雇员的编号(empno)、姓名(ename)、职位(job)、基本工资(sal)
Select empno,ename,job,sal from emp;
Select子句也可以进行简单的加 减 乘 除
范例:查询每个雇员的编号、姓名、基本年薪
Select empno,ename,sal*12
From emp;
算出的列名称是sal*12
范例:给查询列起别名
Select empno 编号,ename 姓名,sal*12 年薪
From emp;
此处是为了演示才使用的中文,开发过程中必须使用英文
范例:查询每个雇员的编号、姓名、职位、年薪、而且每位雇员,每个月有200元的饭补、200元的车补、夏天4个月有每月300元高温补贴,15个月的基本工资
Select empno,ename,job,
(sal+400)*12+300*4+sal*3 income
From emp;
四则运算也有先后顺序
范例:查询雇员的职位表(去除重复信息)
Select distinct job from emp;
只有所有的列都重复的情况下才叫做重复数据
范例:关于重复消除的小问题----查询每个雇员的姓名、职位
Select distinct ename,job from emp;
在Oracle中,增加了一个“||”的连接符,可以对数据进行连接
范例:观察连接符
Select empno || ename from emp;
但是这样意义不大,所以增加一些描述,例如:现在希望这样显示数据:
编号:7369、姓名:smith、工资:800
其中黑色字体是灵活可变的,而红色字体固定,程序之中把固定的数据都称为字符串,而对于字符串的数据库表示应该使用“’’”
Select '编号:'||empno||',姓名:'||ename||',工资:'||sal info from emp;
5、限定查询
简单查询最大的问题在于显示了一张数据表中的所有数据,但很多情况下不需要这样使用,很多时候都需要对一些数据进行过滤,而这样查询属于限定查询。
在使用where子句操作的时候可以进行条件判断,条件判断可以使用如下几种操作符:
关系运算(> ,<,>=,<=,<>,!=) 、范围运算符(between…and) 、in子句、like子句、空判断
逻辑运算:and(与操作,所有判断条件都满足)、or(或操作,只要有一个条件满足就可以)、not(求反,true遍false、false变true)
5.1、关系运算
范例:查询基本工资大于2000的雇员(sal为基本工资)
Select * From emp where sal>2000;
范例:查询姓名是smith的雇员信息
select * from emp where ename='smith';
select * from emp where ename='SMITH';
Oracle中保存的数据是区分大小写,像一些系统密码是区分大小写的,这样的情况适合使用oracle。
范例:查询不是销售部的雇员
select * from emp where job<>'SALESMAN';
select * from emp where job!='SALESMAN'; 这样也可以
5.2、逻辑运算
Where子句中是可以同时编写多个条件的,但是多个天剑之间必须使用逻辑链接:
And:条件 and 条件 and条件 ? 所有条件要同时满足
or:条件 or 条件 or条件 ? 只要满足一个条件就可以
1、and链接操作
范例:查询所有销售人员并且工资高于1200的雇员
select * from emp where job='SALESMAN' and sal> 1200;
范例:查询工资范围在1200~3000(包含1200和300)
select * from emp where sal>=1200 and sal<=3000;
范例:查询10部门是经理的雇员
select * from emp where job='MANAGER' and deptno=10;
2、or链接操作
范例:工资大于3000,或者职位是办事员的全部雇员
select * from emp where job='CLERK' or sal>3000;
3、NOT取反操作
范例:观察取反----查询职员不是办事员的雇员
select * from emp where not job='CLERK';
如果觉得not不好用可以直接使用不等于
select * from emp where job!='CLERK';
4、取值范围:between…and
在计算的过程中包含了最大和最小值得判断
字段 between 最小值 and 最大值
范例:查询所有工资在1200~3000之间的雇员信息(包含1200,3000)
select * from emp where sal between 1200 and 3000;
所有的运算符是不分数据类型
select * from emp where ename>'SMITH'
select * from emp where sal>1200;
字符串、数字、日期都可以使用运算符进行判断,所以between…and也可以
范例:查询所有在1981年雇佣的雇员信息
范围:1981-01-01 (01-1 月-81)~1981-12-31(31-12 月-81)
select * from emp
where hiredate between '01-1月-1981' and '31-12月-1981';
所有的符号都不分判断的数据类型
5、空判断:is null 、is not null
空表示的是一个不确定的内容,null不能使用传统关系运算符
范例:错误判断(错误的语句)
Select * from emp where comm=null;
对于null而言,不能够直接进行验证,必须通过特定的符号来完成:
为空:is null
不为空: is not null、not is null
范例:查询所有不领取佣金的雇员(comm is null)
select * from emp where comm is null;
范例:查询所有领取佣金的雇员
select * from emp where comm is not null;
select * from emp where not comm is null;
提醒:在进行数字列的表示上,0和null是绝对不一样的两个概念
6、基数范围: in、not in
范例:查询雇员编号为 7369、7566、7839、8899(不存在)的雇员
select * from emp where empno in (7369,7566,7839,8899);
注意:关于in操作的问题
对于 in操作而言是针对基数的判断,如果说此时使用 not in 的时候基数里面包含了null,那么所有包含的数据都不会显示。
范例:观察程序,在in之中使用null----现在没有任何影响
select * from emp where empno in (7369,7566,7839,null);
范例:观察程序 在not in中使用null
select * from emp where empno not in (7369,7566,7839,null); ?返回空
不满足的原因是数据库自身的保护机制,避免大数据所带来的问题
7、模糊查询:like
Like子句可以实现数据库之中的模糊数据查询,但是这种查询的方式只适合小数据的情况下搜索引擎的搭建操作。
Like操作语法:
“_”:匹配任意一个字符
“%”:匹配0个、1个或多个任意字符
范例:查询所有姓名以字母A开头的所有雇员
select * from emp where ename like 'A%';
范例:查询第二个字母A的所有雇员
select * from emp where ename like '_A%';
范例:查询所有位置上包含A的雇员信息
select * from emp where ename like '%A%';
Like说明:
Like可以对各种数据类型实现判断
select * from emp where sal like '%1%' or hiredate like '%9%';
这种不受限制只是在用户直接执行SQL的时候,而一些实体框架会自动帮用户屏蔽
猜你喜欢
- 2024-11-06 详解大数据采集引擎之Sqoop&采集oracle数据库中的数据
你 发表评论:
欢迎- 618℃几个Oracle空值处理函数 oracle处理null值的函数
- 611℃Oracle分析函数之Lag和Lead()使用
- 599℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 596℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 592℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 583℃【数据统计分析】详解Oracle分组函数之CUBE
- 573℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 560℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)