您的位置:首页 > 数据库 > Oracle

(5)Oracle查询语句

2017-08-08 23:00 274 查看

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)


and
5>2and9<12结果为TRUE
两个结果都为true才为true,否则都是false;

or
5<3or9<4结果为false 两个结果都为假,结果才为假,其它都为true


not
not(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函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle