(5)Oracle查询语句

1.查询概述

我们会学习以下内容
1.基本查询语句
2.在SQL*plus中设置格式
3.查询表中的所有字段及指定字段
具体包括
给字段设置别名,针对的是查询结果进行的,而不是字段本身,不会更改字段的名字。
运算符和表达式
在select语句中使用运算符
带条件的查询
模糊查询
范围查询
对查询结果进行排序
case … when 语句
decode函数,类似case….when语句。

2.基本的查询语句

select [distinct] 字段名,...|* from 表名[where 条件];
distinct 关键字是不显示重复的记录

3.Oracle查询语句之在sql/plus中设置格式

如何设置查询结果的显示格式。
更改显示的字段名:COLUMN|COL column_name HEADING new_name
注:COL只是COLUMN的简写,另外这种更改只是改的查询后,显示的结果中的字段名,而非表中的字段名。
例子:COL username heading 用户名;

设置结果显示的格式:COLUMN|COL column_name FORMAT dataformat
注:字符类型的值只能设置它显示的长度。
例子:COL username format a10;,设置【字符型】数据的格式:a开头,后面指定长度。
数值类型用9代表一个数字,4个9就是显示4位数字。999.9,就是1位小数。
例子:col salary format 9999.9;如果设置成3位会出现一个什么结果,查询的结果能够满足该格式的会被输出,如果数值长度超过设置的长度,就会用####来代替。
我们还可以为数值类型加上美元符号,例子:col salary format $9999.9;

清除之前设置的格式,有些格式我们可能当时要用,用完之后不想再用了。column|col column_name clear;这样就改回去了。

4. Oracle查询语句之查询表中的所有字段及指定字段

查询表中的所有字段
select * from tablename;
查询指定字段
select column_name,... from tablename;

5.Oracle查询语句之给字段设置别名

给字段设置别名,仍然只是查询结果之中,不会真正更改表中字段的名字
select column_name1 as newname,column_name2 as newname,.... from tablename ;//as可省略,用空格隔开就可以
当值中有重复值是,为了显示不重复的值,重复值只显示一个结果,就将之前的distinct关键字加上就可以了。select [distinct] 字段名,...|* from 表名[where 条件];
例子:SELECT DISTINCT username as 用户名 from users;

6.Oracle 运算符和表达式

表达式=操作数+运算符
1.Oracle中的操作数可以有变量、常量和字段。
2.算术运算符(+,-,*,/)
比较运算符(>,>=,<,<=,=,<>),都是用在sql语句中where条件里的,返回的结果就是布尔类型的值,true false。
逻辑运算符(and,or,not)
and5>2and9<12结果为TRUE两个结果都为true才为true,否则都是false;
or5<3or9<4结果为false 两个结果都为假,结果才为假,其它都为true
notnot(9<4)结果为ture,9<4表达式结果为假,not就成真了。

7.Oracle 在select语句中使用运算符

使用算数运算符, 给工资+200,在查询中显示的结果+200,并不是改变表。
select id as 编号 username as用户名 salary+200 as 工资 from users;
使用比较运算符,通常都是出现在where语句后面,工资高于800元的记录。
select username from users where salary>800;
使用逻辑运算符,and,工资>800并且不等于1800.5,如果换成or就是符合其中一个条件即可。
select username from users where salary>800 and salary<>1800.5;

8.Oracle 带条件的查询

单一条件的查询,查询aaa的工资
SELECT salary from users where username='aaa';
多条件的查询,用到逻辑运算符来连接表达式
查询员工的姓名是aaa或者工资大于2000的员工信息
select * from users where username='aaa' or salary>2000;
查询员工的姓名是aaa或者工资800和2000之间的员工信息
select * from users where username='aaa' or (salary>800 and salary<=2000);
运算符是有优先级的,逻辑运算符的优先级按not、and、or的顺序依次递减。所以把上面的括号去掉也是可以的。比较运算符的优先级高于逻辑运算符。
NOT使用
select * from users where NOT (username='aaa');

9. Oracle 模糊查询

之前我们查询的用户名=’aaa‘,如果我们不知道用户名,只知道是以a来开头的,这种情况下就可以通过模糊查询来完成,关键字是LIKE,也可以把LIKE关键字规划到比较运算符中,得到的值也是布尔类型的。
通配符的使用(_ %),一个_只能代表一个字符,%可以代表0到多个任意字符。
使用LIKE查询:
假设以a开头的用户信息SELECT * FROM users where username LIKE 'a%;'
第二个字符是a的用户信息select * from users where username LIKE '_a%';
用户名当中含有a的用户信息select * from users where username LIKE '%a%';

10. Oracle 范围查询

例子查询800到2000之间的员工工资salary>=800 and salary<=2000,除了这个形式还可以使用什么。
可以使用BETWEEN….AND…关键字,小的值放在between后面,大的值放在and后面,它表示从什么值到什么值之间。
例子:SELECT * FROM users where salary between 800 and 2000;
注意:between…and…查询的结果是一个闭合区间,包含800和2000。
如果我们要查的工资不在800和2000之间
SELECT * FROM users where salary not between 800 and 2000;

IN后面代表的值不是一个范围而是一个具体的值|NOT IN
比如说要查询的用户名是aaa或者bbb的用户信息。
SELECT * FROM users where username in('aaa','bbb');

11.Oracle 对查询结果进行排序

对查询结果排序,order by这个关键字一般放在基本的查询语句最后出现的,之后要按哪个字段排序,就写上字段的名字,desc降序,asc升序,如果你想对多个字段进行排序,中间用逗号隔开就行了。
select ...from...[where...] order by column1 desc|asc,column2 desc|asc... //降序或升序
举例: id按降序排列select * from users orderby id desc;
多个字段进行排序select * from users orderby id desc,salary asc;,这样输出的结果salary要起作用,就必须在前一个排序存在相等序号的情况下。

12.case…when语句

case when语句的作用就是在我们的查询语句当中,可以根据不同的值输出不同的结果,语句中可以有多个值和结果。else result、是一个可选项,如果前面的结果都不满足是,如果你想给出一个结果就可以用到它,通常会放到select语句中。
第一种形式的应用
CASE 字段名 WHEN value1 THEN result1,WHEN value2 THEN result2,...[else result] END
例子,当我们的用户名是aaa的时候,我们就得出它是计算机部门,如果是bbb部门就市场部,其他的就显示其他部门

SELECT username,
case username when 'aaa' then '计算机部门',
when 'bbb' then '市场部门' else '其他部门' end as 部门 FROM users;

第二种形式的应用,case搜索的形式

case when column_name=value1 then result1,when column_name=value2 then result2,....[else result] end

例子:

when username='bbb' then '计算机部门' else '其他部门' end as 部门 FROM users;

第二种方式会比较灵活,员工的工资<800,显示工资低,>5000的显示员工工资高,第一种形式是无法写的,只能用第二种形式

select username,case when salary <800 then '工资低'
when salary>5000 then '工资高' end as 工资水平
from users;

13.decode函数的使用

decode (columnname , value1,result1,…,[defaultvalue]); 对字段的值进行条件判断,defaultvalue默认值,不写,如果前面的值不满足条件就会返回一个空值null。
例子:select username,decode(username,'aaa','计算机部门','bbb','市场部门','其他') as 部门 from users;

14.总结

用户与表空间:
如何查看登录用户:
show user命令
dba_users 数据字典
启用scott用户:alter user scott account unlook;
如何查看某个用户的默认表空间和临时表空间
表空间管理:创建、修改、删除表空间
表与约束:
数据类型:
字符型:char(n)、nchar(n)、varchar2(n)、nvarchar2(n)
数值型:number(p,s),float(n)
日期型:data、timestamp
其他类型:blob,clob
表操作:
对表结构的创建、修改、删除
对表中数据的操作:
添加数据INSERT
修改数据UPDATE
删除数据DELETE
约束:非空约束、主键约束、外键约束、唯一约束、检查约束
在创建表时设置约束
在修改表时设置约束
在创建表时删除约束
查询语句:
查询所有字段和制定字段
为字段设置别名
在查询语句中使用运算符和表达式
在查询语句中加入条件where
范围查询
模糊查询:LIKE关键字,通配符_和%
Case..when语句和decode函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值