ORACLE学习(二)

数据类型:

数值型 number 直接写 1234

字符型 char/varchar2 '字符内容'

日期型 date'年-月-日'

--限定查询

语法:

SELECT 要查的内容

FROM 数据来源

WHERE 限定条件

--限定条件可以有哪些???

1、比较大小的运算符

< = >= <= != <> --查询工资大于2000的员工的姓名和工资 SELECT ENAME,SAL FROM EMP WHERE SAL>2000;

--查询1981年之前入职的员工信息

SELECT *

FROM EMP

WHERE HIREDATE<DATE'1981-1-1';

--查询不是30部门的员工信息

SELECT *

FROM EMP

WHERE DEPTNO!=30;

--查询名字是SMITH的员工信息

SELECT *

FROM EMP

WHERE ENAME='SMITH';

--oracle语法关键字不区分大小写 但是匹配

--内容区分大小写

--查询1986年国庆节之后入职的员工信息

SELECT *

FROM EMP

WHERE HIREDATE>DATE'1986-10-1';

2、逻辑运算符

AND 并且 两边的条件必须同时满足

OR 或者 两边的条件满足任意一个即可

not 非/取反

<= < >= = != AND OR OR AND --查询工资大于2000并且是30部门的人 SELECT * FROM EMP WHERE SAL>2000 AND DEPTNO=30; -- 大于2000或者是30部门

SELECT *

FROM EMP

WHERE SAL>2000 OR DEPTNO=30;

--查询工资不大于2000的员工信息

SELECT *

FROM EMP

WHERE NOT(SAL>2000);

--查询20部门职位是MANAGER的员工信息

SELECT *

FROM EMP

WHERE DEPTNO=20 AND JOB='MANAGER';

--查询1981年入职的员工信息

SELECT *

FROM EMP

WHERE HIREDATE>=DATE'1981-1-1' AND HIREDATE<=DATE'1981-12-31';

--查询既不是10部门也不是20部门的员工信息

SELECT *

FROM EMP

WHERE DEPTNO!=10 AND DEPTNO!=20;

SELECT *

FROM EMP

WHERE NOT(DEPTNO=10 OR DEPTNO=20);

3、between 小值 and 大值

等价于 >=小值 AND <= 大值

--查询工资在2450-3000的员工信息

SELECT *

FROM EMP

WHERE SAL BETWEEN 2450 AND 3000;

--查询1987年上半年入职的员工信息

SELECT *

FROM EMP

WHERE HIREDATE BETWEEN DATE'1987-1-1' AND DATE'1987-6-30';

--查询职位是SALESMAN并且提成在1000-2000的员工信息

SELECT *

FROM EMP

WHERE JOB='SALESMAN' AND COMM BETWEEN 1000 AND 2000;

4、in(值1,值2,。。。)

等价于=值1 or =值2 or =值。。。

--查询员工编号是7788或者7369或者7654的员工信息

SELECT *

FROM EMP

WHERE EMPNO=7788 OR EMPNO=7369 OR EMPNO=7654;

SELECT *

FROM EMP

WHERE EMPNO IN(7788,7654,7369);

--查询职位不是MANAGER ANALYST SALESMAN 的员工信息

SELECT *

FROM EMP

WHERE NOT (JOB IN('MANAGER','ANALYST','SALESMAN'));

5、算数运算符 +- */ ()

--查询工资+500后大于2000的员工

SELECT *

FROM EMP

WHERE SAL+500>2000; SAL>2000-500; --推荐

6、空 is null /is not null

--查询没有经理的员工信息

SELECT *

FROM EMP

WHERE MGR IS NULL;

--查询没有提成的员工信息

SELECT *

FROM EMP

WHERE COMM IS NULL;

7、连接符 ||

把多个字段连接成一个字段 新生成的字段是字符类型

SELECT EMPNO,ENAME,SAL,EMPNO||'~'||ENAME||'~'||SAL

FROM EMP;

--查询20部门 工作是职员的员工信息

SELECT EMP.*,DEPTNO||JOB

FROM EMP

WHERE DEPTNO||JOB='20CLERK';

--查询10部门提成为空的员工信息

SELECT *

FROM EMP

WHERE DEPTNO||COMM=10;

SELECT *

FROM EMP

WHERE DEPTNO=10 AND COMM IS NULL;

--隐式转换

纯数字字符可以看成数字来使用 数字也可以看成字符串使用

SELECT *

FROM EMP

WHERE DEPTNO||COMM=10; =====> deptno||comm='10'

SELECT 123+456,123+'456','123'+'456','123+456'

FROM DUAL;

--模糊查询

语法:

SELECT 要查询的内容

FROM 数据来源

WHERE 列 LIKE'匹配内容'

通配符:

% 0个或多个字符

_ 任意单个字符

--查询emp中名字以A开头的

SELECT *

FROM EMP

WHERE ENAME LIKE'A%';

--查询emp中名字以A结尾的

SELECT *

FROM EMP

WHERE ENAME LIKE'%A';

--查询名字包含A的

SELECT *

FROM EMP

WHERE ENAME LIKE'%A%';

--查询名字的第二个字母是L的员工信息

SELECT *

FROM EMP

WHERE ENAME LIKE'L%';--查询名字的长度是4的员工信息SELECT *FROM EMPWHERE ENAME LIKE'';--查询名字以J开头长度为5的员工信息SELECT *FROM EMPWHERE ENAME LIKE'J_';

--查询名字以J开头S结尾的员工信息

SELECT *

FROM EMP

WHERE ENAME LIKE'J%S';

--查询名字既不包含S也不包含A的员工信息

SELECT *

FROM EMP

WHERE ENAME NOT LIKE'%S%' AND ENAME NOT LIKE'%A%';

优先级:

*/的优先级高于+-

连接符的优先级和+-一样

当优先级一样的时候 从左往右依次计算

SELECT 2+3||4,2||3+6

FROM DUAL;

优先级:

1、()

2、乘除

3、+-||

4、比较符

5、is null 、in、like

6、between and 7、not 8、and 9、or

注:可以使用括号改变优先级

不清楚优先级情况下+括号

--转义

对单引号的转移

1、双写

SELECT ' '' ',' '' '' " '

FROM DUAL;

2、q'{转义的内容}'

SELECT Q'{'}',Q'{' '}'

FROM DUAL;

--显示 A said :"B said 'let's go!' "

SELECT ' A said :"B said ''let''s go!'' "'

FROM DUAL;

SELECT Q'{ A said :"B said 'let's go!' "}'

FROM DUAL;

3、模糊查询中的转义(对%和_的转义)

语法: 列 like'匹配内容' escape '转义符'

注:一个转义符只能转义一个符号

SELECT * FROM A;

--查询name中包含_的行

SELECT *

FROM A

WHERE NAME LIKE '%_%' ESCAPE ''; --转义符号习惯用/或者\

--查询名字中包含%

SELECT *

FROM A

WHERE NAME LIKE'%A%%' ESCAPE'A';

--查询名字中倒数第二个是%结尾的

SELECT *

FROM A

WHERE NAME LIKE'%%' ESCAPE'';--查询name以_开头 且长度为5的SELECT *FROM AWHERE NAME LIKE'____' ESCAPE'';

--查询名字中以_%开头的行

SELECT *

FROM A

WHERE NAME LIKE'_%%' ESCAPE'';

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟德斯鸠的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值