Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句

Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句

2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开
测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库
这oracle比sql安全,强大多了,所以你需要学习,最重要的,你要是考网络警察公务员,这玩意你不会就别去报名了,耽误时间!
oracle系列文章:
【1】Oracle数据库:啥是oracle数据库?你为啥要学oracle?
【2】Oracle数据库:oracle 11g安装教程,已安装好的oracle各个文件夹的作用,oracle用户权限怎么样
【3】Oracle数据库:oracle启动,oracle客户端工具plsql安装教程和使用方法
【4】Oracle数据库:创建表空间,创建新用户,给用户分配对象、角色和系统权限,登录新用户建表
【5】Oracle数据库:链接配置,包括sqlnet.ora里面的transnames.ora配置数据库标识符SID,listener暂时简单了解
【6】Oracle数据库:net configureation assistant工具配置监听listener,配置本地网络访问服务器上的数据库
【7】Oracle数据库:oracle字符类型、数字类型、创建表表名的命名规则
【8】Oracle数据库:约束条件:主键约束、唯一约束、检查约束、非空约束、外键约束、默认值填写
【9】Oracle数据库:表的关系:一对多,一对一,多对多,一一继承和修改的关系,表不是重点,重点是数据和约束关系
【10】Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作


oracle约束和排序数据

行选择
在这里插入图片描述
where放在from table之后,限制行

之前from之前的是限制列

整一个例子就知道了

好说1=1条件满足,全部执行

SQL> select * from employees where 1=1;

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DATE   JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------------- ------------------------- ------------------------- -------------------- ----------- ---------- ---------- -------------- ---------- -------------
        100 Steven               King                      SKING                     515.123.4567         2003/6/17   AD_PRES      24000.00                                      90
        101 Neena                Kochhar                   NKOCHHAR                  515.123.4568         2005/9/21   AD_VP        17000.00                       100            90
        102 Lex                  De Haan                   LDEHAAN                   515.123.4569         2001/1/13   AD_VP        17000.00                       100            90

比较对象就是常量、列名,或者别的列表

在这里插入图片描述
限定那些部门id是90的行,其他行不要

SQL> select * from employees where department_id = 90;

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DATE   JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------------- ------------------------- ------------------------- -------------------- ----------- ---------- ---------- -------------- ---------- -------------
        100 Steven               King                      SKING                     515.123.4567         2003/6/17   AD_PRES      24000.00                                      90
        101 Neena                Kochhar                   NKOCHHAR                  515.123.4568         2005/9/21   AD_VP        17000.00                       100            90
        102 Lex                  De Haan                   LDEHAAN                   515.123.4569         2001/1/13   AD_VP        17000.00                       100            90

你瞅瞅,这里面部门id是90的也就三行
这就是限制行的的例子,本质是用列名满足某些条件来控制

SQL> select last_name,job_id,department_id from employees where department_id = 90;

LAST_NAME                 JOB_ID     DEPARTMENT_ID
------------------------- ---------- -------------
King                      AD_PRES               90
Kochhar                   AD_VP                 90
De Haan                   AD_VP                 90

只要某些列,就限制在from前面
只要某些航,就限制在from后面

美滋滋

oracle字符串和日期格式

在这里插入图片描述
在这里插入图片描述

SQL> select last_name,job_id from employees where last_name='King';

LAST_NAME                 JOB_ID
------------------------- ----------
King                      SA_REP
King                      AD_PRES

查的是jobid
条件是名字为king
区分大小写哦

查姓名,部门,iobid
查2006年1月24日入职的条件
日月年
我这是中文版的月
直接写1月

SQL> select last_name,job_id,department_id from employees where hire_date='24-1月-06';

LAST_NAME                 JOB_ID     DEPARTMENT_ID
------------------------- ---------- -------------
Fox                       SA_REP                80
Taylor                    SH_CLERK              50

20世纪也能写上去

SQL> select last_name,job_id,department_id from employees where hire_date='24-1月-2006';

LAST_NAME                 JOB_ID     DEPARTMENT_ID
------------------------- ---------- -------------
Fox                       SA_REP                80
Taylor                    SH_CLERK              50

比较条件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SQL> select last_name,salary from employees where salary<=3000;

LAST_NAME                     SALARY
------------------------- ----------
Baida                        2900.00
Tobias                       2800.00
Himuro                       2600.00
Colmenares                   2500.00
Mikkilineni                  2700.00
Landry                       2400.00
Markle                       2200.00
Atkinson                     2800.00
Marlow                       2500.00
Olson                        2100.00
Rogers                       2900.00
Gee                          2400.00
Philtanker                   2200.00
Seo                          2700.00
Patel                        2500.00
Matos                        2600.00
Vargas                       2500.00
Sullivan                     2500.00
Geoni                        2800.00
Cabrio                       3000.00

LAST_NAME                     SALARY
------------------------- ----------
Gates                        2900.00
Perkins                      2500.00
Jones                        2800.00
Feeney                       3000.00
OConnell                     2600.00
Grant                        2600.00

26 rows selected

这很好说

其他比较条件

在这里插入图片描述
[a,b]闭区间关系
in匹配任意值
like模板,模糊通配查询
null是否为null

在这里插入图片描述

SQL> select last_name,salary from employees where salary between 2500 and 3000;

LAST_NAME                     SALARY
------------------------- ----------
Baida                        2900.00
Tobias                       2800.00
Himuro                       2600.00
Colmenares                   2500.00
Mikkilineni                  2700.00
Atkinson                     2800.00
Marlow                       2500.00
Rogers                       2900.00
Seo                          2700.00
Patel                        2500.00
Matos                        2600.00
Vargas                       2500.00
Sullivan                     2500.00
Geoni                        2800.00
Cabrio                       3000.00
Gates                        2900.00
Perkins                      2500.00
Jones                        2800.00
Feeney                       3000.00
OConnell                     2600.00

LAST_NAME                     SALARY
------------------------- ----------
Grant                        2600.00

21 rows selected

会英语就好说,系统底层自动转

等价于

SQL> select last_name,salary from employees where salary>=2500 and salary<=3000;

LAST_NAME                     SALARY
------------------------- ----------
Baida                        2900.00
Tobias                       2800.00
Himuro                       2600.00
Colmenares                   2500.00
Mikkilineni                  2700.00
Atkinson                     2800.00
Marlow                       2500.00
Rogers                       2900.00
Seo                          2700.00
Patel                        2500.00
Matos                        2600.00
Vargas                       2500.00
Sullivan                     2500.00
Geoni                        2800.00
Cabrio                       3000.00
Gates                        2900.00
Perkins                      2500.00
Jones                        2800.00
Feeney                       3000.00
OConnell                     2600.00

LAST_NAME                     SALARY
------------------------- ----------
Grant                        2600.00

21 rows selected

666
在这里插入图片描述
看看x是否在set中
or条件
只能做相等的判断
多条件转化为或关系
上面是and关系

SQL> desc employees;
Name           Type         Nullable Default Comments                                                                                                                                                                                  
-------------- ------------ -------- ------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
EMPLOYEE_ID    NUMBER(6)                     Primary key of employees table.                                                                                                                                                           
FIRST_NAME     VARCHAR2(20) Y                First name of the employee. A not null column.                                                                                                                                            
LAST_NAME      VARCHAR2(25)                  Last name of the employee. A not null column.                                                                                                                                             
EMAIL          VARCHAR2(25)                  Email id of the employee                                                                                                                                                                  
PHONE_NUMBER   VARCHAR2(20) Y                Phone number of the employee; includes country code and area code                                                                                                                         
HIRE_DATE      DATE                          Date when the employee started on this job. A not null column.                                                                                                                            
JOB_ID         VARCHAR2(10)                  Current job of the employee; foreign key to job_id column of the
jobs table. A not null column.                                                                                            
SALARY         NUMBER(8,2)  Y                Monthly salary of the employee. Must be greater
than zero (enforced by constraint emp_salary_min)                                                                                          
COMMISSION_PCT NUMBER(2,2)  Y                Commission percentage of the employee; Only employees in sales
department elgible for commission percentage                                                                                
MANAGER_ID     NUMBER(6)    Y                Manager id of the employee; has same domain as manager_id in
departments table. Foreign key to employee_id column of employees table.
(useful for reflexive joins and CONNECT BY query) 
DEPARTMENT_ID  NUMBER(4)    Y                Department id where employee works; foreign key to department_id
column of the departments table                                                                                           

SQL> select last_name,salary from employees where manager_id=100 or manager_id=101 or manager_id=201;

LAST_NAME                     SALARY
------------------------- ----------
Kochhar                     17000.00
De Haan                     17000.00
Raphaely                    11000.00
Weiss                        8000.00
Fripp                        8200.00
Kaufling                     7900.00
Vollman                      6500.00
Mourgos                      5800.00
Russell                     14000.00
Partners                    13500.00
Errazuriz                   12000.00
Cambrault                   11000.00
Zlotkey                     10500.00
Hartstein                   13000.00
Greenberg                   12008.00
Whalen                       4400.00
Mavris                       6500.00
Baer                        10000.00
Higgins                     12008.00
Fay                          6000.00

20 rows selected

or太多
为了简化,搞成这样

SQL> select last_name,salary from employees where manager_id in(100,101,201);

LAST_NAME                     SALARY
------------------------- ----------
Kochhar                     17000.00
De Haan                     17000.00
Raphaely                    11000.00
Weiss                        8000.00
Fripp                        8200.00
Kaufling                     7900.00
Vollman                      6500.00
Mourgos                      5800.00
Russell                     14000.00
Partners                    13500.00
Errazuriz                   12000.00
Cambrault                   11000.00
Zlotkey                     10500.00
Hartstein                   13000.00
Greenberg                   12008.00
Whalen                       4400.00
Mavris                       6500.00
Baer                        10000.00
Higgins                     12008.00
Fay                          6000.00

20 rows selected

in(a,b,c……)

in只能做相等的或条件判断
在这里插入图片描述
数据结构与算法里面的题目
%当时是*
就是匹配0或者多个字符
而_是一个占位符,表示一个字符

SQL> select last_name from employees where last_name like 'S%';

LAST_NAME
-------------------------
Sarchand
Sciarra
Seo
Sewall
Smith
Smith
Stiles
Sullivan
Sully

9 rows selected

当时我们学了a*代表有0个a或者多个a
同理
这里S%就是代表0个S或者多个S匹配
S后面是啥不重要

_怎么用
查:第二个字母为a的名字
那第一个字符是啥不重要,可以一个_占位
后面%通配啥都行

SQL> select last_name from employees where last_name like '_a%';

LAST_NAME
-------------------------
Baer
Baida
Banda
Bates
Cabrio
Cambrault
Cambrault
Davies
Faviet
Fay
Gates
Hall
Hartstein
Kaufling
Ladwig
Landry
Mallin
Markle
Marlow
Marvins

LAST_NAME
-------------------------
Matos
Mavris
Nayer
Partners
Pataballa
Patel
Rajs
Raphaely
Sarchand
Taylor
Taylor
Vargas
Walsh

33 rows selected

我自己玩一个
比如里面含有字母x的
其他前后字符随意

SQL> select last_name from employees where last_name like '%x%';

LAST_NAME
-------------------------
Fox

%就是代表0个或者多个字符,然后跟x,然后后面随意0个或者多个字符

在这里插入图片描述
like可以做模型的日期查询
默认的格式太狠

20世纪不要了,就是05年,前面是啥日月都行的

SQL> select last_name,hire_date from employees where hire_date like '%05';

LAST_NAME                 HIRE_DATE
------------------------- -----------
Kochhar                   2005/9/21
Austin                    2005/6/25
Chen                      2005/9/28
Sciarra                   2005/9/30
Baida                     2005/12/24
Tobias                    2005/7/24
Fripp                     2005/4/10
Vollman                   2005/10/10
Nayer                     2005/7/16
Bissot                    2005/8/20
Atkinson                  2005/10/30
Marlow                    2005/2/16
Stiles                    2005/10/26
Davies                    2005/1/29
Partners                  2005/1/5
Errazuriz                 2005/3/10
Tucker                    2005/1/30
Bernstein                 2005/3/24
Hall                      2005/8/20
Smith                     2005/3/10

LAST_NAME                 HIRE_DATE
------------------------- -----------
Doran                     2005/12/15
Vishney                   2005/11/11
Ozer                      2005/3/11
Hutton                    2005/3/19
Bull                      2005/2/20
Chung                     2005/6/14
Dilly                     2005/8/13
Everett                   2005/3/3
Fay                       2005/8/17

29 rows selected

escape语句,转义,用任意字符转义,一般就是反斜杠\

如果你就要搜%和_呢
那就要转义处理
在这里插入图片描述
你要不写\,那_就是占位符

SQL> select last_name,job_id from employees where last_name like 'Sa_%';

LAST_NAME                 JOB_ID
------------------------- ----------
Sarchand                  SH_CLERK

后面加escape ‘’
这样就是告诉你反斜杠是转义字符

SQL> select last_name,job_id from employees where job_id like 'SA\_%' escape '\';

LAST_NAME                 JOB_ID
------------------------- ----------
Abel                      SA_REP
Ande                      SA_REP
Banda                     SA_REP
Bates                     SA_REP
Bernstein                 SA_REP
Bloom                     SA_REP
Cambrault                 SA_MAN
Cambrault                 SA_REP
Doran                     SA_REP
Errazuriz                 SA_MAN
Fox                       SA_REP
Grant                     SA_REP
Greene                    SA_REP
Hall                      SA_REP
Hutton                    SA_REP
Johnson                   SA_REP
King                      SA_REP
Kumar                     SA_REP
Lee                       SA_REP
Livingston                SA_REP

LAST_NAME                 JOB_ID
------------------------- ----------
Marvins                   SA_REP
McEwen                    SA_REP
Olsen                     SA_REP
Ozer                      SA_REP
Partners                  SA_MAN
Russell                   SA_MAN
Sewall                    SA_REP
Smith                     SA_REP
Smith                     SA_REP
Sully                     SA_REP
Taylor                    SA_REP
Tucker                    SA_REP
Tuvault                   SA_REP
Vishney                   SA_REP
Zlotkey                   SA_MAN

35 rows selected

jobid,不要搞成名字了哦
你看看我写的命令
这样的话,就可以把反斜杠转义了
这java和Python也是这么搞的
任何编程语言都有这个东西

你换别的符号也行@#都可以,随你——考试要注意这里

SQL> select last_name,job_id from employees where job_id like 'SA@_%' escape '@';

LAST_NAME                 JOB_ID
------------------------- ----------
Abel                      SA_REP
Ande                      SA_REP
Banda                     SA_REP
Bates                     SA_REP
Bernstein                 SA_REP
Bloom                     SA_REP
Cambrault                 SA_MAN
Cambrault                 SA_REP
Doran                     SA_REP
Errazuriz                 SA_MAN
Fox                       SA_REP
Grant                     SA_REP
Greene                    SA_REP
Hall                      SA_REP
Hutton                    SA_REP
Johnson                   SA_REP
King                      SA_REP
Kumar                     SA_REP
Lee                       SA_REP
Livingston                SA_REP

LAST_NAME                 JOB_ID
------------------------- ----------
Marvins                   SA_REP
McEwen                    SA_REP
Olsen                     SA_REP
Ozer                      SA_REP
Partners                  SA_MAN
Russell                   SA_MAN
Sewall                    SA_REP
Smith                     SA_REP
Smith                     SA_REP
Sully                     SA_REP
Taylor                    SA_REP
Tucker                    SA_REP
Tuvault                   SA_REP
Vishney                   SA_REP
Zlotkey                   SA_MAN

35 rows selected

null判空

在这里插入图片描述
null不是任何值
不能用=

SQL> select last_name,job_id,commission_pct from employees where commission_pct is null;

LAST_NAME                 JOB_ID     COMMISSION_PCT
------------------------- ---------- --------------
King                      AD_PRES    
Kochhar                   AD_VP      
De Haan                   AD_VP      
Hunold                    IT_PROG    
Ernst                     IT_PROG    
Austin                    IT_PROG    
Pataballa                 IT_PROG    
Lorentz                   IT_PROG    
Greenberg                 FI_MGR     
Faviet                    FI_ACCOUNT 
Chen                      FI_ACCOUNT 
Sciarra                   FI_ACCOUNT 
Urman                     FI_ACCOUNT 
Popp                      FI_ACCOUNT 
Raphaely                  PU_MAN     
Khoo                      PU_CLERK   
Baida                     PU_CLERK   
Tobias                    PU_CLERK   
Himuro                    PU_CLERK   
Colmenares                PU_CLERK   

LAST_NAME                 JOB_ID     COMMISSION_PCT
------------------------- ---------- --------------
Weiss                     ST_MAN     
Fripp                     ST_MAN     
Kaufling                  ST_MAN     
Vollman                   ST_MAN     
Mourgos                   ST_MAN     
Nayer                     ST_CLERK   
Mikkilineni               ST_CLERK   
Landry                    ST_CLERK   
Markle                    ST_CLERK   
Bissot                    ST_CLERK   
Atkinson                  ST_CLERK   
Marlow                    ST_CLERK   
Olson                     ST_CLERK   
Mallin                    ST_CLERK   
Rogers                    ST_CLERK   
Gee                       ST_CLERK   
Philtanker                ST_CLERK   
Ladwig                    ST_CLERK   
Stiles                    ST_CLERK   
Seo                       ST_CLERK   
Patel                     ST_CLERK   

LAST_NAME                 JOB_ID     COMMISSION_PCT
------------------------- ---------- --------------
Rajs                      ST_CLERK   
Davies                    ST_CLERK   
Matos                     ST_CLERK   
Vargas                    ST_CLERK   
Taylor                    SH_CLERK   
Fleaur                    SH_CLERK   
Sullivan                  SH_CLERK   
Geoni                     SH_CLERK   
Sarchand                  SH_CLERK   
Bull                      SH_CLERK   
Dellinger                 SH_CLERK   
Cabrio                    SH_CLERK   
Chung                     SH_CLERK   
Dilly                     SH_CLERK   
Gates                     SH_CLERK   
Perkins                   SH_CLERK   
Bell                      SH_CLERK   
Everett                   SH_CLERK   
McCain                    SH_CLERK   
Jones                     SH_CLERK   
Walsh                     SH_CLERK   

LAST_NAME                 JOB_ID     COMMISSION_PCT
------------------------- ---------- --------------
Feeney                    SH_CLERK   
OConnell                  SH_CLERK   
Grant                     SH_CLERK   
Whalen                    AD_ASST    
Hartstein                 MK_MAN     
Fay                       MK_REP     
Mavris                    HR_REP     
Baer                      PR_REP     
Higgins                   AC_MGR     
Gietz                     AC_ACCOUNT 

72 rows selected

71个人没有佣金
有佣金的就是反过来查

SQL> select last_name,job_id,commission_pct from employees where commission_pct is not null;

LAST_NAME                 JOB_ID     COMMISSION_PCT
------------------------- ---------- --------------
Russell                   SA_MAN               0.40
Partners                  SA_MAN               0.30
Errazuriz                 SA_MAN               0.30
Cambrault                 SA_MAN               0.30
Zlotkey                   SA_MAN               0.20
Tucker                    SA_REP               0.30
Bernstein                 SA_REP               0.25
Hall                      SA_REP               0.25
Olsen                     SA_REP               0.20
Cambrault                 SA_REP               0.20
Tuvault                   SA_REP               0.15
King                      SA_REP               0.35
Sully                     SA_REP               0.35
McEwen                    SA_REP               0.35
Smith                     SA_REP               0.30
Doran                     SA_REP               0.30
Sewall                    SA_REP               0.25
Vishney                   SA_REP               0.25
Greene                    SA_REP               0.15
Marvins                   SA_REP               0.10

LAST_NAME                 JOB_ID     COMMISSION_PCT
------------------------- ---------- --------------
Lee                       SA_REP               0.10
Ande                      SA_REP               0.10
Banda                     SA_REP               0.10
Ozer                      SA_REP               0.25
Bloom                     SA_REP               0.20
Fox                       SA_REP               0.20
Smith                     SA_REP               0.15
Bates                     SA_REP               0.15
Kumar                     SA_REP               0.10
Abel                      SA_REP               0.30
Hutton                    SA_REP               0.25
Taylor                    SA_REP               0.20
Livingston                SA_REP               0.20
Grant                     SA_REP               0.15
Johnson                   SA_REP               0.10

35 rows selected

只有35人有佣金
这很好办


总结

提示:重要经验:

1)
2)学好oracle,即使经济寒冬,整个测开offer绝对不是问题!同时也是你考公网络警察的必经之路。
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冰露可乐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值