现在的登录都是把信息存在数据库,然后把输入的与数据库内容进行匹配,一样就登录成功,否则不成功。验证码是为了防止暴力破解,因为计算机能够自动匹配密码,但是不能识别图片上的字母,只有人能识别,所以匹配的速度会减慢。还有的会记录登录IP,如果IP频繁变化就会进行提示。还有银行会限制输入次数。

作用

限制表中的数据返回  符合where后面的条件的数据就会被选中,不符合where条件的语句会被过滤掉

两个极限条件

/*这是永真条件*/   (数据库里可以有注释,这里是多行注释)
where 1 = 1 ; (用一个等号判断相不相等,因为这里是不存在赋值的,没有“= =”)
- - 这是永假条件(数据库里可以有注释,这里是单行注释,注释符和注释之间要有空格)
where 1 = 2 ;

演示:列出每个员工的id 和salary   要求显示符合salary等于1400的员工

select id, salary from s_emp where salary=1400

字符串条件的表达

演示:要求显示first_name 是Carmen的员工,列出id  first_name salary 

select id, first_name, salary from s_emp where first_name='Carmen'

注意:一定要加’ ‘代表这是字符串值

常见的运算符

= 等于   != 不等于    >大于   < 小于    <= 小于等于   ................

 sql提供的运算符

表达一个闭区间[a , b]

where  字段  between a  and  b ;  (字段在闭区间a到b内)

a  b的顺序不能错

演示:写程序查询,把s_emp表中id  first_name salary  显示;要求salary在[1450,2500 ] 中。

select id, first_name, salary from s_emp where salary between 1450 and 2500

注意:不可以把2500和1450调换位置,编译不会有错,但逻辑有错)

where  字段  in(值1,值2,值3)

这个字段的值等于其中的一个值(只要有一个等于就返回), 交换值的顺序可能有影响,也可能没有影响。若值的概率都一样就没有影响(就按一个规律写(比如从小到大),这样不容易遗漏)。若不一样,则把概率高的值放在前面(人为的),这样查询效率高(因为每个数据都要挨个和给的值比较,只要有一个一样就返回)

演示:写一个查询,把s_emp表中部门标号是31或者32或者50 部门的员工id first_name  dept_id显示出来

select idm first_name, dept_id from s_emp where dept_id in(31, 32, 50)

模糊查询  like(像)+ 通配符

数据库里:

    • “%”为通配符,代表0 - n个任意字符
    • “-”代表一个任意字符

e.g.  李四 李斯  李思  李世民 (查找出姓李的)

Where  name  like  ‘李%’;

e.g.  李小龙 小龙女  龙猫  (查找出所有带龙的)

Where  name  like  ‘%龙%;
(找出中间带龙的)where  name like  ‘_龙%’;

演示:查询s_emp表中first_name,找出所有带a(小写a)的

select first_name from s_emp where first_name like '%a%'

数据库中有一张表user_tables(数据字典,存的都是大写)存了所有表的信息。例如s_emp  s_dept 等

desc user

演示:从user_tables中找出所有以‘S_’开头的表名

注意:要对‘_’进行转义处理,用‘\_’表示下划线,再加escape  ‘ \ ’  代表是‘\’ 后面的内容进行转义处理

select table_name from user_tables where table_name like 'S\_%'

NULL值的判断

where  字段  is NULL ;

演示:把s_emp表中提成是10的员工的id  first_name commission_pct显示出来

select id, first_name, commission_pct from s_emp where commission_pct=10

  

演示:把s_emp表中提成不是10的员工的id first_name  commission_pct显示出来。

select id, first_name, commission_pct from s_emp where commission_pct!=10

按理来说,一共有25人,不为10的人应该是20个的,但是这里只有3个。这是因为,基本的判定对空值是无效的,必须引入is  NULL对控制进行判定所以要:

select id, first_name, commission_pct from s_emp where commoission_pct is NULL

当然也可以结合nvl,但是用is NULL是标准用法。

条件连接符号

  • and  逻辑与
  • or   逻辑或
  • not  

演示:(1)写程序查询,把s_emp表中id  first_name salary  显示;要求salary在[1450,2500 ] 中。(between 。。。and。。。)

select id, first_name ,salary from s_emp where salary>=1450 and salary<=2500

用这个更加具有通用性,可以是开区间。

(2)写一个查询,把s_emp表中部门标号是31或者32或者50 部门的员工id first_name  dept_id显示出来(5.6.2里的in(。。,。。,。。))

select id, first_name, dept_id from s_emp where dept_id-31 or dept_id-32 or dept_id=50

这里三个都是等价的,不存在顺序问题。

  • >  的对立面是  <=
  •  <  的对立面是  >=
  •  =  的对立面是  !=   ^=   < >  (都是不等于)
  •  between a  and  b  的对立面是  not between  a  and  b
  •  in  的对立面是  not  in
  •  like  的对立面是  not like
  •  is  null  的对立面是  is not  null(只有最后一个不用注意空值,上面的都要注意空值)

 演示:找出manager_id不是空的员工,列出id  first_name manager_id

select id, first_name, manager_id from s_emp where manager_id is not null

条件优先的问题  要优先的部分加括号

演示:(1)显示员工salar  dept_id;

    要求工资大于1000且部门标号为41的员工,或者部门标号为42的员工  

select salary, dept_id from s_emp where salary>1000 and dept_id=41 or dept_id=42

(2)显示员工salar  dept_id;

要求部门标号为41的员工,或者为42的员工里工资大于1000的

select salary, dept_id from s_emp where salary>1000 and (dept_id=41 or dept_id=42)

sql语句之where子句的更多相关文章

  1. SQL语句之on子句过滤和where子句过滤区别

    1.测试数据: SQL> select * from dept;  DEPTNO DNAME          LOC ------ -------------- -------------   ...

  2. sql语句之from子句

    如何从表中查询一个字端的数据 select  字段名  from  表名: 演示:从s_emp表中把月薪查询出来 select salary from s_emp ; (分号代表结束) 如何从表中查询 ...

  3. 数据库性能调优——sql语句优化(转载及整理) —— 篇1

    一.问题的提出                    在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实 ...

  4. 数据库性能优化之SQL语句优化

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写等是体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统 ...

  5. SQL优化的四个方面,缓存,表结构,索引,SQL语句

    一,缓存 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级.所 ...

  6. 数据库 SQL语句优化

    温馨提示:本篇内容均来自网上,本人只做了稍微处理,未进行细致研究,仅当做以后不备之需,如若你喜欢可尽情转走. 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图 ...

  7. 优化的四个方面,缓存,表结构,索引,SQL语句

    一,缓存 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级.所 ...

  8. 数据库性能优化之SQL语句优化(上)

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的 ...

  9. [转]数据库性能优化之SQL语句优化1

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统 ...

随机推荐

  1. MariaDB 存储过程与函数(10)

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...

  2. Swift 里 Array (二)初始化

    init() 函数 在 Array 里 public init() { _buffer = _Buffer() } 以Buffer 是 _ContiguousArrayBuffer 为例. 即初始化了 ...

  3. Java - 初识Java

    Java是一种跨平台的面向对象的程序设计语言. 区分大小写: 标点符号为英文: 强类型语言,在Java中存储的数据,必须在编译时确定其类型: Java版本 Java按应用范围分为3个版本,即Java ...

  4. ss的使用配置(电脑、手机FQ)

    注:FQ仅用于google查阅资料等,禁止违规违法行为 自己搭建ss服务 1.vps购买:https://www.alpharacks.com/holiday 按流程填完相关信息(Operating ...

  5. JFrame、JPanel 、Layout开发的简单例子

    写了Java这么久,居然发现想手写一个带网格袋布局的JFrame,还不记得怎么写,写了这么多代码真不敢说记得所有细节. 幸好,只要记清楚概念就能快速开发.首先,明确一下3种容器类的差别和用途: No. ...

  6. AutoCompleteTextView搭配Poi搜索实现多项选择

    项目需要 需要用到AutoCompleteTextView控件,在输入之后能在下方产生一个推荐结果的列表,就类似于金山词霸一类软件.输入一两个字符就能出来一系列类似的的单词, 这里做的例子是输入城市名 ...

  7. Ubutntu安装docker启动报Removed /etc/systemd/system/docker.service.

    Ubutntu安装docker启动报Removed /etc/systemd/system/docker.service.的错误,只需要执行以下三条命令. systemctl unmask docke ...

  8. MyEclipse 编写 JSP 代码时很卡的解决办法

    在网上看到很多方法,都是尝试过,个人感觉都没有说到重点,所以收效甚微. 后来自己总结了一下: 我们都是习惯在MyEclipse 工具,双击jsp 文件打开进行编辑.这时,工具会打开窗口的 Previe ...

  9. (转)Python3之requests模块

    原文:https://www.cnblogs.com/wang-yc/p/5623711.html Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了.它是为另 ...

  10. JavaScript -- Screen

    -----041-Screen.html----- <!DOCTYPE html> <html> <head> <meta http-equiv=" ...