Oracle上课学习笔记<1>
简单的select查询语句
1.select查询语句基本语法
使用两个关键字:
select 指定要查询的字段和内容
from 从哪张表中查询
语法:select 字段名 from 表名;
三种不同的用法:
1)查询某张表中特定的某一个字段
select 字段名 from 表名;
例如:查询员工表中所有员工的id
SQL:select id
from s_emp;
2)查询某张表中的多个字段
字段之间通过逗号分隔
select 字段1,字段2,字段3.... from 表名;
例如:查询员工表中所有员工的id、last_name?
SQL:select id,last_name
from s_emp;
查询所有员工的id、last_name、salary?
SQL:select id,last_name,salary
from s_emp;
3)查询一张表中的所有字段
1)将所有字段名全部定义出来进行查询
2)使用*符号 代表全部字段的含义
例如:查询部门表中全部字段的全部内容?
SQL:select id,name,region_id
from s_dept;
等同于:select * from s_dept;
区别:方式1)直接根据字段名取字段值
效率较高
方式2)使用*号,要先查询当前表中
有哪些字段,再根据查询的结果
去取对应的字段值。
效率较低。
2.算数运算
1)数值类型的运算
包括 加减乘除
+ - * /
例如:查询员工12个月的总收入?
select salary*12 from s_emp;
练习:员工每个月涨了200元
查询加薪之后的12个总收入?
select (salary+200)*12
from s_emp;
练习:在加薪200元的基础上,每位员工有
年终奖500元。
查询每位员工一年的薪水?
(该公司一年为员工付薪18月)
select (salary+200)*18+500
from s_emp;
2)日期类型的运算
日期类型运算只有加减法
加法代表向指定日期的未来数几天
减法代表向指定日期的过去数几天
例如:查询所有员工入职时间的前一天?
select start_date-1 from s_emp;
3.处理空值
查询所有员工的id、提成(commission_pct)?
select id,commission_pct
from s_emp;
查询所有的员工id、工资+提成?
select id,salary+commission_pct
from s_emp;
单值函数:nvl(字段名,默认值)
把有可能出现空值的字段,写在nvl函数中。
如果字段值查询结果不为空,则使用原来的值。
如果字段值为空,使用默认值。
SQL:select id,salary+nvl(commission_pct,0)
from s_emp;
错误写法:
select id,nvl(salary+commission_pct,0)
from s_emp;
4.字符串拼接
可以把多个字段的结果拼接成一个字段显示。
例子:查询员工的全名?
first_name last_name
select first_name,last_name
from s_emp;
在Oracle数据库中拼接字符串使用 ||
语法:字符串1||字符串2||字符串3.....
SQL:select first_name||last_name
from s_emp;
练习:查询所有员工的全名?
要求:姓氏和名字之间使用“-”分割。
select first_name||'-'||last_name
from s_emp;
concat:字符串拼接
select first_name||last_name
from s_emp;
等同于:
select concat(first_name,last_name)
from s_emp;
5.查询结果起别名
1)查询结果可以看作是一张表
2)这张表中的字段名取决于
select关键字后面定义的内容(默认)。
四种方式:
1)select 字段 别名 from 表名;
2)select 字段 as 别名 from 表名;
3)select 字段 "别名" from 表名;
4)select 字段 as "别名" from 表名;
方式1和方式2没区别。
例如:查询所有员工的id以及12个月的薪水?
并且12个月的薪水显示结果为Sal?
select id,salary*12 as "Sal"
from s_emp;
加双引号和不加双引号的区别:
在Oracle数据库中,查询的结果字段名默认
为全部大写字母。
如果需要使用特定的格式(例如包含小写字母)
就需要把别名用双引号包含。
6.设置查询结果的显示格式
column 修改字段显示格式
简写为col
语法:
column/col 字段名 format 格式;
例如:
把last_name字段设置为显示15个字符长度。
col last_name format a15;
a:代表要处理的数据是字符类型。
15:要显示的长度。
字段名不是特指某张表中的某个特定字段。
而是指查询结果字段。
注:例题、例题中的表格是上课时插入的表格
练习题:
1)查询员工的工资和last_name,对工资进行升序排列
select salary,last_name
from s_emp
order by salary asc;
2)查询员工的工资和last_name,对last_name进行降序排列。
select salary,last_name
from s_emp
order by last_name desc;
字符类型根据首个字母的字典顺序。ASCII码排序
65-90 A-Z 97-122 a-z
3)查询员工的工资和last_name,先对salary进行降序排列,再对last_name进行升序排列。
select salary,last_name
from s_emp
order by salary desc,last_name asc;
4)请举例说明空值的排序规则
空值在排列时视为无限大。
所以在降序排列中空值排在最前。
在升序排列中空值排在最后。
5)查询41号部门员工的信息?;
select id,last_name,salary,dept_id
from s_emp
where dept_id = 41;
6)查询工资大于1000的员工的信息?
select id,last_name,salary
from s_emp
where salary > 1000;
7)查询工资大于1000小于1500员工的信息,
使用两者方式来做?
a)select id,last_name,salary
from s_emp
where salary>1000 and salary<1500;
b)select id,last_name,salary
from s_emp
where salary between 1000 and 1500;
8)查询41或者42部门员工的信息,
使用两者方式来做?
a)select id,last_name,salary
from s_emp
where dept_id = 41 or dept_id = 42;
b)select id,last_name,salary
from s_emp
where dept_id in(41,42);
9)查询last_name包含n的员工的信息?
select id,last_name
from s_emp
where last_name like '%n%';
10)查询last_name包含n或者N的员工的信息?
select id,last_name
from s_emp
where last_name like '%n%'
or last_name like '%N%';
方法二:
select id,last_name
from s_emp
where upper(last_name) like '%N%';
select id,last_name
from s_emp
where lower(last_name) like '%n%';
upper函数:可以把指定字符串转换成全部大写的形式。
11)查询last_name第二个字母为g的员工的信息?
select id,last_name
from s_emp
where last_name like '_g%';
12)查询last_name最后一个字母为o的员工的信息?
select id,last_name
from s_emp
where last_name like '%o';
13)查询last_name以N开头的员工的信息?
select id,last_name
from s_emp
where last_name like 'N%';
14)先插入这条数据
insert into s_emp(id,last_name)
values(999,'_briup');
commit;
然后查询以_开头的员工的信息?
select id,salary
from s_emp
where last_name like 'a_%' escape 'a';
15)找出部门41中所有经理和部门43中的所有办事员的详细资料
职称字段为:Title
经理职称为:Warehouse Manager
办事员的职称为:Stock Clerk
select id,last_name,salary,dept_id
from s_emp
where dept_id=41
and title='Warehouse Manager'
or dept_id=43 and title='Stock Clerk';
Oracle上课学习笔记<1>的更多相关文章
- Oracle RAC学习笔记:基本概念及入门
Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章] oracle 10g real applica ...
- Oracle RAC学习笔记01-集群理论
Oracle RAC学习笔记01-集群理论 1.集群相关理论概述 2.Oracle Clusterware 3.Oracle RAC 原理 写在前面: 最近一直在看张晓明的大话Oracle RAC,真 ...
- Oracle RAC学习笔记02-RAC维护工具集
Oracle RAC学习笔记02-RAC维护工具集 RAC维护工具集 1.节点层 2.网络层 3.集群层 4.应用层 本文实验环境: 10.2.0.5 Clusterware + RAC 11.2.0 ...
- [Oracle]OWI学习笔记--001
[Oracle]OWI学习笔记--001 在 OWI 的概念里面,最为重要的是 等待事件 和 等待时间. 等待事件发生时,需要通过 P1,P2,P3 查看具体的资源. 可以通过 v$session_w ...
- Oracle基础学习笔记
Oracle基础学习笔记 最近找到一份实习工作,有点头疼的是,有阶段性考核,这...,实际想想看,大学期间只学过数据库原理,并没有针对某一数据库管理系统而系统的学习,这正好是一个机会,于是乎用了三天时 ...
- Oracle cursor学习笔记
目录 一.oracle库缓存 1.1.库缓存简介 1.2.相关概念 1.3.库缓存结构 1.4.sql执行过程简介 二.oracle cursor 2.1.cursor分类 2.2.shared cu ...
- oracle从零开始学习笔记 三
高级查询 随机返回5条记录 select * from (select ename,job from emp order by dbms_random.value())where rownum< ...
- Oracle数据库学习笔记
创建表的同时插入数据:create table zhang3 as select * from zhang1;create table zhang3(id,name) as select * from ...
- oracle从零开始学习笔记
查询现有数据库:select name from V$database; 解锁用户scott:alter user scott account unlock; 普通用户连接:conn scott 默认 ...
随机推荐
- static关键字_1
static关键字 1.在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所以对象来说,static成员变量只有一份. 2.用static声 ...
- javaIO流(一)--File类的基本使用
一.File文件操作类 在java语言中提供有对于文件操作系统的支持,这个支持就在java.io.File类中进行了定义,也就是说在整个java.io包中File类是唯一一个与文件本身操作有关的类(创 ...
- Qt 程序在 Windows 下的发布
本文讨论在 Windows 平台下编译成功的 Qt 程序,如何在未配置 Qt 开发环境的 Windows 平台下独立运行的方法. 经过验证发现,在 Ubuntu 平台下编译成功的程序可在未安装 Qt ...
- 一个spark streaming的黑名单过滤小例子
> nc -lk 9999 20190912,sz 20190913,lin package com.lin.spark.streaming import org.apache.spark.Sp ...
- 04-初始mysql语句
本节课先对mysql的基本语法初体验. 操作文件夹(库) 增 create database db1 charset utf8; 查 # 查看当前创建的数据库 show create database ...
- python发送邮件,文件后缀变成了bin
问题:在用python做自动化测试时,将html测试报告在邮件中添加文件发送的过程中,发现发送成功后,文件的后缀为.bin 解决方法: 加一行代码 msg_att["Content-Disp ...
- poj Drainage Ditches(最大流入门)
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 85250 Accepted: 3316 ...
- 44.和为S的两个数字
题目描述: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 思路分析: 数组是递增排序的,我们先将数组遍历一遍 ...
- C# 编程--数组
数组 可以帮我我们一次声明存储多个相同类型的变量.用来解决同一类大量数据在内存存储和运算的功能特点:连续.同一类数据数组定义==>赋值==>取值 定义: int[] n ...
- Linux下创建动态库与使用
参考文章:dll和so文件区别与构成:http://www.cnblogs.com/likwo/archive/2012/05/09/2492225.html 动态库路径配置- /etc/ld.so. ...