从表中检索信息使用SELECT查询语句。
1,对单表执行select语句
select 列名[,列名…]
from 表名
2,如果选择输出一个表中的所有列,可使用*号:
select * from 表名
3,如果进行有条件检索,则使用where子句过滤行
select 列名[,列名…]
from 表名
where 过滤条件
eg:
select customer_id, first_name ,last_name from custoners where_id=2;
4,在Oracle中,每行记录都有一个行标识符,其列名为rowid
行标识符(rowid)列存储了该行记录的物理存储位置。rowid可用在select语句中,显示的结果是采用base-64编码的18位字符。rowid列通常称为伪列。所谓伪列,是指它可用select查询,但实际并未存储在表中,它是由数据库管理系统额外提供的一个列,该列不能插入、更新和删除。
eg
AAAAM1TAAAEAAAAGOAAC(伪列) 3 JIM WHITE 9OOOOO
此外还有rownum
000000 01 1010 0111 11 111100 000000 00
(A~Z,a~z,0~9,+,/)
5,行号rownum也是一个伪列,它返回每一行在结果集中的行号。
6,select子句中可使用算术表达式进行算术运算,包括加减乘除四则运算。
eg:
select p.* from products p; 命名products别名p
select p.*, p.price*0.85 from products p;价格进行折扣计算
7,使用as关键字为列指定别名。如果别名中含有空格,可使用双引号将别名引起来。
select 'role_04' as role_id, 'normal' as role_category from dual
8,字符串连接运算符||
检索顾客信息,输出时将first_name和last_name连接为一个字符串
9,空值
可在where子句中使用IS NULL过滤出具有空值的行。
注:不能使用=NULL进行判断,因为空值和任何值的比较结果都是false。但是 1=1 为true 用处很多
可在select子句中使用NVL(表达式,value)函数,当表达式为空值时,返回value值。
如果phone的值为空 则插入9999999
注 依然可以用逗号隔开同时为两个关键字的值赋值
10,使用DISTINCT禁止显示重复行
select distinct (product_type_id) from products;
选取列中的数值 且每个数值唯一
11,比较操作符
=,<>, !=,< ,> ,<= ,>=,ANY,SOME,ALL
等于 ,不等于,不等于
select *from customers where customer_id <>2;
使用ANY将一个值和列表中的值进行比较,只要有一个值满足条件,则输出该条记录;
使用ALL将一个值和列表中的值进行比较,在所有值都满足条件后才输出该条记录。
ANY和SOME具有相同的功能,但ANY更容易理解,语义更明确,应该使用ANY代替SOME。