00:03
我们继续看简单SQL语句,刚才我们在查询的时候是无条件的查询所有的数据,现在我们可以给他加入一定的条件,比如说我只查询部门编号是十的员工的信息。查询的时候加入查询条件,对数据进行过滤。要对数据过滤,我们要用一个where词句。Where,条件?比如说我们查询部门编号是十的。使用where子句。在数据进行。From emp well EP number等于十,这是b number1name。
01:21
我就差一箱吧。查询部门编号是十的员工的信息。对于数值,对于字符型的数据和日期型的数据必须要使用单引号。我们去查询名字是。
02:01
史密斯的员工信息FROM1内等于14。必须要使用单引号。字符型的数据对大小写是敏感的,也就是严格区分大小写。SM。I。你那个名字叫大写的史密斯,我在这儿能查到。我查询小写的史密斯。
03:00
别说你小,写的你差一个都达不到。有。字符型的数据必须要使用单引号。无效的标识,你没有加单引号,它不认识。对于日期型的数据格式是敏感的。使用日期型数据的格式是。日月日月年。日。月、年。
04:05
嗯。月、年。Smart from em well2代等于。这个。文本格式与字符格式不匹配。因为我们都说了日月年。20。杠。二杠1980。1981。
05:07
我们安装的时候注意他选的那个字符编码是中文版的吧,还记得吗?再加一个月,如果说你在英文版的就是日月年,但是在中文版这必须要加一个月才可以。日、月、年,这是它默认的日期格式。字符型日期型要用单引号字符型大小写敏感日期型格式敏感日月年,它默认的使用格式是日月点。但是我们可以去。改变它的日期格式。看它的。
06:02
日期格式,改变它的日期格式。On the table。改变当前绘画。从的日期何止out session,什么是一个会话,我这个客户端,注意我们这个东西是不是一个客户端啊。我们这个东西这个PL搜狗developer就是一个客户端,它连上服务器之后,你在这儿一直发一句有来有往的,这就是一个会话,你把连接关掉了,这个会话就结束了。现在。我们把当前绘画的日期格式写成了年月日十分秒,那我们再去查询。
07:03
再查这个语句。就行了,因为现在我的日期格式是年月日啊。我的日期格式已经改成年月日了。这样查才可以啊。但是这只在一个会话中有效,现在我把连接关掉了,会话结束了,重新来。又开始了一个新的绘画。你再用这种格式查。又不行了,它只在一个绘画中有效,它默认的格式又恢复成日月连这种格式。嗯。那我们在Y中,我们刚才用的都是等号,那我也可以用大于大于小于小于等于。
08:04
不等。我查询。That。查询条件中使用其他的比较运算符查询工资大于2000的员工的信息。塞了大于等于2000。大于等于2000,包括这个边界值大于等于。From ya。Where s了不等于。
09:07
3000。不等。这样也是不等于的意思。这个跟这个是同样的效果。还可以使用between and,在两者之间in like it,那先看between and。使用。Btwbe特。
10:05
Are在两者之间,From Yang气。Where seven be between 2000and3000。在2000之间,2000~3000之间的。它是包括这个边界值的。那。用Java语句来翻译它一下,就是应该是什么意思啊。在2000~3000之间,From well。
11:01
在2000~3000之间,啥意思?大于等于2000,并且S大于。等于2000,并且3A小于等于3000。来的信。要用并且加,这是加的用法,那与。在Oracle中用。看。来执行。
12:00
二相当于是加里这个并且的意思。2000~3000之间的。使用印。S from ERP were job you in啥呢?注意job是字符型的。Manager。谁是职员?查询职员和经理的信息。你的job在这里面。你看这些人不都是在这里面吗?那我们用Java语句来翻译它一下。
13:05
印啥意思呢?注意是这个或是这个吧。他的职位是麦或职位是可或呀。Where job等于manager?或者加va里的语法,或者job等于颗。Or里头都用and来替代了哦。
14:01
刀中使用哦来替执行或的工作。是manager或者是或者的关系。Between and in。Like。Like。主要用于。字符型数据的查询可以。直行模糊查询,什么叫模糊查询?我就知道你们班有一个同学姓姓王。但是他叫王什么我忘了。
15:01
那现在我只知道它的一部分条件,我就可以执行蘑菇查询。Lot from Yang p we in name like。我想去查询名字里面有A的员工的信息。麦克。A前面呢,有零个或多个字符。A后面有零个或多个字符。那也就是说,只要在你的名字里出现A是不是就可以啊,出现在哪个位置都行,外心。Like。不是星,是百分号,糊涂了。
16:03
百分号。A出现在这个位置,A出现在这个位置,A出现在第三个位置,出现在哪个位置都行,百分号表示。百分号表示零个或多个任意的次数。百分号,那我要查询姓王的呢,王是不是只出现在第一个位置,那我查询。那个你们班有一个人的名字叫A什么什么,我忘了就叫A什么什么,那我怎么查呢。我就知道他的第一个名字是A。100根号。
17:02
A后面零个或多个字符。你们班有个同学叫第二个名字叫什么什么。叫什么什么丘,第二个名字叫秋。就是第二个是秋,它的第第三个,第一个我都不记得了。下划线。表示一个字符,刚才用百分号表示零个或多个字符,那下划线就表示一个字符。也就是说A之前。只有一个字符吧。
18:02
这不是A都出现在第二位吗?我就想查你的名字里有百分号了。但是你的百分号在这儿用是当做特殊的用法来做的,实际上这里头就有点类似于正则表达式那个语法似的。是给他指定了一个模板。THE8、数据。卡密提交一下,这时候你去查。才是,这才生效from like。
19:08
百分号百分号百分号。你前面这个百分号是说你百分号前面有零个或多个,后面这个百分号零个或多个,但是你这儿呢。他不认识,他就认为你查全部的了。L。K。这不就是查全部的了吗?那我在这就跟家里那转移符一样。ESPACE。那个我记住ES。C,并且指定说用这个来当转移符。
20:06
这样不就查到名字带百分号的员工的信息了吗?必须要搭配使用这个使用转义符。Like。Between and in like。然后对于空值用钠。对于空指。要使用意思,那进行比较,Smart from Yang气。Ver common意思啊,查询佣金,也就是查询奖金是空的人的信息。
21:08
你说让他的奖金等于呢?没有这种语法。就是用意呢,来对空值进行比较。意思。那。那刚才我们还是就是捎带角使用了and,哦,And是说两个条件必须都要成立,二只要有一个条件成立,注意这只是说。对应于加入的语法。那还有,这就是与或非。刚才我们用了一个。比吞案子。
22:13
使用not运算。Not。Not。S between2000字3000。加一个note呗,不在2000~3000。不在2000~3000,那翻译一下啥意思塞。小于等于2000。中间用什么。
23:03
暗的还是?或的关系,小于2000的比重不在这个范围。如果说用and呢,用and行不行,And大于。S小于S小于等于2000AND s大于等于3000,有这种数据吗?哦。来的星。Not between。刚才我们用了一个in。
24:01
吃饭呗。老铁。六条数据,对它翻译一下,From where here where job。不等于。Manager。嗯。是或者还是并且,并且照吧,不等于。克里克。又忘了心。
25:00
六条,你这要用O呢,结果就不一样了。这是暗的。挠,它隐不在这里头,那他既不是这个,也不是这个。然后意思呢。注意这哈,你别说。Not is now。应该是意思。挠呢?这是几条记录?四条,那现在注意你这个0.0不等于呢,所以才被查出来。可以使用。这种and not all,把多个查询条件给它连起来。
26:07
它的运算顺序就是。运算顺序。所有的比较运算符,刚才我们看这里面先算这边,算这边第三步再算这个。所有的比较运算符大于等于大于小于小于等于不等于这些,然后它的过程是not and哦。然后才是这个顺序。刚才我们建了一个用户表。我可以在这儿。注意。编辑数据。我也能打开这把锁,往里头加一个一。
27:00
ADMIN123456。我加进了一条数据。嗯。Not and or的运算成顺序,就是按照not,按照O的这个顺序来进行运算的,那现在我们去查询。比如说我们去写了一个项目,我这个项目里头干嘛呢。这个项目里头要去让你用户登录,那我应该写这么一个界面,你填上用户名和密码。然后我去和数据库里头进行比对吧,那我在程序中要拿到你在这填的用户名和密码。去和数据库里头进行比对。
28:06
那在这哈,Slide from us。Well。来行。Where name等于什么什么and?JSWB等于什么什么,注意你这个里头是不是就是从用户从。界面上拿到的,如果用户输了一个。A min。密码123456,把拿到这个数据拼到这个SQL语句里头来。等于A。E min。123456。
29:02
啥?找到这条数据了,有查询结果就说明你的用户是合法的用户。注意这个双引号里的数据,我们是从界面中拿到的吧?注意那用户如果说在界面上属于这种,作为浏览器来说,有的浏览器有自作多情的记录用户名的这个特点,知道吧。知道吧,那他自作多情的就把你,你在这一点,你见过什么用户名,他自己就给你显示出来了,那也就是说作为用户,其他一个用户可以知道你的用户名。
30:01
注意他在填的时候往这一点出来啊的in了他的咪。他填这种格式。哦。X。等于X。他把这个数据填到这儿了,密码他当然不知道了,密码他就随便填。他肯定不知道密码,没有自动记忆的功能。他填了这个,注意这个是我们。这个别有用心的人在这儿写了这个数据。我就把这格式原封不动的拼到这来,注意它更外的格式是啥来了,Ad min。Ad min这一个单引号哦,大小X等于。
31:06
你。X,这是他填的这种格式的数据。这个格式的数据是不是被你拼到这儿来了?密码呢,随便。执行。密码肯定不对了。123456,这随便填的。结果他也登录进来了,你的系统判断到查询到数据,那你的系统就认为它是合法的。结果他就登录进来了,这叫什么,这叫缩口助攻击。
32:04
是一种黑客使用的手段,为什么呢?就是因为这个运算顺序决定的。那刚才我们分析了,先算not and,哦,按这个顺序来算,那这里面先算哪个?先算暗的呀,他先算。这个。然后再去O啊。这边我不管你成立不成立。但是这个是成立的吧。就是因为你not and o的运算顺序和这种动态拼接SCO语句的这种特点导致了SCO出入攻击。那现在既然提出来四个数攻击,后面我们肯定有办法避免加吧。我不会说自己提出来漏洞我堵不上啊,让丢丑啊。
33:04
就是not and all的运算顺序决定了折扣攻击。运算的优先级,它的优先级我没必要记,记不住咋办呢,小括号呗。小括号,我可以强调它的运算顺序,记不住没关系。然后现在我们对数据进行排序,对数据对。查询后的数据进行排序。对。Blood from ya well。塞了大于。大于2000的员工的信息。
34:08
查出来了,我用了一个where对数据过滤,过滤之后的数据我要再进行排序,Order吧?欧特派生物玩新水来排序。Two。248524502850。注意这个都是where句,Order by都是词句可有可无的,那我可以单独,刚才我们就是单独使用where句啊。这些词句都是可有可无的,现在我不加where词句。我就直接是欧呗。也可以啊,每个子句都可以单独使用。
35:04
对于数据进行排序。使用。OLDER4句。它默认的是按数据升序排列的。As。显示的指令它按升序排列,你加不加ec都是升序。这是商序排列显示的时候。默认的按照指定的字段升序排列。再是用指定的字段显示的指令升序排列。
36:13
当然我也可以对它降序排列。降序排列AC。注意刚才我没有去点这个,我是你看F8快捷键按F8就行了。按照字段升,这是降序排列。可以按照多个字段进行排序。
37:01
O在EP number先按照部门编号排序。部门编号相同的,先按照部门编号升序排列。然后部门编号相同的,再按薪水顺序排。12:30。部门他的。部门编号相同,又按薪水的程序排列。用多个字段来进行排序。Older版。降序,那我们也可以使用字段的别名来进行排序。使用字段的别名来进行排序。Slide from EP number s乘以12给他起个别名叫。
38:14
年薪。欧版。连接按照升序来排列,使用字段的别名来进行排序。按照多个字段来排序。这是我们上午说的一些circle简单circle语句。这是有练习题的。
39:03
这个练习题咋做?把这个复制出来。新建成一个circle。多行故事。这就别注释了。保存成一个。在里面写语句呗。From from EMT number等于30 OK。列出所有办事员,办事员是他的职位,他的职位是C。
40:05
S from杨皮,Job等于。Click列出所有办事员的名字,那就是e name,他的DEP number。当然我们把为了检验一下数据,把它的job也加在这。佣金高于薪金的well。外二塔的common大于S。
41:00
佣金高于现金的。他的佣金是1400,佣金是现金是12000。佣金高于薪金60%的。这不就练手一样吗,S。高于他60%,那就是扣我们佣金。高于他60%。S乘以0.6。大于是不是三个大于它的新进的6%乘以0.6啊,是怎么写成百分号啊乘。这个人。
42:00
大于它的60%。这个呢?这我就别写,再写没了。上面后面的自己完成。嗯。
我来说两句