Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44825
  • 博文数量: 8
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2019-05-30 16:32
文章分类
文章存档

2019年(8)

我的朋友

分类: Mysql/postgreSQL

2019-06-01 16:51:32

select条件查询的格式如下:

SELECT
	查询列表
FROM	
	表名
WHERE
	筛选条件;

根据筛选条件可以分为以下几类:


按照条件按表达式进行筛选


常用条件运算符如下:> 、<、=、!=、<>、<=、>=


按照逻辑表达式进行筛选


逻辑运算符的主要作用:用于连接条件表达式


& 、 || 、! 、and、or、not


模糊查询


like、between and 、in、is null


like通常和通配符搭配使用:


①:%:代表任意多个字符


②:_:代表任意单个字符


举个栗子:


/**查询员工工资大于10000的员工信息**/
SELECT * FROM employees WHERE salary > 1000;
/**查询部门标号不等于90号的员工名和部门编号 **/
SELECT name,department_id FROM employees WHERE department_id <> 90;
/**查询工资在1000-2000之间的员工名,工资 **/
SELECT name,salary FROM employees WHERE salary >= 1000 and salary <=2000;
/**查询部门编号不再20-40之间或者工资高于15000员工信息 **/
SELECT * FROM employees WHERE department_id < 20
ike:


/**查询员工名中包含a的员工信息**/
SELECT * FROM employeess WHERE last_name like '%a%';
/**查询员工名中第三个字符为n,第五个字符为m的员工信息 **/
SELECT * FROM employees WHERE last_name like '__n_m%';
/**查询员工名中第二个字符_的员工信息**/
/**方法一:使用转义字符"\"**/
SELECT * FROM employees WHERE last_name like '_\_%';
/**方法二:自定义转义字符**/
SELECT * FROM employees WHERE last_name like '_$_%' ESCAPE '$';

between and 、in

/**查询员工工资在1000-2000之间的员工信息(包含临界值)**/
SELECT * FROM employees WHERE salary BETWEEN 1000 AND 2000;
/**查询员工工种编号为IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号**/
/**方法一:**/
SELECT job_id,last_name FROM employees 
WHERE job_id ='IT_PROG' OR 
 job_id ='AD_VP' OR 
 job_id ='AD_PRES' ;
/**方法二:**/
SELECT job_id,last_name FROM employeess
WHERE job_id in ('IT_PROG','AD_VP','AD_PRES');

in关键字的特点:


判断某字段的值是否属于in列表项中的某一项
in列表中的值都是统一类型或者相互兼容(即可以相互转换)
is null
郑州不孕不育医院排行:

/**查询员工没有奖金的员工名和奖金率**/
SELECT last_name,commission_pct 
FROM employeess 
WHERE commission_pct IS NULL;
/**查询员工有奖金的员工名和奖金率**/
SELECT last_name,commission_pct 
FROM employeess 
WHERE commission_pct IS NOT NULL;

正常数值的判断 null判断 可读性
安全等于 <=> 可以判断 可以判断
is null 不可以判断 可以判断

/**查询员工号为124的员工名和部门号以及年薪**/
SELECT 
last_name,
department_id,
slary*12(1+IFNULL(comission_pct,0)) AS 年薪
FROM employees
WHERE department_id = 124;
/**查询employeess表中都涉及到了哪些部门编号**/
SELECT DISTINCT department_id FROM employees ;

思考题:


/**语句1:**/
SELECT * FROM employees;
/**语句2:**/
SELECT * FROM emplooyees
WHERE comission_pct LIKE '%%' AND last_name LIKE'%%';
/**语句3:**/
SELECT * FROM emplooyees
WHERE comission_pct LIKE '%%' OR last_name LIKE'%%';

问题1:语句1和语句2查询结果是否相同?


> 不相同,如果comission_id为null(即没有没有任何字符)是查询不出来的;
> 当comission_id不可能为null时,两者的查询结果是相同的

问题2:语句1和语句3查询结果是否相同


> 相同,因为last_name不可能为null值,此时即使comission_id为null也会被查询出来。
--------------------- 
作者:Lomon6 
来源:CSDN 
原文:https://blog.csdn.net/qq_43952245/article/details/90449204 
版权声明:本文为博主原创文章,转载请附上博文链接!

--------------------- 
作者:Lomon6 
来源:CSDN 
原文:https://blog.csdn.net/qq_43952245/article/details/90449204 
版权声明:本文为博主原创文章,转载请附上博文链接!

阅读(1781) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~