手表的数字代表什么意思,手表的数字代表什么意思啊

  

  本文继续围绕SQL语法介绍过滤数据,高级过滤数据用通配符进行过滤。   

  

     

  

  01过滤数据   

  

  通常,数据库包含大量数据,很少需要检索表中的所有行。通常根据具体需要只提取表数据的子集。因此,在检索所需数据时,需要指定搜索条件,也称为过滤条件。   

  

  语法:#column_name=列名,table_name=表名,operator=运算符,value=value Select column _ name,column _ name from table _ name where column _ name运算符值   

  

  使用WHERE字句   

  

  在SELECT语句中,WHERE子句用于规定选择的标准,即有条件从表中选择数据。   

  

  示例:select prod_name,prod_price from Products where prod _ price=3.49分析:此语句从Products表中检索两列prod_name和prod _ price,并且不返回所有行,而只返回prod_price值为3.49.的行   

  

  WHERE子句操作符   

  

  以下运算符可用于WHERE子句中:   

  

  操作员   

  

  解释   

  

  =   

  

  胜任   

  

  不等于   

  

  !=   

  

  不等于   

  

  不到   

  

  =   

  

  小于或等于   

  

  !   

  

  不少于   

  

  比.更大   

  

  =   

  

  大于或等于   

  

  !   

  

  至多   

  

  在.之间   

  

  在一定范围内   

  

  为空   

  

  是空值   

  

  喜欢   

  

  搜索模式   

  

  在…里   

  

  指定条件范围   

  

  和   

  

  指示检索满足所有给定条件的行。   

  

  运筹学   

  

  检索匹配任何给定条件的行。   

  

  不   

  

  否定后续条件   

  

  ()   

  

  清除分组   

  

  存在   

  

  确定查询子句是否有记录。   

  

  具体用途如下:   

  

  检查单个值   

  

  示例:列出所有价格低于10美元的产品。Select prod_name,prod_price form products where prod _ price 10 analysis:从products表中检索两列prod_name和prod _ price,并且不返回所有行,只返回prod_price值小于10的行。   

  

  不匹配检查   

  

  示例:检索非供应商DLL01 #制造的所有产品,通常可以将操作员更改为!=,但并非所有DBMS都支持交换SELECT vend_id,prod_name from Products where vend_id ' dll 01 '分析:从Products表中检索PROD _ NAME和VEND _ ID两列,并不返回所有行,只返回vend_id值不等于DLL01的行。   

  

  范围值检查   

  

  示例:检索价格在$5到$10之间的所有产品。Select prod _ name,prod _ price from products where prod _ price between 5 and 10 Analysis:当使用between时,必须指定两个值-the所需范围的下限值和上限值,并且这两个值必须用AND关键字分隔。匹配范围内的值包含指定的下限值和上限值。   

  

  空值检查   

  

  示例:要检索没有价格的产品(no price是指定字段为null,而不是价格为0)select cust _ name from customers WHERE cust _ email是NULL分析:检查值是否为NULL并不容易,但在需要clause-IS NULL子句的地方比较特殊。在该示例中,如果cust_email列不包含空值,则不返回任何数据;否则,将返回指定的数据。   

  


  

02 高级过滤数据

  

上述介绍的WHERE子句在过滤数据时使用的都是单一条件,而为了进行更强的过滤控制,SQL允许给出多个WHERE子句,即多个条件的过滤。

  


  

组合WHERE子句

  

用来联结或改变WHERE子句中的关键字,也称为逻辑操作符,此处有两种形式,分别是AND子句OR子句

  

①AND操作符

  

示例:通过不止一个条件进行过滤SELECT prod_id,prod_price,prod_name FROM Products WHERE vend_id = ‘DLL01’ AND prod_price <= 4分析:该SQL语句检索由供应商DLL01制造且价格小于等于4美元的所有产品的编号、名称和价格。

  

这条SELECT语句的WHERE子句包含两个条件,用AND关键字联结起来,还可以增加条件,但每个条件都需要用AND联结。

  

AND指示DBMS只返回满足所有给定条件的行。

  

②OR操作符

  

示例:检索匹配任一条件的行SELECT prod_id,prod_price,prod_name FROM Products WHERE vend_id = ‘DLL01’ OR vend_id = ‘BRS01’分析:该SQL语句检索由DLL01和BRS01两者中的任一供应商制造的所有产品的编号、名称和价格。

  

OR操作符指示DBMS匹配任一条件,而不是同时匹配两个条件。

  

此处如果将OR换成AND将没有数据返回,因为会创造没有匹配行的WHERE子句。

  

③求值顺序

  

WHERE子句可包含任意数量的AND和OR操作符,以两者结合进行复杂、高级的过滤。

  

但结合AND和OR时会遇到一个问题,那就是SQL通常情况下在处理OR操作符之前,会优先处理AND操作符,这时就无法很好地按照过滤条件顺序检索数据了。

  

此时我们可以借用圆括号对操作符进行分组,以此控制过滤条件的顺序。

  

示例:SELECT prod_name,prod_price FROM Products WHERE (vend_id = ‘DLL01’ OR vend_id = ‘BRS01’) AND prod_price >= 10分析:该语句检索由供应商DLL01或BRS01制造的且价格在10美元及以上的所有产品的名称和价格。

  

若没有圆括号,则最终该语句会检索由供应商BRS01制造的价格为10美元及以上的所有产品,以及供应商DLL01制造的所有产品,不管其价格如何。

  


  

IN操作符

  

IN操作符用来指定条件范围,范围中的每个条件都可进行匹配。IN取一组由逗号分隔、在圆括号中的合法值。

  

示例:SELECT prod_name,prod_price FROM Products WHERE vend_id IN (‘DLL01’,’BRS01’) ORDER BY prod_name分析:该SELECT语句检索由供应商DLL01和BRS01制造的所有产品名称和价格。

  

相比于OR操作符,IN操作符有如下优点

  

在合法选项很多时,IN操作符的语法更清楚;

  

在与其他AND和OR操作符组合使用IN时,求值顺序更易管理;

  

IN操作符一般比一组OR操作符执行更快;

  

IN的最大优点是可包含其他SELECT语句,能更动态地建立WHERE子句。

  


  

NOT操作符

  

WHERE子句中的NOT操作符只具备一个功能,即否定其后所跟的任何条件。NOT通常不是单独使用,且该关键字既可以用在要过滤的列之前,也可在之后。

  

示例:检索出除DLL01之外的所有供应商制造的产品SELECT prod_name FROM Products WHERE NOT vend_id = ‘DLL01’ ORDER BY prod_name分析:该语句检索非DLL01供应商制造的之外的所有产品。其中也可使用<>操作符来完成。

  

NOT操作符适合更复杂的子句,对于简单的WHERE子句,使用NOT并无优势。比如在与IN操作符联合使用时,NOT可简单地找出与条件列表不匹配的列。

  


  

03 用通配符进行过滤

  

通配符是用来匹配值的一部分的特殊字符。上述操作符都针对已知值的过滤条件,当过滤条件比较模糊时便需要用到通配符进行搜索。

  

通配符可在搜索模式中的任意位置使用,且可使用多个通配符。

  


  

LIKE操作符

  

若要在搜索时使用通配符,必须借助LIKE操作符。LIKE指示DBMS后跟的搜索模式利用通配符匹配而不是简单的相等匹配

  

通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用通配符检索。

  

①百分号(%)通配符

  

%是最常用的通配符,其表示在检索时,%表示任何字符出现任意次数,如’FISH%’表示搜索以FISH开头的所有产品,不论FISH后跟的字符以及其出现的次数。

  

示例:搜索以FISH起头的所有产品SELECT prod_id,prod_nameFROM Products WHERE prod_name LIKE ‘FISH%’分析:该语句搜索任意以FISH开头的词。%指示DBMS接受FISH之后的任意字符,不管有多少字符。

  

根据DBMS的不同配置,检索可区分大小写,若区分大小写,则’FISH%’与fish就不匹配。

  

示例:使用两个%通配符SELECT prod_id,prod_name FROM Products WHERE prod_name LIKE ’%bean bag%’分析:搜索模式‘%bean bag%’表示匹配任何位置上包含文本bean bag的值,不论前后出现什么字符。

  

示例:通配符位于搜索模式的中间SELECT prod_name FROM Products WHERE prod_name LIKE ‘F%y’分析:搜索以F开头、y结尾的所有产品。该形式很适合根据邮件地址的一部分来查找电子邮件。

  

需要注意的是%代表搜搜模式中给定位置的0个、1个或多个字符。%通配符不能匹配NULL

  

②下划线(_)通配符

  

下划线用途与%一致,区别是下划线只能匹配单个字符

  

示例:SELECT prod_id,prod_name FROM Products WHERE prod_name LIKE ‘__ inch teddy bear’分析:该语句中的搜索模式给出了后跟有文本的两个通配符,即只能匹配两个字符,而%还可以匹配多个字符或1个字符。

  

③方括号(<>)通配符

  

方括号(<>)通配符常用来指定一个字符集,必须匹配指定位置的一个字符。其中并不是所有的DBMS都支持创建集合的<>。

  

示例:找出所有名字以J或M开头的联系人SELECT cust_contact FROM Customers WHERE cust_contact LIKE ‘%’ ORDER BY cust_contact分析:该语句的WHERE子句搜索模式为‘%’。该搜索模式使用了方括号和%两种通配符。其中匹配方括号中任意一个字符,且只能匹配单个字符,其后的%通配符则匹配第一个字符之后的任意数目的字符。

  

方括号通配符中的字符还可用前缀字符^(脱字号)来否定。

  

TopBDA大数据分析师培训

  

不止SQL语言学习,还能全方位学习大数据分析技术!

  

使用通配符的技巧

  

SQL的通配符很有用,但耗费的搜索时间也比其他搜索要长。此处列出一些使用通配符时需记住的技巧

  

不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符;

  

在确定需要使用通配符时,也尽量不要把它们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的;

  

仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。

  

以上就是本篇文章的全部内容啦!

  

有关SQL的语法内容还没结束,下期将围绕SQL的语法重点为大家介绍创建计算字段函数使用

  

我们下期见!

  

整理不易,点赞、转发帮忙点一下~

相关文章