查询
1、基本查询语句(查询结果的顺序是按照创建表的顺序排列的)
SELECT [DISTINCT] column_name1,...|*FROM table_name [WHERE conditions]
DISTINCT:不显示重复的记录。
2、在SQL*PLUS中设置查询结果的格式
1、更改查询后结果显示的字段名(原表不变)
COL|COLUMN column_name HEADING new_name;
2、设置结果显示的格式
COL|COLUMN column_name FORMAT dataformat;
注:dataformat为显示值的具体格式,字符类型的值只能设置其显示的长度(设
置字符类型用a开头后面指定长度)
eg:col table_name format a10;
数值类型用‘9’代表一位数字(可以加入¥$等符号)
eg:col table_name format 999.99;
3、清除设置的格式
COL|COLUMN column_name CLEAR;
3、查询表中所有字段以及指定字段
查询所有字段 select * from table_name;
查询指定字段 select column_name1,column_name2,..fromtable_name;
4、给查询结果字段设置别名(AS可以省略,使用空格隔开原字段名和新字段名即可)
SELECT column_name AS new_name,... FROM table_name;
5、运算符和表达式
表达式:由操作数和运算符组成
Oracle中的操作数可以有变量、常量和字段。
运算符:
算术运算符 +、-、*、/
比较运算符>、>=、<、<=、=、<> 、!=通常在WHERE后的判断条件
逻辑运算符(按优先级顺序依次递减)not、and、or
注:比较运算符的优先级高于逻辑运算符
6、带条件查询
1、单一条件查询
SELECT * FROM table_name WHERECONDITIONS;
2、多条件查询
SELECT * FROM table_name WHERE condition1[AND|OR|NOT] condition2;
7、模糊查询
通配符的使用(_、%) 一个_只能代表一个字符,%可以代表0到多个字符。
SELECT * FROM table_name WHEREcolumn_name LIKE'%xx%';
8、范围查询
1、BETWEEN AAND B (从A值到B值之间,A<B)
SELECT * FROM table_name WHEREcolumn_name BETWEEN A AND B;
2、IN|NOT IN(IN后面的值并不是一个范围,而是具体的值的集合)
SELECT * FROM table_name
WHERE column_name IN|NOTIN('value1','value2','value3',...);
9、对查询结构排序(根据某个(多个)字段进行升序ASC|降序DESC排列) ASC可省略。
SELECT * FROM table_name
[WHERE conditions] ORDER BY column_name1[ASC | DESC],....;
10、case...when语句的使用(根据查询结果字段不同的值显示不同的结果)
1、CASEcolumn_name WHEN value1 THEN result1,...[ELSE result] END;
eg:
SELECT column_name1,CASEcolumn_name1
WHEN 'A' THEN 'AAA'
WHEN 'B' THEN 'BBB'
ELSE 'XXX'
END AS column_name2 from table_name;
注:当column_name1的值为A时,column_name2的值取AAA,
当column_name1的值为B时,column_name2的值取BBB,
否则,column_name2的值为XXX,
2、CASE搜索模式
CASE WHEN column_name=value1
THEN result1,...[ELSE result] END;
eg:
SELECT column_name1,CASE WHENcolumn_name1='A' THEN 'AAA'
WHENcolumn_name1='B' THEN 'BBB'
ELSE'XXX' END AS column_name2
fromtable_name;
11、decode函数的使用(对字段当中的值进行一个条件的判断)
DECODE(column_name,value1,result1,...,defaultvalue)
eg:
SELECTcolumn_name1,DECODE(column_name1,'A','AAA','B','BBB','XXX')
AS column_name2 from table_name;
注:当column_name1的值为A时,column_name2的值为AAA,当column_name1
的值为B时,column_name2的值为BBB。