首页 > 代码库 > ORCEL基本语句(三)

ORCEL基本语句(三)

  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;

 

ORCEL基本语句(三)