查询
select *|字段名|表达式 from 表名 [where 条件 [order by 字段名]]
SQL语句一般对大小写不敏感,通常SQL关键字使用大写,非SQL关键字使用小写
oracle 支持的数据类型:字符型,数值型,日期时间型,大对象型,伪列型
算数表达式
oracle中只有 + - / * 四个。
select name,salary+500 from employees;
select name, salary*12+500 from employees;
字段别名
可以使用as关键字,别名中有空格或者特殊字符或者大小写敏感要放在单引号中
as关键字,可写可不写,不做强制要求。但是写上的话阅读性较好。
select first_name 'Name', salary*12+500 'Yearly Salary' from employees;
select first_name as 'Name' from employees;
连字运算符
||
select first_name || last_name as 'Name' from employees;
select first_name || ' ' || last_name as 'Name' from employees;
去除重复行
使用distinct关键字
select distinct xxx from table_name;
在返回结果中除去相同的行。
限定返回行
where子句
select name from employees where id=5;
select name from employees where last_name='IT';
值得注意的是,SQL语句是不区分大小写的,但是where比较是区分大小写的
select name from employees where id >= 20;
常用的比较条件:=, >, <, >=, >=, <>, !=, ^=后面三个可以认为是不等于
between...and..条件
select name from employees where id between 10 and 20;
in条件
select name from employees where id in(6, 9);
select name from employees where id in('列名1', '列名2, ...);
满足条件中的一个就行。
like 条件
%代表一个或多个字符,_ 代表一个字符
select name from employees where name like '%d_';
当确实需要 %和_ 这两个符号时,使用 escape
select name from employees where name like '%d$_%' escape '$';
这个表示找包含 d_ 字符的名字, escape 的 '$' 表示不将它后面的字符看做通配符
null 条件
分为 is null, is not null, 判断null 不能使用 = ,因为null不属于任何值。
select name from employees where last_name is not null;
逻辑条件
AND OR NOT,为别为与,或,非
select name from employees where id=5 and salary >= 20000;
排序
order by 子句
必须位于SQL语句的最后面。要指定一个表达式,一个字段名,
作为排序条件。排序方式有ASC(升序, 默认), DESC(降序)。
select * from employees order by id;
select * from employees order by id desc;
使用别名进行排序
select last_name as 'Name' from employees order by Name desc;
使用序号进行排序
select last_name, first_name, id from employees order by 3;
3 代表 id 字段名
多重排序
select first_name, last_name, id from employees order by id, last_name desc;
在以id为升序排列的基础上,进行以last_name为降序排序。