oracle学习-day02

    xiaoxiao2021-03-25  76

    直接写例子

    --DQL查询语句 --SELECT语句用来查询表中数据,一条SQL语句是由多个子句组成,一个子句有一个关键字加一系列内容组成。 --SELECT语句中必须包含的是两个子句,SELECT子句和FROM子句。 --SELECT子句用于指定要查询的内容(字段、函数、表达式),from子句用来指定数据来源*/ --查询所有数据 SELECT * FROM emp; --分别查询,限制条件deptno=30 SELECT ename,job,sal,deptno FROM emp WHERE deptno=30; --查询工资大于2000的员工信息 SELECT * FROM emp WHERE sal>2000; --查询所有员工的年薪 SELECT ename,sal,sal*12 FROM emp; --CONCAT函数:连接字符串, --要求->查询时两个字段名并在一起 SELECT CONCAT(ename,sal) FROM emp; --要求并在一起的格式 -->ename:sal SELECT CONCAT(CONCAT(ename,':'),sal) FROM emp; --连接字符串常用"||" -->ename:sal SELECT ename||':'||sal FROM emp; --LENGTH函数:字符串长度 SELECT ename, LENGTH(ename) FROM emp; --名字4个字母的员工 SELECT ename,length(ename) FROM emp WHERE LENGTH(ename)=4; --UPPER(大写),LOWER(小写),INITCAP(首字母大写) --dual:伪表,当查询的内容不是任何表中数据,可以用伪表代替 SELECT UPPER('hello world'),lower('HELLO WORLD'),INITCAP('hello world')FROM dual; --查询SCOTT员工的信息 SELECT ename,sal,deptno FROM emp WHERE ename=UPPER('scott'); --TRIM(去除字符串两侧指定字符),LTRIM,RTRIM SELECT TRIM('e' FROM 'eeeelisteee') FROM dual; --liat --LTRIM(去掉左边指定字符,'ets'包含一个都去掉) SELECT LTRIM('ssttestesteseettslistees','ets') FROM dual --listees --RTRIM SELECT RTRIM('setlistssetteessetst','ets') FROM dual --setli --LPAD,RPAD 补位函数 --LPAD(左补位)效果->右对齐 SELECT ename,sal,LPAD(sal,6,' ') FROM emp --RPAD(右补位)效果->左对齐 SELECT ename,sal,RPAD(sal,6,' ') FROM emp --LPAD,RPAD超位都截取左边 SELECT ename,sal,RPAD(sal,3,'$') FROM emp --SUBSTR函数:截取字符串 --SUBSTR(str,m,n) 截取str字符串从m开始连续截取n个字符,数据库中下标都是从1开始! SELECT SUBSTR('thinking in java',10,2) FROM dual --in --省略截取数量,或者截取数量超过实际内容都是截取到末尾 SELECT SUBSTR('thinking in java',10,100) FROM dual--in java --若位置m是负数,表示倒数位置开始截取,个数n不能为负数 SELECT SUBSTR('thinking in java',-7,2) FROM DUAL --in --INSTR:查看字符串的位置 --INSTR(str1,str2,m,n)查找str2在str1中的位置,m,n是可选项,分别表示 --m:从第几个字符开始查找 --n:第几次出现的位置 SELECT INSTR('thinking in java','in',4) FROM DUAL --6 SELECT INSTR('thinking in java','in',2,3) FROM DUAL --10 --数值函数 --ROUND(m,n):四舍五入,保留m到小数点后n位,n为0或者不指定这是保留整数 --n为负数这是保留到小数点前的位数 SELECT ROUND(45.678,2) FROM DUAL --45.68 SELECT ROUND(45.678,0) FROM DUAL --46 SELECT ROUND(45.678,-1) FROM DUAL --50 SELECT ROUND(45.678,-2) FROM DUAL --0 SELECT ROUND(55.678,-2) FROM DUAL --100 --TRUNC(m,n) 截取数字,参数作用与ROUND一致 SELECT TRUNC(45.678,2) FROM DUAL --45.67 SELECT TRUNC(45.678,0) FROM DUAL --45 SELECT TRUNC(45.678,-1) FROM DUAL --40 SELECT TRUNC(45.678,-2) FROM DUAL --0 --MOD(m,n)求余 SELECT ename,sal,MOD(sal,1000) FROM emp; --CEIL(n):向上取整,大于它的最小整数 SELECT CEIL(45.678) FROM DUAL --46 --FLOOR(n):向下取整,小于它的最大整数 SELECT FLOOR(45.678) FROM DUAL --45 --日期相关操作 --关键字SYSDATE:对应数据库一个内置函数,返回一个DATE类型的值,该值表示当前系统时间 --SYSTIMESTAMP:返回当前系统时间戳类型的值 SELECT SYSDATE FROM dual SELECT SYSTIMESTAMP FROM dual --日期转换函数 --TO_DATE()可以将一个字符串按照给定的日期格式解释为一个DATE类型的值 SELECT TO_DATE('2008-08-08 20:08:06','YYYY-MM-DD HH24:MI:SS')FROM dual --日期格式字符串中凡不是英文、符号、数字之外的其他字符都要使用双引号括起来 SELECT TO_DATE('2008年08月08日 20:08:06','YYYY"年"MM"月"DD"日" HH24:MI:SS')FROM dual --TO_CHAR():将日期按照指定的格式转换为字符串 SELECT TO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日" HH24:MI:SS') FROM dual --日期类型可以比较大小,越晚的越大;日期类型之间可以进行减法,差为相差的天数; --日期可以进行减加数字,等同于加减天数 --查看每个员工入职至今的天数 SELECT ename,SYSDATE-hiredate FROM emp --出生到现在活了多少天 SELECT SYSDATE-TO_DATE('1996-09-13','YYYY-MM-DD') FROM dual --'RR-MM-DD'和'YYYY-MM-DD'求完整的年份 SELECT TO_CHAR(TO_DATE('30-01-01','RR-MM-DD'),'YYYY-MM-DD') FROM dual --LAST_DAY(date) 查看给定日期所在月的月底 SELECT LAST_DAY(SYSDATE) FROM dual --add_months(date,i) 对给定日期加上指定的月,若i为负数,则减去 SELECT ename,ADD_MONTHS(hiredate,20*12) FROM emp --MONTHS_BETWEEN(date1,date2) 计算两个日期之间相差的月,计算是用date1-date2换算得到的 SELECT ename,MONTHS_BETWEEN(SYSDATE,hiredate) FROM emp --NEXT_DAY(date,i) 返回给定日期第二天开始一周内的周几的日期。i表示周几:1为周日,2为周一,以此类推 SELECT NEXT_DAY(SYSDATE,6) FROM dual --这周五 --LEAST,GREATEST 求最小值与最大值,参数至少一个 SELECT LEAST(SYSDATE,TO_DATE('2008-10-10','YYYY-MM-DD')) FROM dual SELECT GREATEST(SYSDATE,TO_DATE('2008-10-10','YYYY-MM-DD')) FROM dual --EXTRACT函数:提取指定日期中指定时间分量的值,date可以提取年月日,时间戳还可以提取时分秒 SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual SELECT ename,sal,hiredate FROM emp WHERE EXTRACT(YEAR FROM hiredate)>=1982 --创建表student CREATE TABLE student( ID NUMBER(4), NAME VARCHAR2(20), gender varchar2(5) ) --插入表数据 INSERT INTO student VALUES(1000,'李莫愁','girl') INSERT INTO student VALUES(1001,'林平之',NULL) INSERT INTO student(id,NAME) VALUES(1002,'张无忌') --查询表数据 SELECT * FROM student --修改id=1002 的gender为boy UPDATE student SET gender='boy' WHERE ID=1002 --在判断某个字段的值是否为空时,要使用IS NULL和IS NOT NULL判断,不能用‘=’判断为空 UPDATE student SET gender='boy' WHERE gender IS NULL --NULL的操作,NULL与字符串连接,等于什么都没做,NULL与数字计算,结果还是NULL SELECT ename,sal,comm,sal+comm FROM emp --空值函数 --NVL(a1,a2)若a1为NULL则函数返回a2,否则返回a1自身,所以该函数的作用将NULL值替换为非NULL值 SELECT ename,sal,comm,sal+NVL(comm,0) FROM emp --若该员工有奖金,则显示为‘有奖金’,奖金为NULL,则显示‘没有奖金’ --NVL2(a1,a2,a3),当a1不为NULL时,函数返回a2,a1为NULL时,返回a3 SELECT ename,sal,comm,NVL2(comm,'有奖金','无奖金') FROM emp SELECT ename,sal,comm,NVL2(comm,sal+comm,sal) FROM emp

    如有问题欢迎留言!

    转载请注明原文地址: https://ju.6miu.com/read-18063.html

    最新回复(0)