1、 oracle端口号修改问题
如果用户要修改oracle的端口号需要超级管理员进行登录
登录的口令:sys
登录的密码:root 是设置的密码
连接的方式:sysDBA模式
第一步:获取端口号:
SQL> select dbms_xdb.getHTTPPort from dual;
GETHTTPPORT
-----------
8080
第二步:设置端口号:
SQL> exec dbms_xdb.setHTTPPort(8088);
PL/SQL procedure successfully completed
第三步:重新获取
SQL> select dbms_xdb.getHTTPPort from dual;
GETHTTPPORT
-----------
8088 //在这里发现oracle的端口号已经被修改了
2、 where子句
第一:比较运算符:
操作符 | 含义 |
= | 等于 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
<>、!= | 不等于 |
案例:
1、 查询员工的姓名等于simth的员工信息
SQL> select * from emp where ename ='SMITH'; //注意字符与日期比较加单引号
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
2、 查询薪资大于2975的员工信息
SQL> select * from emp where sal>2975;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7788 SCOTT ANALYST 7566 1982-12-9 3000.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
3、 查询薪资大于等于2975的员工信息
SQL> select * from emp where sal>=2975;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7788 SCOTT ANALYST 7566 1982-12-9 3000.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
4、 查询薪资小于500的员工信息
SQL> select * from emp where sal<500;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
2222 test test 7369 1992-12-12 100.00 100.00 20
5、 查询奖金小于等于500的员工信息
SQL> select * from emp where comm<=500;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
2222 test test 7369 1992-12-12 100.00 100.00 20
6、 查询奖金不等于500的员工信息
SQL> select * from emp where comm<>500; //这里采用的是<>
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
2222 test test 7369 1992-12-12 100.00 100.00 20
SQL> select * from emp where comm !=500; //这里采用的是!=
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
2222 test test 7369 1992-12-12 100.00 100.00 20
第二:其它的比较运算符
操作符 | 含义 |
between 值1 and 值2 | 在两个值之间(包含边界但值2>值1) |
In(set) | 比配(set)中任意一个(但(set)最大值为1000) |
Like | 模糊匹配查询 |
Is null | 空值 |
案例:
1、 查询员工的薪资在2975到5000之间的员工信息
SQL> select * from emp where sal between 2975 and 5000; //包含边界值
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7788 SCOTT ANALYST 7566 1982-12-9 3000.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
2、 查询部门在10,20的所有员工信息
SQL> select * from emp where deptno in (10,20);
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7782 CLARK MANAGER 7839 1981-6-9 2450.00 10
7788 SCOTT ANALYST 7566 1982-12-9 3000.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7876 ADAMS CLERK 7788 1983-1-12 1100.00 20
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
7934 MILLER CLERK 7782 1982-1-23 1300.00 10
2222 test test 7369 1992-12-12 100.00 100.00 20
3、 模糊比配查询
选择条件可以包含字符或数字:
a) % 代表零个或多个字符(任意个字符)。
S% :代表是s字符开头
%S:代表是S字符结尾
%S%:代表是包含S字符
b) _ 代表一个字符。
_S:代表第二个字符是S的。
c) %与_同时使用的情况
_s%第二个字符为S的匹配的
d) 可以使用 ESCAPE 标识符 选择‘%’和 ‘_’ 符号。 回避特殊符号的:使用转义符。例如:将[%]转为[/%]、[_]转为[/_],然后再加上[ESCAPE ‘/’] 即可
案例:
3.1 查询员工名称以S字符开头的员工信息
SQL> select * from emp where ename like 'S%';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7788 SCOTT ANALYST 7566 1982-12-9 3000.00 20
3.2 查询员工名称以S字符结尾的员工信息
SQL> select * from emp where ename like '%S';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7876 ADAMS CLERK 7788 1983-1-12 1100.00 20
7900 JAMES CLERK 7698 1981-12-3 950.00 30
3.3 查询员工名称含有S字符的员工信息
SQL> select * from emp where ename like '%S%'; //S字符可以在任何位置
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7788 SCOTT ANALYST 7566 1982-12-9 3000.00 20
7876 ADAMS CLERK 7788 1983-1-12 1100.00 20
7900 JAMES CLERK 7698 1981-12-3 950.00 30
3.4 查询员工名称第二个字符是I并且员工名称字符长度为6的员工信息
SQL> select * from emp where ename like '_I____';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7934 MILLER CLERK 7782 1982-1-23 1300.00 10
3.5 查询员工名称第二个字符是I的员工信息
SQL> select * from emp where ename like '_I%'; //查询第二个字符为I,并且名称长度没有限制的员工信息
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7839 KING PRESIDENT 1981-11-17 5000.00 10
7934 MILLER CLERK 7782 1982-1-23 1300.00 10
3.6 查询员工名称
3.7 查询员工名称
4、 is (not) null 空值查询
4.1 查询员工的奖金为空的用户 (空值的理解:’’与0等都不是空值)
SQL> select * from emp where comm is null;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30
7782 CLARK MANAGER 7839 1981-6-9 2450.00 10
7788 SCOTT ANALYST 7566 1982-12-9 3000.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7876 ADAMS CLERK 7788 1983-1-12 1100.00 20
7900 JAMES CLERK 7698 1981-12-3 950.00 30
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
7934 MILLER CLERK 7782 1982-1-23 1300.00 10
3333 test 1992-12-12 30
11 rows selected
4.2 查询员工的奖金不为空的用户
SQL> select * from emp where comm is not null;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30 //看这里有个0.0的值
2222 test test 7369 1992-12-12 100.00 100.00 20
备注:重点理解空值的含义
第三:逻辑运算符
操作符 | 含义 |
and | 逻辑并|与 |
or | 逻辑或 |
not | 逻辑否 |
案例:
1、 查询员工的薪资大于等于2000并且员工的名称中含有I字符的员工信息
SQL> select * from emp where sal>=2000 and ename like'%I%';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7839 KING PRESIDENT 1981-11-17 5000.00 10
2、 查询员工的薪资大于等于2000或者员工的名称中含有I字符的员工信息
SQL> select * from emp where sal >2000 or ename like'%I%';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30
7782 CLARK MANAGER 7839 1981-6-9 2450.00 10
7788 SCOTT ANALYST 7566 1982-12-9 3000.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
7934 MILLER CLERK 7782 1982-1-23 1300.00 10
3、 查询员工的职位job不在('CLERK','MANAGER','ANALYST')中的员工信息
SQL> select * from emp where job not in ('CLERK','MANAGER','ANALYST');
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7839 KING PRESIDENT 1981-11-17 5000.00 10
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
2222 test test 7369 1992-12-12 100.00 100.00 20
6 rows selected
总结:运算符的优先级
1 | 算术运算符 |
2 | 连接符 |
3 | 比较符 |
4 | Is[not] null 、like、 not in |
5 | Not between |
6 | Not |
7 | And |
8 | or |
备注:可以使用括号改变优先级顺序
3、 Order by子句排序
a) ASC(ascend): 升序
b) DESC(descend): 降序
重点:ORDER BY 子句在SELECT语句的结尾
1、 升序
2、 降序
3、 按别名排序
4、 多列排序
5、 可以使用不在SELECT 列表中的列排序