EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
EXISTS 指定一个子查询,检测 行 的存在。
NOT EXISTS 的作用与 EXISTS 正好相反。如果子查询没有返回行,则满足了 NOT EXISTS 中的 WHERE 子句。
例:select * from 表名 where exists(select null) 等同于: select * from 表名
(1)用于将已知字段换做另一种表达形式
SELECT CASE SEX WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END FROM STUDENT或 SELECT CASE WHEN SEX='1' THEN '男' WHEN SEX='2' THEN '女' ELSE '其他' END FROM STUDENT
(2)完成不同条件分组
SELECT SUM(population),
CASE country WHEN '中国' THEN '亚洲'
WHEN '印度' THEN '亚洲'
WHEN '日本' THEN '亚洲'
WHEN '美国' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END FROM Table_A GROUP BY
CASE country WHEN '中国' THEN '亚洲'
WHEN '印度' THEN '亚洲'
WHEN '日本' THEN '亚洲'
WHEN '美国' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END;
(3)根据所定条件去更改数据
UPDATE PERSON SET salary = salary * 1.2 WHERE salary >= 5000;(员工5000以上的涨百分之二十工资)
distinct跟在select后面,代表去除重复的,这个重复是整体重复的。 select 子句后面指定要查询的列 from 后面跟要查询的表
在Oracle数据库内有一种特殊的表Dual。Dual表是Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select中。Dual表由Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表。这个表里只有一列DUMMY,该列定义为VARCHAR2(1)类型,有一行值X。从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次。
查询当前系统时间
select sysdate from dual
语法:
round(number,digits)
参数:
number,要四舍五入的数,digits是要小数点后保留的位数
如果 digits 大于 0,则四舍五入到指定的小数位。
如果 digits 等于 0,则四舍五入到最接近的整数。
如果 digits 小于 0,则在小数点左侧进行四舍五入。
如果round函数只有参数number,等同于digits 等于 0。
返回值:
四舍五入后的值
举例:
round(3.1415926,2)=3.14;
round(3.1415926,3)=3.142;
select round(193,-2)from dual; 200
select round(193,-1)from dual;190
select round(193,-3)from dual;0
返回值:
如果第一个参数 非空, 那么直接返回第一个参数, 忽略第二个参数。
如果第一个参数 是 空( IS NULL), 那么返回第二个参数。
使用WITH AS 提高性能嵌套
简单来说定义一张临时表来填充需求数据,在去查询一定条件的数据
with
A as
(
select CountryRegionCode from person.CountryRegion where Name like '李%'
)
select * from person.StateProvince where CountryRegionCode in (select * from A)
要添加字符靠近列名的那一边需要加||,并且要添加的字符串需要用单引号
select ‘找到的id为:’||id||’ 找到的名字为’||last_name as Name from s_emp;
select upper('daxie') from dual ;输出结果DAXIE
select initcap(hELLO) from dual ;输出结果 HELLO
SELECT CONCAT ('SUPPER','MAN') FROM DUAL ;输出结果SUPPERMAN
select substr('hellworld',n,m) from dual
从n字符开始截取后m位字符
select length('helloworld') from dual:输出结果10