失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Oracle数据库:约束行限制where语句 判断条件 比较条件 字符串日期格式 in like escape null语句

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

时间:2020-08-13 11:59:26

相关推荐

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

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

找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开

测开的话,你就得学数据库,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语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句@[TOC](文章目录)oracle约束和排序数据oracle字符串和日期格式比较条件其他比较条件escape语句,转义,用任意字符转义,一般就是反斜杠\null判空总结

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 StevenKing SKING 515.123.4567 /6/17 AD_PRES24000.00 90101 NeenaKochhar NKOCHHAR 515.123.4568 /9/21 AD_VP 17000.00 100 90102 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 StevenKing SKING 515.123.4567 /6/17 AD_PRES24000.00 90101 NeenaKochhar NKOCHHAR 515.123.4568 /9/21 AD_VP 17000.00 100 90102 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_IDDEPARTMENT_ID------------------------- ---------- -------------King AD_PRES90Kochhar AD_VP 90De 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_REPKing AD_PRES

查的是jobid

条件是名字为king

区分大小写哦

查姓名,部门,iobid

查1月24日入职的条件

日月年

我这是中文版的月

直接写1月

SQL> select last_name,job_id,department_id from employees where hire_date='24-1月-06';LAST_NAME JOB_IDDEPARTMENT_ID------------------------- ---------- -------------Fox SA_REP80TaylorSH_CLERK 50

20世纪也能写上去

SQL> select last_name,job_id,department_id from employees where hire_date='24-1月-';LAST_NAME JOB_IDDEPARTMENT_ID------------------------- ---------- -------------Fox SA_REP80TaylorSH_CLERK 50

比较条件

SQL> select last_name,salary from employees where salary<=3000;LAST_NAME SALARY------------------------- ----------Baida 2900.00Tobias 2800.00Himuro 2600.00Colmenares 2500.00Mikkilineni 2700.00Landry 2400.00Markle 2200.00Atkinson 2800.00Marlow 2500.00Olson 2100.00Rogers 2900.00Gee2400.00Philtanker 2200.00Seo2700.00Patel 2500.00Matos 2600.00Vargas 2500.00Sullivan 2500.00Geoni 2800.00Cabrio 3000.00LAST_NAME SALARY------------------------- ----------Gates 2900.00Perkins 2500.00Jones 2800.00Feeney 3000.00OConnell 2600.00Grant 2600.0026 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.00Tobias 2800.00Himuro 2600.00Colmenares 2500.00Mikkilineni 2700.00Atkinson 2800.00Marlow 2500.00Rogers 2900.00Seo2700.00Patel 2500.00Matos 2600.00Vargas 2500.00Sullivan 2500.00Geoni 2800.00Cabrio 3000.00Gates 2900.00Perkins 2500.00Jones 2800.00Feeney 3000.00OConnell 2600.00LAST_NAME SALARY------------------------- ----------Grant 2600.0021 rows selected

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

等价于

SQL> select last_name,salary from employees where salary>=2500 and salary<=3000;LAST_NAME SALARY------------------------- ----------Baida 2900.00Tobias 2800.00Himuro 2600.00Colmenares 2500.00Mikkilineni 2700.00Atkinson 2800.00Marlow 2500.00Rogers 2900.00Seo2700.00Patel 2500.00Matos 2600.00Vargas 2500.00Sullivan 2500.00Geoni 2800.00Cabrio 3000.00Gates 2900.00Perkins 2500.00Jones 2800.00Feeney 3000.00OConnell 2600.00LAST_NAME SALARY------------------------- ----------Grant 2600.0021 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_NAMEVARCHAR2(20) YFirst name of the employee. A not null column.LAST_NAMEVARCHAR2(25) Last name of the employee. A not null column. EMAILVARCHAR2(25) Email id of the employee PHONE_NUMBER VARCHAR2(20) YPhone number of the employee; includes country code and area code HIRE_DATEDATEDate 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 thejobs table. A not null column. SALARY NUMBER(8,2) YMonthly salary of the employee. Must be greaterthan zero (enforced by constraint emp_salary_min)COMMISSION_PCT NUMBER(2,2) YCommission percentage of the employee; Only employees in salesdepartment elgible for commission percentageMANAGER_IDNUMBER(6) YManager id of the employee; has same domain as manager_id indepartments table. Foreign key to employee_id column of employees table.(useful for reflexive joins and CONNECT BY query) DEPARTMENT_ID NUMBER(4) YDepartment id where employee works; foreign key to department_idcolumn 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.00De Haan 17000.00Raphaely11000.00Weiss 8000.00Fripp 8200.00Kaufling 7900.00Vollman 6500.00Mourgos 5800.00Russell 14000.00Partners13500.00Errazuriz 12000.00Cambrault 11000.00Zlotkey 10500.00Hartstein 13000.00Greenberg 1.00Whalen 4400.00Mavris 6500.00Baer 10000.00Higgins 1.00Fay6000.0020 rows selected

or太多

为了简化,搞成这样

SQL> select last_name,salary from employees where manager_id in(100,101,201);LAST_NAME SALARY------------------------- ----------Kochhar 17000.00De Haan 17000.00Raphaely11000.00Weiss 8000.00Fripp 8200.00Kaufling 7900.00Vollman 6500.00Mourgos 5800.00Russell 14000.00Partners13500.00Errazuriz 12000.00Cambrault 11000.00Zlotkey 10500.00Hartstein 13000.00Greenberg 1.00Whalen 4400.00Mavris 6500.00Baer 10000.00Higgins 1.00Fay6000.0020 rows selected

in(a,b,c……)

in只能做相等的或条件判断

数据结构与算法里面的题目

%当时是*

就是匹配0或者多个字符

而_是一个占位符,表示一个字符

SQL> select last_name from employees where last_name like 'S%';LAST_NAME-------------------------SarchandSciarraSeoSewallSmithSmithStilesSullivanSully9 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-------------------------BaerBaidaBandaBatesCabrioCambraultCambraultDaviesFavietFayGatesHallHartsteinKauflingLadwigLandryMallinMarkleMarlowMarvinsLAST_NAME-------------------------MatosMavrisNayerPartnersPataballaPatelRajsRaphaelySarchandTaylorTaylorVargasWalsh33 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 /9/21Austin/6/25Chen /9/28Sciarra /9/30Baida /12/24Tobias/7/24Fripp /4/10Vollman /10/10Nayer /7/16Bissot/8/20Atkinson /10/30Marlow/2/16Stiles/10/26Davies/1/29Partners /1/5Errazuriz /3/10Tucker/1/30Bernstein /3/24Hall /8/20Smith /3/10LAST_NAME HIRE_DATE------------------------- -----------Doran /12/15Vishney /11/11Ozer /3/11Hutton/3/19Bull /2/20Chung /6/14Dilly /8/13Everett /3/3Fay /8/1729 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_REPAnde SA_REPBanda SA_REPBates SA_REPBernstein SA_REPBloom SA_REPCambrault SA_MANCambrault SA_REPDoran SA_REPErrazuriz SA_MANFox SA_REPGrant SA_REPGreeneSA_REPHall SA_REPHuttonSA_REPJohnson SA_REPKing SA_REPKumar SA_REPLee SA_REPLivingstonSA_REPLAST_NAME JOB_ID------------------------- ----------Marvins SA_REPMcEwenSA_REPOlsen SA_REPOzer SA_REPPartners SA_MANRussell SA_MANSewallSA_REPSmith SA_REPSmith SA_REPSully SA_REPTaylorSA_REPTuckerSA_REPTuvault SA_REPVishney SA_REPZlotkey SA_MAN35 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_REPAnde SA_REPBanda SA_REPBates SA_REPBernstein SA_REPBloom SA_REPCambrault SA_MANCambrault SA_REPDoran SA_REPErrazuriz SA_MANFox SA_REPGrant SA_REPGreeneSA_REPHall SA_REPHuttonSA_REPJohnson SA_REPKing SA_REPKumar SA_REPLee SA_REPLivingstonSA_REPLAST_NAME JOB_ID------------------------- ----------Marvins SA_REPMcEwenSA_REPOlsen SA_REPOzer SA_REPPartners SA_MANRussell SA_MANSewallSA_REPSmith SA_REPSmith SA_REPSully SA_REPTaylorSA_REPTuckerSA_REPTuvault SA_REPVishney SA_REPZlotkey SA_MAN35 rows selected

null判空

null不是任何值

不能用=

SQL> select last_name,job_id,commission_pct from employees where commission_pct is null;LAST_NAME JOB_IDCOMMISSION_PCT------------------------- ---------- --------------King AD_PRES Kochhar AD_VPDe Haan AD_VPHunoldIT_PROG Ernst IT_PROG AustinIT_PROG Pataballa IT_PROG Lorentz IT_PROG Greenberg FI_MGRFavietFI_ACCOUNT Chen FI_ACCOUNT Sciarra FI_ACCOUNT Urman FI_ACCOUNT Popp FI_ACCOUNT Raphaely PU_MANKhoo PU_CLERK Baida PU_CLERK TobiasPU_CLERK HimuroPU_CLERK ColmenaresPU_CLERK LAST_NAME JOB_IDCOMMISSION_PCT------------------------- ---------- --------------Weiss ST_MANFripp ST_MANKaufling ST_MANVollman ST_MANMourgos ST_MANNayer ST_CLERK MikkilineniST_CLERK LandryST_CLERK MarkleST_CLERK BissotST_CLERK Atkinson ST_CLERK MarlowST_CLERK Olson ST_CLERK MallinST_CLERK RogersST_CLERK Gee ST_CLERK PhiltankerST_CLERK LadwigST_CLERK StilesST_CLERK Seo ST_CLERK Patel ST_CLERK LAST_NAME JOB_IDCOMMISSION_PCT------------------------- ---------- --------------Rajs ST_CLERK DaviesST_CLERK Matos ST_CLERK VargasST_CLERK TaylorSH_CLERK FleaurSH_CLERK Sullivan SH_CLERK Geoni SH_CLERK Sarchand SH_CLERK Bull SH_CLERK Dellinger SH_CLERK CabrioSH_CLERK Chung SH_CLERK Dilly SH_CLERK Gates SH_CLERK Perkins SH_CLERK Bell SH_CLERK Everett SH_CLERK McCainSH_CLERK Jones SH_CLERK Walsh SH_CLERK LAST_NAME JOB_IDCOMMISSION_PCT------------------------- ---------- --------------FeeneySH_CLERK OConnell SH_CLERK Grant SH_CLERK WhalenAD_ASST Hartstein MK_MANFay MK_REPMavrisHR_REPBaer PR_REPHiggins AC_MGRGietz 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_IDCOMMISSION_PCT------------------------- ---------- --------------Russell SA_MAN0.40Partners SA_MAN0.30Errazuriz SA_MAN0.30Cambrault SA_MAN0.30Zlotkey SA_MAN0.20TuckerSA_REP0.30Bernstein SA_REP0.25Hall SA_REP0.25Olsen SA_REP0.20Cambrault SA_REP0.20Tuvault SA_REP0.15King SA_REP0.35Sully SA_REP0.35McEwenSA_REP0.35Smith SA_REP0.30Doran SA_REP0.30SewallSA_REP0.25Vishney SA_REP0.25GreeneSA_REP0.15Marvins SA_REP0.10LAST_NAME JOB_IDCOMMISSION_PCT------------------------- ---------- --------------Lee SA_REP0.10Ande SA_REP0.10Banda SA_REP0.10Ozer SA_REP0.25Bloom SA_REP0.20Fox SA_REP0.20Smith SA_REP0.15Bates SA_REP0.15Kumar SA_REP0.10Abel SA_REP0.30HuttonSA_REP0.25TaylorSA_REP0.20LivingstonSA_REP0.20Grant SA_REP0.15Johnson SA_REP0.1035 rows selected

只有35人有佣金

这很好办

总结

提示:重要经验:

1)

2)学好oracle,即使经济寒冬,整个测开offer绝对不是问题!同时也是你考公网络警察的必经之路。

3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

如果觉得《Oracle数据库:约束行限制where语句 判断条件 比较条件 字符串日期格式 in like escape null语句》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。