专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

最近学习oracle的笔记(1) oracle入门教程

ins518 2024-11-06 18:56:34 技术文章 10 ℃ 0 评论

使用的是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的时候,而一些实体框架会自动帮用户屏蔽

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表