oracle数据库初步之查询

1.基本查询语句
SELECT[DISTINCT] column_name1,…|*FROM table_name
[WHERE conditions];
使用 distinct 不显示重复数据)

2.在SQLPLUS中设置格式
更改显示的字段名:COLUMN column_name HEADING new_name;
注意:COLUMN可以简写成COL.
设置结果显示格式:COLUMN column_name FORMAT dataformat;
注意:字符类型只能设置显示的长度,例如显示10个字符长度用a10,数值类型用“9”代表一个数字,例如显示4位数字,则格式为9999;如显示4位数字并加1位小数,则格式为9999.9,如需在数字前加$符号,则在9前加$符号,即$9999.9。
清除之前设置的格式:COLUMN column_name CLEAR;

3.查询表中的所有字段及指定字段
查询所有字段:select * from table_name;
查询指定字段:select column_name,… from table_name;

4.给字段设置别名(给字段设置别名是针对查询结果进行的,并没有更改字段的名字)
SELECT column_name AS new_name,…
FROM table_name;
注意:AS可以省略,用空格隔开原来的字段名和新字段名即可。

5.运算符和表达式
表达式=操作数+运算符。操作数可以有变量,常量和字段。
算数运算符(+,-,*,/)
比较运算符(>,>=,<,<=,=,<>)比较结果为true|false
逻辑运算符(and,or,not)

6.在SELECT语句中使用运算符
使用算数运算符
使用比较运算符
使用逻辑运算符
注意:不等于用!=或者<>表示
在查询语句中,使用算术运算法对字段进行运算,并不影响真正表中的数据,只有update可以

7.带条件的查询
单一条件的查询
多条件的查询
注意:优先级比较运算符>逻辑运算符,not>and>or。

8.模糊查询
通配符的使用(_,%):
一个_只能代表一个字符,一个%可以代表0到多个任意字符
使用LIKE查询:

查询以a开头的用户名:select * from users where usernamelike 'a%';
查询第二个字符为a 的用户名:select * fromusers where username like '_a%';
查询含有a的记录:select * from userswhere username like '%a%';

9.范围查询
BETWEEN...AND...
,查询的是一个闭合区间的结果,包含头也包含尾,beween小的and大的。
IN()/NOT IN(),括号中的为具体的值。
如查找工资在800到2000的(包括了800和2000):
select * from users where salary between 800 and 2000;
如果想要不包括800和2000这两个数,就可以这样写:
select * from users where salary not between 800 and 2000;
in/not in在和不在这些列举出来的数里面:
select * from users where username in('aaa','bbb');
select * from users where username not in('aaa','bbb');

10.对查询结果排序
SELECT…FROM…[WHERE…]
ORDER BY column1 DESC/ASC,…
注意:其中,DESC是降序排序,ASC是升序排序,默认情况下是升序排序;当按多个字段排序时,需要第一个字段重复时才按第二个字符排序;对于字符进行排序时,是根据字符的ASCII码进行的。

11.case..when语句的使用
CASE column_name
WHEN value1 THEN result1,…
[ELSE result] END;
如:select username,case username when 'aaa' then '计算机部' when 'bbb' then '市场部' else '其他部门' end as '部门' from users;
CASE
WHEN column_name=value1
THEN result1,...[ELSE result] END;
如:select username,case when username='aaa' then '计算机部门' when username='bbb' then '市场部门' else '其他部门' end as 部门from users;
select username,case when salary<800 then '工资低' whensalary>5000 then '工资高' end as 工资水平 from users;
注意:第二种case...when语句更灵活,表达式运算符可以更丰富
字段值为字符时,需要用单引号括起来,但是对于as后的别名,作为字段名,不需要单引号括起来

12.decode函数的使用
decode(column_name,value1,result1,…defaultvalue);
(可以不指定默认值,与case...when语句的第一种形式实现的效果相同)
例如:select username,decode(username,'aaa','计算机部门','bbb','市场部门','其他')as 部门 from users;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章