**创建表student
CREATE TABLE STUDENT_GH( ID NUMBER(4),
NAME VARCHAR2(20), GENDER CHAR(1) )
**查看
DESC STUDENT_GH **插入
INSERT INTO STUDENT_GH
VALUES(1000,'李莫愁','F'); INSERT INTO STUDENT_GH
VALUES(1001,'林平之',NULL);--显示插入 INSERT INTO STUDENT_GH(ID,NAME)--隐身插入 VALUES(1002,'张无忌'); **查看内容
SELECT * FROM STUDENT_GH **修改性别
UPDATE STUDENT_GH SET GENDER =NULL COMMIT
**删gender为null的
判定是否为null是使用 is null 或 is not null DELETE STUDENT_GH WHERE GENDER IS NULL ***null的计算
null与字符串a拼接,结果是字符串a null与数字运算,结果是null **查看emp表中的工资加奖金 SELECT
ENAME,SAL,COMM,SAL+COMM FROM EMP_GH **空值函数
NVL(A1,A2)
若A1为null,则返回A2值,该函数作用就是将null值转变成非null值A2 **查看工资
SELECT ENAME,SAL,COMM,SAL+NVL(COMM,0) FROM EMP_GH **查看每个人的奖金情况,
有奖金就显示有奖金,没有奖金就显示没有奖金
NVL2(A1,A2,A3),如果A1不为null 返回 A2 ,为null返回 A3 SELECT
ENAME,COMM,
NVL2(COMM,'有奖金','没有奖金')
FROM EMP_GH
***TEST*********************
1:查询emp表中数据,列出一列,内容为名字与职位 显示格式:ename:JOB SELECT
ename||':'||JOB FROM EMP_GH SELECT
CONCAT(ENAME,CONCAT(':',JOB)) FROM EMP_GH
2:查看每个员工职位的字符个数 SELECT
JOB,LENGTH(JOB) FROM EMP_GH
3:将所有员工的名字以小写形式,与首字母大写形式 查询出来,第一列为小写形式,第二列为首字母大写 SELECT ename FROM EMP_GH
WHERE LOWER(eNAME)='ward' SELECT ename FROM EMP_GH
where INITCAP(ENAME)='Scott'
4:将字符串'aaaaaabaaaaa'中左右两边的a去除 SELECT
trim('a' FROM 'aaaaaaabbaaaaaa') FROM DUAL
5:显示每个员工的名字,要求显示10位,第一列左对齐效果,第二列 SELECT
RPAD(ENAME,10,' ') FROM EMP_GH SELECT
LPAD(ENAME,10,' ') FROM EMP_GH
6:截取字符串'DOCTOR WHO'中的'WHO' SELECT
SUBSTR('DOCTOR WHO',8,3) FROM DUAL
7:查看'DOCTOR WHO'中'WHO'的位置 SELECT
INSTR('DOCTOR WHO','WHO',4) FROM DUAL
右对齐效果 8:分别查看55.789四舍五入保留小数点后2位,整数位,十位后的 数字,显示成三列。 SELECT
ROUND(55.78,2), ROUND(55.78), ROUND(55.78,-1) FROM DUAL
9:分别查看55.789截取后保留小数点后2位,整数位,十位后的 数字,显示成三列。 SELECT
TRUNC(55.789,2), TRUNC(55.789), TRUNC(55.789,-1) FROM DUAL
10:查看每名员工工资百位以下的数字? SELECT
ENAME,SAL,MOD(SAL,100) FROM EMP_GH
11:查看每名员工从入职到今天一共多少天,若有小数则向上取整。 SELECT
ENAME,HIREDATE,
CEIL( SYSDATE-HIREDATE) FROM EMP_GH
12:查看从2008-08-08号到今天为止一共经历了多少天? SELECT
TRUNC(SYSDATE-TO_DATE('2008-08-08','YYYY-MM-DD')) FROM DUAL
13:将每名员工入职时间以例如: 1981年12月3日 的形式显示 SELECT
ENAME,JOB,
TO_CHAR(HIREDATE,'YYYY-MM-DD') FROM EMP_GH
14:查看每个员工入职所在月的月底是哪天? SELECT
LAST_DAY(HIREDATE) FROM EMP_GH
15:查看每名员工转正日期(入职后3个月) SELECT
ADD_MONTHS(HIREDATE,3) FROM EMP_GH
16:查看每名员工入职至今共多少个月? SELECT
MONTHS_BETWEEN(SYSDATE,HIREDATE) FROM EMP_GH
17:查看从明天开始一周内的周日是哪天? SELECT
NEXT_DAY(SYSDATE,1) FROM DUAL
18:查看82年以后入职的员工的入职日期,82年以前的按照 1982年01月01号显示。格式都是DD-MON-RR(默认格式) SELECT
ENAME,HIREDATE,
GREATEST(HIREDATE,TO_DATE('1982-01-01','YYYY-MM-DD')) FROM EMP_GH
19:查看每名员工的入职年份? SELECT
ENAME,HIREDATE,
EXTRACT(YEAR FROM HIREDATE) FROM EMP_GH
20:显示每个员工的总收入(工资加奖金),奖金为NULL的只看工资 SELECT
ENAME,SAL,COMM, SAL+NVL(COMM,0) FROM EMP_GH
21:使用NVL2实现20题的需求 SELECT
ENAME,SAL,COMM,
NVL2(COMM,SAL+COMM,SAL) FROM EMP_GH
*************************day03***********查询语******************************** 字句就是关键字+xx 列 SELECT enama SELECT 字段,表达式,函数 ****别名
在使用表达式或函数时,字段变长,可以使用除关键字以外的作为别名
添加方式,1.AS 别名 TO_CHAR(HIREDATE,'YYYY-MM-DD') AS HIERDATE
2.在表达式后空格加别名,别名不能有空格 TO_CHAR(HIREDATE,'YYYY-MM-DD') HIERDATE
3.要求区分大小写,使用双引号,且别名中间可以用空格 SELECT TO_CHAR(HIREDATE,'YYYY-MM-DD') \
句SELECT SELECT
SELECT ENAME,SAL*12 AS SAL,TO_CHAR(HIREDATE,'YYYY-MM-DD') AS HIREDATE FROM EMP_GH
SELECT ENAME,SAL*12 SAL,TO_CHAR(HIREDATE,'YYYY-MM-DD') HIREDATE FROM EMP_GH
SELECT ENAME,SAL*12 \ FROM EMP_GH
***WHERE 条件语句 >, < , >=,<=,<>(不等于),= 查找10号员工的信息, SELECT * FROM EMP_GH WHERE DEPTNO=10; 查找 销售人员的信息
SELECT ENAME,SAL,JOB FROM EMP_GH WHERE JOB='SALESMAN' 查工资高于2000
SELECT ENAME,SAL,JOB FROM EMP_GH WHERE SAL>2000
查部门不是10的信息
SELECT ENAME,SAL,JOB,DEPTNO FROM EMP_GH WHERE DEPTNO<>10
查找入职时间在1982-1-1之后的人员信息 SELECT ENAME,SAL,JOB FROM EMP_GH
WHERE HIREDATE ****AND OR 关键字 ,and的优先级高于or ,及先计算and 在计算or 满足条件 SAL>1000 或 DEPTNO<>10 SELECT ENAME,SAL,DEPTNO FROM EMP_GH WHERE SAL>1000 OR DEPTNO<>10 满足条件 SAL>1000 且 DEPTNO<>10 SELECT ENAME,SAL,DEPTNO FROM EMP_GH WHERE SAL>1000 AND DEPTNO<>10 工资大于1000,job是salesman 和 SELECT ENAME,SAL,JOB FROM EMP_GH WHERE SAL>1000 AND (JOB = 'SALESMAN' OR JOB = 'CLERK') ****LIKE 条件 可以进行模糊匹配字符串,支持两个通用符 %:0-多个字符串; _:单一的字符 查看第二个字符为A的 SELECT ENAME,SAL,JOB FROM EMP_GH WHERE ENAME LIKE '_A%' ***IN 和 NOT IN IN(LIST),NOT IN(LIST) JOB中包含'MANAGER'和'CLERK'的所有员工信息 SELECT ENAME,JOB,SAL FROM EMP_GH WHERE JOB IN ('MANAGER','CLERK')