SQL 03

来源:互联网 发布:淘宝小号交易平台源码 编辑:程序博客网 时间:2024/06/05 05:40

过滤数据 :根据搜索条件(filter condition)检索数据

Where 子句(在from之后): 会根据该句中的条件进行过滤
如: select prod_name,prod_price from products where prod_price= 3.49;
–检索两列,输出prod_price=3.49的行

 在同时使用order by 子句和where子句时,order by子句应该放在where 之后,否则会产生错误

Where子句操作符
= !=
< <=

=
!> 不大于
!< 不小于
Between 在2个值之间
Is null 为null的值

如:
SELECT prod_name,prod_price from products where prod_price<10;
SELECT prod_name,vend_id FROM products WHERE vend_id!=’DLL01’;

AND 关键字和Between的使用:
如 Select prod_name,prod_price from products where prod_price between 5 and 10;

NULL no value 与字段包含0 空字符串和空格不同,指空值
Select prod_name from products where prod_price is null;
SELECT cust_name FROM customers WHERE cust_email IS NULL;

组合where子句: sql允许给出多个where子句,这些子句有两种使用方式,以and子句和or子句方式使用。
操作符: 用来联结和改变where子句中的子句的关键字,也称为逻辑操作符。

AND操作符:
SELECT prod_id ,prod_price,prod_name FROM products WHERE vend_id=’DLL01’ AND prod_price<=4 ;

OR 操作符:
SELECT prod_name,prod_price FROM products WHERE vend_id =’DLL01’ OR vend_id=’BRS01’

求值顺序 当or和and一起使用时,and的优先级会更高
如:
SELECT prod_name ,prod_price FROM products WHERE
Vend_id = ‘DLL01’ OR vend_id = ‘BRS01’ AND prod_price >=10;
会先过滤
vend_id = ‘BRS01’ AND prod_price >=10
再过滤
Vend_id = ‘DLL01’
会产生歧义,所以要用括号进行分组,避免歧义
SELECT prod_name ,prod_price FROM products WHERE
(Vend_id = ‘DLL01’ OR vend_id = ‘BRS01’) AND prod_price >=10;

IN 操作符 用来指定条件范围,范围中的每个条件都可以进行匹配
如:
SELECT prod_name ,prod_price FROM products WHERE
Vend_id IN ( ‘DLL01’ , ‘BRS01’)ORDER BY prod_name;

匹配vend_id 在圆括号的任意值,简化了or操作符的使用

NOT 操作符 where子句中的not只有一个功能即否定其后跟的任何条件,不单独使用
如:
SELECT prod_name , Vend_id FROM products WHERE
NOT Vend_id = ‘DLL01’ ORDER BY prod_name;

SELECT prod_name ,prod_price FROM products WHERE
NOT Vend_id IN ( ‘DLL01’ , ‘BRS01’)ORDER BY prod_name;
–not操作符与in连接使用非常方便。

用通配符进行过滤

通配符:用来匹配值得一部分的特殊字符,仅使用于文本字段搜索模式:由字面值或者两者组合构成的搜索条件。

LIKE操作符

百分号通配符%
如 SELECT prod_id ,prod_name FROM products WHERE prod_name LIKE ‘Fish%’;
–找出prod_name中以Fish开头的数据,其中’Fish%’就是搜索模式
–在mysql中搜索模式不区分大小写

SELECT prod_id ,prod_name FROM products WHERE prod_name LIKE '%bean bag%';

–找出prod_name中包含’bean bag‘的数据

WHERE PROD_NAME LIKE ‘%’

–不会匹配null值的数据

下划线_通配符
如:
SELECT prod_id ,prod_name FROM products WHERE prod_name LIKE ‘__ inch teddy bear’;
–2个下划线通配符
–1个下划线对应一个字符

方括号 [] 通配符
–SELECT cust_contact FROM customers WHERE cust_contact LIKE ‘[JM]%’ ;
–匹配J或M开头的cust_contact数据

 在mysql中不起作用,mysql中的【】是正则表达式方式