内容发布更新时间 : 2024/12/27 11:07:16星期一 下面是文章的全部内容请认真阅读。
本文由我司收集整编,推荐下载,如有疑问,请与我司联系
SELECT
LAST_NAME,HIRE_DATE,MONTHS_BETWEEN(SYSDATE,HIRE_DATE) AS 月数 FROM EMPLOYEES;—-ADD_MONTHS():在日期上加上指定的月数
SELECT ADD_MONTHS(SYSDATE,24)FROM EMPLOYEES;—-NEXT_DAY():获 得指定日期下一个星期 X 的日期 SELECT
NEXT_DAY(SYSDATE,3)------这个 3 表示下一个星期二,从周天记为
1.FROM DUAL;SELECT NEXT_DAY(SYSDATE,’星期二’)FROM DUAL;—–类型转 换单行函数 —-自动转换:效率低
SELECT LAST_NAME,SALARYFROM EMPLOYEESWHERE SALARY 10000;—– 手动转换 1.字符串与日期可以相互转换 2.字符串与数字可以相互转换 3.日期与数 字不能相互转换
ORCLE 中日期的格式化(TO_DATE)可参考: cnblogs/ajian/archive/2009/03/25/1421063.html
—-TO_CHAR(D,F):将日期类型 D 根据模板 F 转换为字符类型的值 SELECT
LAST_NAME,TO_CHAR(HIRE_DATE,’YYYY-MM-DD’)FROM
EMPLOYEES;SELECT TO_CHAR(SYSTEM,’YYYY-MM-DD HH24:MI:SS DAY DY’) //24 表示 24 小时制,DAY 表示这个星期的第几天全写, //DY 是这周第几天 简写 FROM DUAL;SELECT TO_CHAR(SYSDATE,’D DD DDD’) // D 表示当周第几 天(周日为 1),DD 表示当月第几天,DDD 表示当年第几天。FROM DUAL;SELECT LAST_NAME,TO_CHAR(HIRE_DATE,’FMYYYY”年”MM”月”DD”日”‘)
//表示
以”XX 年 XX 月 XX 日”形式输出格式,FM 起到点去掉月份前面 0 的作用,如不加 FM,为 08 月,加 FM,为 8 月 FROM EMPLOYEES;—-查询所有星期二入职的员工 的 last_name,hire_date(格式如:1999-1-1 星期二)
SELECT LAST_NAME,TO_CHAR(HIRE_DATE,’FMYYYY-MM-DD DAY’)FROM EMPLOYEESWHERE
TO_CHAR(HIRE_DATE,’DAY’)=‘星期二’;SELECT
DAY’)FROM
LAST_NAME,TO_CHAR(HIRE_DATE,’FMYYYY-MM-DD
本文由我司收集整编,推荐下载,如有疑问,请与我司联系
EMPLOYEESWHERE TO_CHAR(HIRE_DATE,’D’)=‘3’;—–TO_CHAR(N,F):将数据 类型 N 根据模板 F 转换为字符类型的值 SELECT
TO_CHAR(25653.9874,’FM$999,999.00’),
TO_CHAR(25653.9874,’FML999,999.00’) //L 表示显示当地的货币符号,即为 oracle 产地的地方货币符号 FROM DUAL;—–TO_DATE(C,F):根据模板 F 将字符类型 C 转 换为日期类型的值。 SELECT DUAL;SELECT
TO_DATE(‘2017-1-27’,’YYYY-MM-DD’)-SYSDATEFROM TO_DATE(‘2017-1-27’,’YYYY-MM-DD’)FROM
DUAL;—–
TO_NUMBER(C,F):根据模板 F 将字符类型 C 转换为数字类型的值。
SELECT TO_NUMBER(‘$50,000.00’,’$99,999.00’)FROM DUAL;—–通用单行函数 —-NVL():当第一个参数不为 NULL,返回第一个参数。当第一个参数为 NULL,返 回第二个参数。两个参数的类型必须一致。—–SQL SERVER 中用 IFNULL()函数表 示
SELECT LAST_NAME,NVL(TO_CHAR(COMMISSION_PCT,’FM$0.00’),’没有佣 金’)FROM EMPLOYEES;—–关系数据库中,当算术运算中出现 NULL,结果一定为 NULL。 —-查询 employees 表中所有员工的 last_name,salary,commission_pct,年薪,年 收入(年薪+年薪*佣金) SELECT
LAST_NAME,SALARY,COMMISSION_PCT,SALARY*12
AS
年
薪,(SALARY*12)+(SALARY*12*NVL(COMMISSION_PCT,0)) AS 年收入 FROM
EMPLOYEES;—–分支选择:CASE 表达式,DECODE()函数 —-查询 employees 表 中所有员工的 last_name,job_id,salary,新工资。如果 job_id 是 IT_PROG 时,工资增 加 10%。如果 job_id 是 ST_CLERK 时,工资增加 15%。如果 job_id 是 SA_REP 时,工资增加 20%。其它职位工资不变。
SELECT LAST_NAME,JOB_ID,SALARY,CASEWHEN JOB_ID=‘IT_PROG’ THEN TO_CHAR(SALARY*1.1,’FM$999,999.00’)WHEN TO_CHAR(SALARY*1.15,’FM$999,999.00’)WHEN
JOB_ID=‘ST_CLERK’ JOB_ID=‘SA_REP’
THEN THEN
本文由我司收集整编,推荐下载,如有疑问,请与我司联系
TO_CHAR(SALARY*1.2,’FM$999,999.00’)ELSE ‘工资不变’END AS 新工资 FROM EMPLOYEES;—-只能判断是否相等
SELECT LAST_NAME,JOB_ID,SALARY,CASE JOB_IDWHEN ‘IT_PROG’ THEN TO_CHAR(SALARY*1.1,’FM$999,999.00’)WHEN TO_CHAR(SALARY*1.15,’FM$999,999.00’)WHEN
‘ST_CLERK’ ‘SA_REP’
THEN THEN
TO_CHAR(SALARY*1.2,’FM$999,999.00’)ELSE ‘工资不变’END AS 新工资 FROM EMPLOYEES;—-DECODE()函数:只能判断是否相等。 SELECT
LAST_NAME,JOB_ID,SALARY,DECODE(
‘ST_CLERK’,SALARY*1.15,
JOB_ID,
‘IT_PROG’,SALARY*1.1, SALARY)AS
‘SA_REP’,SALARY*1.2,
新工资 FROM EMPLOYEES;—–查询 employees 表中所有员工的
last_name,hire_date 入职那天是星期几(显示汉字),并按日期升序排序
SELECT LAST_NAME,TO_CHAR(HIRE_DATE,’YYYY-MM-DD’) AS 入职时 间,TO_CHAR(HIRE_DATE,’DAY’) AS
星期 FROM EMPLOYEESORDER BY
TO_CHAR(HIRE_DATE-1,’D’) ASC; //因为星期日是 1,要想按星期一最小来排序, 需要-1SELECT LAST_NAME,TO_CHAR(HIRE_DATE,’YYYY-MM-DD’) AS 入职时 间,TO_CHAR(HIRE_DATE,’DAY’)
AS
星期,TO_CHAR(HIRE_DATE,’D’)
AS
AFROM EMPLOYEESORDER BY CASEWHEN TO_CHAR(HIRE_DATE,’D’)=‘1’ THEN
7WHEN
TO_CHAR(HIRE_DATE,’D’)=‘2’
THEN
1WHEN
TO_CHAR(HIRE_DATE,’D’)=‘3’ THEN 2WHEN TO_CHAR(HIRE_DATE,’D’)=‘4’ THEN
3WHEN
TO_CHAR(HIRE_DATE,’D’)=‘5’
THEN
4WHEN
TO_CHAR(HIRE_DATE,’D’)=‘6’ THEN 5WHEN TO_CHAR(HIRE_DATE,’D’)=‘7’ THEN 6END ASC;—–视图 格式:
CREATE [OR REPLACE] VIEW 视图名 ASSELECT 语句;视图的作用 1.简化查询 2.提高数据库安全性
–视图中没有数据,视图的数据来自于表。 —–序列:产生一个数字。通常用于自动生成主键。
本文由我司收集整编,推荐下载,如有疑问,请与我司联系
CREATE SEQUENCE 序列名[INCREMENT BY integer] --序列每次增加 N/减少 N,默认为 1[START WITH integer] --超始值,默认为 0[ MAXVALUE integer| NOMAXVALUE
]
--最大值为 N/没有最大值(默认)[
MINVALUE
integer
|
NOMINVALUE ] --最小值为 N/没有最小值[ CYCLE | NOCYCLE ] --循环/不循环(默 认)[ CACHE integer | NOCACHE ] --当服务器启动时将序列的后 N 个值存入缓存中 (默认)/当服务器启动时不将序列的值存入缓存中[ ORDER | NOORDER ]注意:序 列的值不能 ROLLBACK —-序列的属性:
1.NEXTVAL:获得序列的下一个值,调用此属性时序列的值一
定发生改变。 2.CURRVAL:获得序列当前值。调用此属性时序列的值不变。 CREATE
SEQUENCE
STU_ID_SEQ;INSERT
INTO
STUDENTS(STU_ID,STU_NAME) VALUES(STU_ID_SEQ.NEXTVAL,’AA’);—–索 引:提高查询效率。降低增删改的效率。 特点: 自动创建:当表中有主键或唯一 约束时,Oracle 会为对应的列添加唯一索引。 手动创建: CREATE INDEX 索引 名 ON 表名(列名[,列名,……]);
CREATE INDEX EMP_NAME_INDEX ON EMPLOYEES(LAST_NAME); tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!