1、去除重复行
SELECT DISTINCT department_id FROM employees; 使用DISTINCT消除重复结果行
2、条件限制和排序
SELECT employee_id, last_name, job_id, department_id FROM employees WHERE department_id = 90 ;
SELECT last_name, salary FROM employees WHERE salary BETWEEN 2500 AND 3500
= 等于 > 大于 >= 大于等于 < 小于 <= 小于等于 <> 不等于 BETWEEN ...AND... 在两个值之间 IN(set) 在一个集合范围内 LIKE 匹配一个字符串样子,可以使用%通配符 IS NULL 是一个空值,注意不能使用 =NULL
3、单行函数
大小写转换函数:LOWER('SQL Course') sql course、 UPPER('SQL Course') SQL COURSE 、INITCAP('SQL course') Sql Course
字符串操作函数:CONCAT('Hello', 'World') HelloWorld、 SUBSTR('HelloWorld',1,5) Hello 、 LENGTH('HelloWorld') 10 、INSTR('HelloWorld', 'W') 6 、 LPAD(salary,10,'*') *****24000 、 RPAD(salary, 10, '*') 24000***** 、 TRIM('H' FROM 'HelloWorld') elloWorld 、 TRIM(' HelloWorld') HelloWorld 、 TRIM('Hello World') Hello World
数字操作函数:ROUND(45.926, 2) 45.93 、 TRUNC(45.926, 2) 45.92 、 MOD(1600, 300) 100
日期操作函数:MONTHS_BETWEEN ('01-SEP-95','11-JAN-94') 19.6774194 、
ADD_MONTHS ('11-JAN-94',6) 11-Jul-94
NEXT_DAY ('01-SEP-95','FRIDAY') 8-Sep-95
NEXT_DAY ('01-SEP-95',1) 3-Sep-95
NEXT_DAY ('1995-09-01',1) ORA01861:literal does not match format string
NEXT_DAY (to_date('1995-09-01','YYYY-MM-DD'),1) 3-Sep-95
LAST_DAY('01-FEB-95') 28-Feb-95
ROUND('25-JUL-95','MONTH') 1-Aug-95
ROUND('25-JUL-95' ,'YEAR') 1-Jan-96
TRUNC('25-JUL-95' ,'MONTH') 1-Jul-95
TRUNC('25-JUL-95','YEAR') 1-Jan-95
其他单行函数:NVL (expr1, expr2) 如果expr1为空,这返回expr2
NVL2 (expr1, expr2, expr3) 如果expr1为空,这返回expr3(第2个结果)否则返回expr2
NULLIF (expr1, expr2) 如果expr1和expr2相等,则返回空
COALESCE (expr1, expr2, ..., exprn) 如果expr1不为空,则返回expr1,结束;否则计算expr2,直到找到 一个不为NULL的值 或者如果全部为NULL,也只能返 回NULL 了
对于这里TO_DATE() ,TO_CHAT(),TO_NUMBER()就不详细说了,大家应该都知道
case语句:CASE expr WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr] END
DECODE函数: DECODE(col|expression, search1, result1 [, search2, result2,...,] [, default])