1 COMMIT; 2 --查询表内所有内容 3 SELECT * FROM stu_info; 4 --查询部分列,并赋予别名 5 SELECT stu_id 学生标号,stu_name 学生姓名 FROM stu_info; 6 --以下两种方式可在图形化界面修改数据,在显示界面要解锁 7 --1、建议使用方法,可以多人同时使用 8 SELECT ROWID,stu_id,stu_name FROM stu_info; 9 --2、不建议使用,因为会占用表,其他人将不能使用 10 SELECT * FROM stu_info FOR UPDATE; 11 --合并语句的语法 12 merge into 副表 13 using 主表 on(主表.主键=副表.主键) 14 when matched then 15 更新语句 16 when not matched then 17 插入操作 18 --查询job列不重复的内容 19 SELECT DISTINCT job FROM emp; 20 --连接符||的使用 21 SELECT ‘姓名是: ‘ || ename || ‘.工作是:‘ || job as 个人信息 FROM emp; 22 --在查询语句中,添加新列 23 SELECT ename 姓名,sal 薪水,sal * 1.25 as 涨幅后的薪水 FROM emp; 24 --带有条件的查询语句 25 SELECT * FROM emp WHERE sal < 2000; 26 27 --查询工资大于1500而且有奖金的雇员信息 28 SELECT * 29 FROM emp 30 WHERE sal > 1500 31 AND comm IS NOT NULL; 32 --查询工资不大于1500而且有奖金的雇员信息 33 --方法一: 34 SELECT * 35 FROM emp 36 WHERE sal <= 1500 37 AND comm IS NOT NULL AND comm != 0; 38 --方法二: 39 SELECT * 40 FROM emp 41 WHERE not(sal > 1500) 42 AND comm IS NOT NULL AND comm <> 0; 43 --查询工资大于1500或者能有奖金的雇员信息 44 SELECT * 45 FROM emp 46 WHERE sal > 1500 47 OR comm IS NOT NULL; 48 49 --查询工资大于1500且小于3000的员工的信息 50 --方法一:用逻辑运算符 51 SELECT * FROM emp WHERE sal < 3000 AND sal > 1500; 52 --方法二:用BETWEEN...AND 53 SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000; 54 55 SELECT * FROM EMP; 56 --查询入职时间在1980/12/1至1981/6/1之间的员工信息 57 --方法一:用逻辑运算符 58 SELECT * FROM emp WHERE hiredate < to_date(‘1981-6-1‘,‘yyyy-mm-dd‘) AND hiredate > to_date(‘1980-12-1‘,‘yyyy-mm-dd‘); 59 --方法二:用BETWEEN...AND 60 SELECT * FROM emp WHERE hiredate BETWEEN to_date(‘1980-12-1‘,‘yyyy-mm-dd‘) AND to_date(‘1981-6-1‘,‘yyyy-mm-dd‘); 61 62 --IN语句的使用 63 SELECT * FROM emp WHERE empno NOT IN (7369,7469,7521); 64 --LIKE 语句的使用(模糊查询) %匹配0个或多个字符,_匹配一个字符 65 SELECT * FROM emp WHERE ename LIKE ‘%L%‘; 66 SELECT * FROM emp WHERE ename LIKE ‘_L%‘; 67 --查询语句如无必要,要避免使用* 68 --查询部门位置等于DALLAS的员工信息 69 SELECT * FROM DEPT; 70 SELECT * FROM emp WHERE deptno = 20; 71 SELECT e.*,d.* FROM emp e,dept d WHERE e.deptno = d.deptno and d.deptno = 20; 72 --通过子查询实现查询部门位置等于DALLAS的员工信息 73 SELECT * FROM emp WHERE deptno = (SELECT deptno FROM dept WHERE loc = ‘DALLAS‘); 74 --exists(类似in操作,在数据量较大时,性能优于in) 75 SELECT * FROM emp WHERE EXISTS (SELECT deptno FROM dept WHERE emp.deptno = dept.deptno AND loc = ‘DALLAS‘); 76 --对查询结果进行排序 77 SELECT * FROM emp; 78 SELECT * FROM emp ORDER BY empno DESC, ename DESC; 79 --员工薪资涨幅25%后按照涨幅后的薪资降序排列 80 SELECT e.*,e.sal*1.25 AS 涨幅后的薪水 FROM emp e ORDER BY 涨幅后的薪水 DESC; 81 --按照索引排序(列的顺序) 82 SELECT * FROM EMP ORDER BY 2; 83 --查询本机时间 84 SELECT sysdate FROM dual; 85 --将enmae的内容改为小写,以及首字母大写 86 SELECT ename,LOWER(ename) lowerEname,INITCAP(ename) initcapEname FROM emp; 87 --TRIM 函数的使用(删除字符串中的某个字符,只能有一个字符) 88 SELECT ename,TRIM(‘A‘ FROM ename) TrimEname FROM emp; 89 --CONCAT函数的使用,连接两个字符串,只能是两个 90 SELECT ename,job,CONCAT(ename,job) AS CAT FROM emp; 91 --SUBSTR函数的使用,截取指定开始位置和指定长度的字符串 92 SELECT ename,job,SUBSTR(ename,2,3) AS SUB FROM emp; 93 --LENGTH函数,返回字符串的长度 94 SELECT ename,job,LENGTH(ename) AS LEN1 FROM emp; 95 --INSTR函数,返回特定字符串在指定字符串的索引位置,若没有出现返回0 96 SELECT ename,job,INSTR(ename,‘AL‘) AS INS FROM emp; 97 98 --得到30号部门并且薪资降幅10%后无小数的员工信息 99 SELECT e.*,TRUNC(sal*0.9) 取整降薪 FROM emp e WHERE deptno = 30; 100 101 --练习 102 --1.查询员工工资大于800的 103 SELECT * FROM emp WHERE sal > 800; 104 --2.查询1981/6/9之前入职的员工信息 105 SELECT * FROM emp WHERE hiredate < to_date(‘1981-6-9‘,‘yyyy-mm-dd‘); 106 --3.查询奖金为空的员工信息(包含列:姓名,薪资,奖金) 107 SELECT ename,sal,comm FROM emp WHERE comm IS NULL; 108 --4.查询奖金不为空的员工信息(包含列:姓名,职位,薪资,奖金) 109 SELECT ename,job,sal,comm FROM emp WHERE comm IS NOT NULL; 110 111 --5.查询员工姓名为WARD 112 SELECT * FROM emp WHERE ename = ‘WARD‘; 113 114 --6.查询员工薪资为1200并且职位是SALESMAN 115 SELECT * FROM emp; 116 SELECT * FROM emp WHERE sal = 1200 AND job = ‘SALESMAN‘; 117 118 --7.查询1981/6/9到1981/10/9入职的员工信息(包含列:姓名,职位,薪资,奖金,入职日期) 119 SELECT ename,job,sal,comm,hiredate FROM emp WHERE hiredate >= to_date(‘1981-6-9‘,‘yyyy-mm-dd‘) AND hiredate <= to_date(‘1981-10-9‘,‘yyyy-mm-dd‘); 120 121 --8.查询员工薪资为1200或者职位是MANAGER 122 SELECT * FROM emp WHERE sal = 1200 OR job =‘MANAGER‘; 123 124 --9.查询名字不等于WARD员工信息 125 SELECT * FROM emp WHERE ename <> ‘WARD‘; 126 127 --10.查询1981/6/9到1981/10/9入职的员工信息(包含列:姓名,职位,薪资,奖金,入职日期)--使用between and 128 SELECT ename,job,sal,comm,hiredate FROM emp WHERE hiredate BETWEEN to_date(‘1981-6-9‘,‘yyyy-mm-dd‘) AND to_date(‘1981-10-9‘,‘yyyy-mm-dd‘); 129 130 --11.模糊查询like 131 SELECT * FROM emp WHERE ename LIKE ‘_L%‘; 132 133 --12.查询姓名第三个字母是R的员工信息 134 SELECT * FROM emp WHERE ename LIKE ‘__R%‘; 135 136 --13.查询以T开头的第四个字母为N的员工信息 137 SELECT * FROM emp WHERE ename LIKE ‘T__N%‘; 138 139 --14.按照员工的部编号排序,查询出的列名:姓名,薪水 140 --升序 141 SELECT ename,sal,deptno FROM emp ORDER BY deptno; 142 --降序 143 SELECT ename,sal,deptno FROM emp ORDER BY deptno DESC; 144 145 --15.查询部门编号为20的员工,并按照薪资的降序排列 146 SELECT * FROM emp WHERE deptno = 20 ORDER BY sal DESC; 147 148 --16.将所有员工的薪资降薪23%后保留1位小数后显示出来 149 --部分产生小数点 150 SELECT e.*,TRUNC(sal*0.7745,1) as 降薪 FROM emp e;
时间: 2024-10-20 13:39:11