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;