oracle查询
查询:
基本查询语句:select [Distinct] 列名 .. From 表名 [where condition]
FROM (可以多表查询)
WHERE 子句可带多个条件
DISTINCT 显示不重复数据
在SQL*PLUS中设置格式
1.更改显示的字段名:COLUMNS|COL column_name HEADING new_name
注:更改的是查询后结果中的字段名,而非表中的字段名
2.设置结果显示的格式:COLUMN|COL column_name FORMAT dataformat
设置【字符型】数据的格式:a开头,后面指定长度
设置【数值型】数据的格式:用“9”代表一位数字,如显示4位数字,则格式为9999;如显示4位数字并加1位小数,则格式为9999.9
3.清楚之前设置的格式:COLUMN|COL column_name CLEAR
例:
col 字段名 heading 别名;(指定字段名结果显示为别名)
col 字段名 format a10;(指定结果显示的字符长度)
显示位数用9表示一个数字 如 99.9代表两个整数,一位小数
col salary format 999.9 如果设置的长度超过长度 会显示#####
col salary format $9999.9 前面会带一个美元符号
col salary clear;清除格式
查询表中所有字段及指定字段:
1.查询所有字段:
select * from table_name;
2.查询指定字段:按顺序显示出来
select column1, ... from table_name;
给字段设置别名:
> select 字段名 as(可省略) 别名, ... from 表名;
去掉表中重复的数据:
> select distinct 字段名 as(可省略) 别名, ... from 表名;
运算符和表达式
1、表达式 = 操作数 + 运算符
2、oracle中的操作数可以是常量、变量和字段
3、oracle中的运算符:算数运算符(+,-,*,/)、比较运算符(>,<,=,>=,<=,<>)、逻辑运算符(and or not)
and:真真为真,其余为假 or:假假为假,其余为真
例如:
select id,username,salary+200 from users;(所有工资结果加200)
select username from users where salary>800 and salary<>1800.5;
注1:不等于用!=或者<>表示
注2:在查询语句中,使用算术运算法对字段进行运算,并不影响真正表中的数据,只有update可以
逻辑运算符的优先级:按not、and、or的顺序依次递减;
比较运算符的优先级高于逻辑运算符
模糊查询
1、通配符的使用:
一个_只能代表一个字符,一个%可以代表0到多个任意字符
2、查询以a开头的用户名:
select * from users where username like 'a%';
3、查询第二个字符为a 的用户名:
select * from users where username like '_a%'
BETWEEN...AND
可以把小的值放到BETWEEN后面大的值放到AND后面,表示从什么值到什么值之间。
范围查询
select * from users where salary between 800 and 2000;这个查询是一个闭合空间,包括800和2000
select * from users where salary not between 800 and 2000;查询不在800到2000之间。
对查询结果排序:
语法:SELECT [DISTINCT] column_name1,...* FROM table_name [WHERE conditions]
ORDER BY column_name1 DESC|ASC,...
其中,DESC是降序排序,ASC是升序排序,默认情况下是升序排序;当按多个字段排序时,需要第一个字段重复时才按第二个字符排序
case...when语句的使用
语法1:CASE column_name WHEN value1 THEN result1 ... [ELSE resultn] END;
语法2:CASE WHEN column_name=value1 THEN result1 ...[ELSE resultn] END;
注:value1、result1需要加单引号,表示字符串,当多个when...then...使用时,中间用空格隔开即可,不能用逗号隔开。
case...when 语句的使用([when后面跟的是判断的条件,then是条件为真是显示出来的东西]):
1、select username,case usersname when 'aaa' then '计算机部门'
when 'bbb' then '市场部门' else '其他部门' end as 部门
from users;
2、select username,case when username='aaa' then '计算机部门'
when username='bbb' then '市场部门' else '其他部门' end as 部门
from users;
*这个的用法就比较灵活*后面可以跟salary的条件。