Oracle-SQL简单查询语句处理概念以及习题

来源:互联网 发布:手机文档翻译软件 编辑:程序博客网 时间:2024/06/10 22:47

Oracle-SQL简单查询语句处理笔记一

数据处理及进展 –数据:是指所有能输入到计算机中并被计算机程序处理 的符号的总称。

 

数据处理:是指对各种形式的数据进行收集、储存、加 工和传播的一系列活动的综合。

其目的是从大量的、原 始的数据中抽取、推导出对人们有价值的信息。

 

数据处理的3个阶段:

 • 人工管理阶段

 • 文件系统阶段

 • 数据库系统阶段

 

关系型数据库

• 数据模型 –是数据库系统中,用于抽象 、表示、处理现实世界中数据的一种形式架构。

 

• 数据模型三层次

概念模型:是现实世界到信息世界的第一层抽象,常用E-R 图表示。

逻辑模型:是用户从数据库所看到的模型,是具体的DBMS 所支持的数据模型,常用的包括层次模型、网状模型、关 系模型。

物理模型:是面向计算机物理表示的模型,描述了数据在 储存介质上的组织结构,它不但与具体的DBMS有关,而且 V1.0 还与操作系统和硬件有关

 

关系型数据库

• 关系模型

关系模型有关系数据结构、关系操作集合和关系完整性约束三部分组成的。

关系数据结构:在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。

 

在用户看来,关系就是一张由行和列组成的二维数据表。

关系操作:包括:选择、投影、连接、增加、删除、修 改等。

关系完整性约束:包括实体完整性、参照完整性和用户 定义的完整性。

算术运算符 •

算术运算符优先级

乘除优先于加减

相同优先权的表达式按照从左至右的顺序依次计算

括弧可以提高优先权,并使表达式的描述更为清晰

空值NULL

• 空值NULL – 空值是指一种无效的、未赋值、未知的或不可用的值。

 空值不同于零或者空格。

 

列别名

好处:方便查看

 用来重新命名列的显示标题,如果SELECT语句中包含计算列,通常使用列别名来重 新定义列标题。

 • 使用列别名的方法

 方式1:列名列别名

 方式2:列名 AS列别名

 • 以下三种情况列别名两侧需要添加双引号

 列别名中包含有空格

列别名中要求区分大小写

列别名中包含有特殊字符

连接操作符使用 || 去连接,相当于java中的 + 号呢。

消除重复行使用DISTINCT 关键字

 

 

 

 

 

 

习题整理一:简单的查询语句(查询oracle已经创建的表格,使用用户scott普通用户登陆)

说明:

 

Oracle常用的测试表:(可以通过自己创建测试表测试,最好不改变自带的oracle表哈)

Emp 员工表 (员工编号empno,员工名字ename,工资sal,职位job,部门编号deptno,奖金comm)

Dept 部门表(部门编号deptno,部门名称dname,地址loc)

BONUS 奖金表(同上)

 

练习1

笔记:在关于oracle的性能问题中,使用指定的列查询(如第2题)比使用select* (如第1题)会效率高很多,虽然结果一样,但是执行起来更加优化,这与关乎到有没有命中索引的问题。

 

• 1.使用两种方式查询所有员工(EMP)信息

select * from emp;

 

• 2.查询(EMP)员工编号、员工姓名、员工职位、 员工月薪、工作部门编号。

selectempno,ename,job,sal,deptno from emp;

 

 

练习2

笔记:在oracle中,sqlplus以及在sql developer中,可以使用

/*注释文字*/  或者 --注释文字  来注释文字,在编写程序的习惯中,好的习惯是对自己的程序编写好注释,这样方便其他人查看自己的代码。

• 1.员工转正后,月薪上调20%,请查询出所有员工转正后的月薪。

select  empno,ename,job,sal*(1+0.2),deptno from emp;

 

• 2.员工试用期6个月,转正后月薪上调 转正后月薪上调20%,请查 询出所有员工工作第一年的年薪所得(不考虑奖 金部分,年薪的试用期6个月的月薪+转正后6个月的月薪)

select  empno,ename,job,6*sal+6*sal*(1+0.2),deptnofrom emp;

 

练习3

错误笔记:在起别名的时候,注意,别名如果是中文,需要写上双引号,单引号是报错的。

 

• 1.员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的所有收入(需考虑奖 金部分),要求显示列标题为员工姓名,工资收入,奖金收入,总收入。

select  ename "员工姓名",sal "工资收入",comm "奖金收入" ,6*sal+6*sal*(1+0.2)+12*comm  "总收入"  from emp;

 

练习3

• 1.员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的所有收入(需考虑奖金部分),

要求显示列标题为员工姓名,工资收入,奖金收入,总收入。

select  ename "员工姓名",sal "工资收入",comm  "奖金收入" ,6*sal+6*sal*(1+0.2)+12*comm  "总收入"

from emp;

 

练习4

• 1.员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的所有收入(需考虑奖

金部分),要求显示格式为:XXX的第一年总收入为XXX。

--笔记:需要使用连接符号  ||,同时,在连接符号中,需要单引号连接

Select ename  || '的第一年总收入为' || (6*sal+6*sal*(1+0.2)+12*comm)   from emp;

 

• 2.查询员工表中一共有哪几种岗位类型。

--笔记:需要去掉重复的jobdistinct写在字段前边

select distinctjob from emp;

 

练习5

在SQL*Plus中,可以使用DESCRIBE 命令来查看表结构

--使用desc table查看表结构

desc emp;

 

课后作业

• 1.分别选择员工表、部门表、薪资等级表中的所有数据。

select * fromemp;

select * fromdept;

select * frombonus;

 

• 2.分别查看员工表、部门表、薪资等级表的表结 薪资等级表的表结构。

desc emp; --查看員工表

desc dept;--查看部门表

desc bonus;--查看薪资


原创粉丝点击