Oracle数据库开发SQL基础:06 查询语句

查询

  • 基本查询语句
  • 在SQL*PLUS中设置格式
  • 查询表中的所有字段及指定字段
  • 给字段设置别名(针对查询结果)
  • 运算符和表达式
  • 在SELECT语句中使用运算符
  • 带条件的查询、模糊查询、范围查询
  • 对查询结果进行排序
  • case … when语句的使用
  • decode函数的使用

1. 基本查询语句

SELECT [DISTINCT] column_name1,... | *		--DISTINCT 关键字可以去掉重复的数据
FROM table_name
[WHERE conditions];

在SQL*PLUS中设置格式
更改查询结果中的字段名:

COLUMN column_name HEADING new_name;		--COLUMN可以简写成COL

设置结果显示的格式:

COLUMN column_name FORMAT dataformat;		--字符类型只能设置显示的长度
例如,设置字符类型的显示长度为10:
col column_name format a10;
设置数值类型的数据可以用一个9代表一位数字,如显示一位小数:
col column_name format 9999.9;
清除之前设置的格式:
COLUMN column_name CLEAR;

查询表中的所有字段及指定字段
查询所有字段:

SELECT * FROM table_name;

查询指定字段:

SELECT column_name1,... FROM table_name;

给字段设置别名
设置别名只显示在查询结果中,不会影响实际表中的字段名。

SELECT column_name AS new_name,...
FROM table_name;

2. 在SELECT语句中使用运算符和表达式

运算符和表达式
表达式 = 操作数 + 运算符,在Oracle中操作数可以有变量、常量和字段。

  • 算数运算符: + , - , * , /
  • 比较运算符:> , >= , < , <= , = , <>
  • 逻辑运算符:and , or , not

在SELECT语句当中使用运算符

使用算术运算符
--在显示的查询结果中,将column_name2字段的所有值都加上200,不影响表中的数据
select column_name1, column_name2 + 200,... from table_name;
使用比较运算符
--查询column_name2字段的值大于700的记录的column_name1字段的值
select column_name1 from table_name where column_name2 > 700;
使用逻辑运算符
--查询column_name2大于70且不等于90的记录的column_name1字段的值
select column_name1 from table_name where column_name2 > 70 and column_name2 <> 90;

3. 带条件的查询

仍以之前使用的userinfo表为例进行说明。

  • 单一条件的查询
select salary from userinfo where username='Tom';
  • 多条件的查询
select * fomr userinfo where username='Kim' or salary > 1000;
select * from userinfo where username='Tom' or (salary > 800 and salary < 2000);

运算符的优先级:not > and > or,比较运算符的优先级高于逻辑运算符。

4. 模糊查询和范围查询

模糊查询(使用LIKE关键字)

  1. 通配符的使用
    _ : 一个下划线代表任意一个字符
    %:一个百分号代表多个任意字符
  2. 使用LIKE查询
--查询用户名以T开头的记录
select * from userinfo where username like 'T%';
--查询用户名第二个字符是o的记录
select * from userinfo where username like '_o%';
--查询用户名中含有m的记录
select * from userinfo where username like '%m%';

范围查询

  1. BETWEEN … AND(查询的结果是一个闭区间)
--查询工资在800到1000之间的记录
select * from userinfo where salary between 800 and 1000;
  1. IN/NOT IN(IN后面代表的不是一个范围,而是一个具体的值)
--查询用户名为Tom或者Kim的记录
select * from userinfo where username in('Tom', 'Kim');

5. 对查询的结果进行排序

--查询结果以column_name1,...等字段的值进行排序,DESC降序,ASC升序
SELECT ... FROM ... [WHERE]
ORDER BY column_name1 DESC/ASC,...;
--如果对多个字段要求按需排列,如:
select * from userinfo order by id desc, salary asc;
--结果中记录会先按id降序排列,而在id字段的值相等的记录中,salary按升序排列

6. case…when语句的使用

--当字段column_name的值为value1时,得到结果result1
CASE column_name
WHEN value1 THEN result1,...
[ELSE result] END;

例如:
select username, case salary when 1000 then '一级'
when 2000 then '二级' else '其他' end as 工资等级
from userinfo;

case…when语句还可以这么用:

CASE
WHEN column_name=value1
THEN result1,...[ELSE result] END;

--以上语句可以等价于
select username, case when salary=1000 then '一级' 
when salary=2000 then '二级' else '其他' end as 工资等级
from userinfo;
--第二种写法在when之后可以使用表达式

decode函数的使用

decode(column_name, value1, result1, ..., defaultvalue);
decode(salary, 1000, '一级', 2000, '二级', '其他') as 工资等级;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值