00-基础SQL-SELECT语句

 

DML(数据操作语言,增删查改)
DDL(数据定义语言,比如创建、修改或删除数据库对象)
DCL(数据控制语言,控制数据库的访问)

desc 表名:显示表结构
dual : 伪表

对于日期型数据,做 * 、/ 运算不合法;
包含空值的数学表达式的值都为空值;
别名使用双引号;

连接字符串使用:“ ||
日期与字符串只能在“单引号”中出现;
重复行:去重:distinct;


sql是一种语言;
sql*plus是一种环境,关键字可以缩写,如(desc、ed);

where紧跟from语句;

过滤与排序:
  过滤 :where
  字符串区分大小写;
  日期格式敏感 DD-MM-YYYY(抛弃),用to_char()转换;


赋值 :=
比较运算:字段名 : between ..... and ..... 两个之间,包含边界
in :等值列中的多个;
like:模糊查询;

 

转义字符:escape 如 '%#_%' escape '#';
is null / is not null; 为空/不为空
排序:order by 字段 asc(升序),desc(降序);


单行函数:只对一行进行变换,每行返回一个结果;
字符函数:
  Lower:转小写
  Upper:转大写
  Initcap:首字母大写,其它小写;

 

字符控制函数:
  concat:连接,如concat('Hello','World');
  substr('helloworld',1,4):1开始,输出4个;
  Length:长度;
  Instr('helloworld','l'):返回首次出现的位置,无则返回0;
  LRAD/RPAD : 左对齐/右对齐,不足位,作补;如 LRAD(salary,10,'*')
  trim('h' from 'helloword'):去除首尾h;
  replace('abcd','b','m'):将所有b都转为m;

 

数字函数:
  round 四舍五入;
  trunc 直接截断;
  MOD:取余;

 

日期:加一个数字或减一个数字,仍为日期;
日期相减为天数;
可以除以24来向日期加上或减去天数;

 

日期函数:
  months_between(sysdate,hire_date):两个日期相差月数;
  add_months :向指定日期加上若干月;add_months(sysdate,2);
  next_day :指定的日期下一个星期某对应的日期;如next_day(sysdate,'星期一');
  Last_day:本月后的一天;last_day(sysdate)-1:倒数第二天
  round:日期四舍五入;
  trunc:日期戒断;

 

转换函数:
  to_char(hire_date,'yyyy-mm-dd');转换为字符串;
  to_date('1990-01-01','yyyy-mm-dd')=hire_date;转换为日期
  to_number('$12345678.123','$000,000,000.00');前后对应;

 

通用函数:使用于任何数据类型,也适用于空值;
  NVL(EXP1,EXP2):如果exp1为空,值则为exp2;
  NVL2(EXP1.EXP2,EXP3):exp1不为空,返回EXP2 , 为空,返回exp3;
  NULLIF(EXP1,EXP2) : 相等返回null,不等返回exp1;
  COALESCE(EXP1,EXP2,EXP3.....):exp1为空,值则为EXP2,如果exp2为空,则一直往下...

条件表达式:
sql语言中使用if-then-else;
使用两种方式:
  ① case:
    case 某列 when ..... then .....else .....end 无标点符号;
    译:当某列的值为 某,则是 某值,否则 为某,结束;

eg:

  查询部门号为 10, 20, 30 的员工信息, 若部门号为 10, 则打印其工资的 1.1 倍, 20 号部门, 则打印其工资的 1.2 倍, 30 号部门打印其工资的 1.3 倍数;

SELECT last_name, job_id, salary,
       CASE job_id WHEN 'IT_PROG'  THEN  1.10*salary
                   WHEN 'ST_CLERK' THEN  1.15*salary
                   WHEN 'SA_REP'   THEN  1.20*salary
       ELSE      salary END     "REVISED_SALARY"
FROM   employees;

  

  ②decode:

    decode(变量,1,2,1,2);
    变量,为1时,值为2,依次往下,括号结束;

eg:  

SELECT last_name, job_id, salary,
       DECODE(job_id, 'IT_PROG',  1.10*salary,
                      'ST_CLERK', 1.15*salary,
                      'SA_REP',   1.20*salary,
                              salary)
       "REVISED_SALARY"
FROM   employees;

 

你可能感兴趣的:(00-基础SQL-SELECT语句)