mysql basic query, conditional query exercise 1

Import these three sql files, you can follow the operation
https://cloud.189.cn/t/NFF7NzyyEZNv (access code: rtu8)
There are 3 tables in it. They can be created successfully by executing each one at a time.
Insert picture description here

One, mysql basic query, conditional query

# 1.1.1基础查询


-- 1.下面的语句是否可以执行成功
SELECT last_name,job_id,salary AS sal FROM employees;
	
-- 2. 下面的语句是否可以执行成功
SELECT * FROM employees;

-- 3.显示departments的结构,并查询其中的全部数据
DESC departments;
SELECT * FROM departments

-- 4.显示出表employees中的全部job_id(不能重复)
SELECT DISTINCT job_id from employees;

-- 5. 查询员工名和姓连接成一个字段,并显示为姓名
SELECT CONCAT(last_name,first_name) as 姓名
FROM employees;



# 1.1.2条件查询
	/*
		语法:
		select 
			查询列表
		from
			表名
		where
			筛选条件;

	分类:
		一)、按条件表达式筛选
		
		简单条件运算符:> < = != <> >= <=
		
		二)、按逻辑表达式筛选
		逻辑运算符:
		作用:用于连接条件表达式
			&& || !
			and or not
			
		&&和and:两个条件都为true,结果为true,反之为false
		||或or: 只要有一个条件为true,结果为true,反之为false
		!或not: 如果连接的条件本身为false,结果为true,反之为false
		
		三)、模糊查询
			like
			between and
			in
			is null
	*/


# 一)、按条件表达式筛选
-- 1.查询工资>12000 的员工信息
SELECT * from employees where salary>12000;

-- 2.查询部门编号不等于90号的员工名和部门编号
SELECT last_name,department_id from employees
WHERE department_id != 90
SELECT last_name,department_id from employees
WHERE department_id <> 90



# 二)、按逻辑表达式筛选
-- 3.查询工资z在10000到20000之间的员工名、工资以及奖金
SELECT last_name, salary,commission_pct from employees
WHERE salary BETWEEN 10000 AND 20000

-- 4.查询部门编号不是在90到110之间,或者工资高于15000的员工信息
SELECT * FROM employees
WHERE NOT(department_id BETWEEN 90 AND 110) 
or salary>15000



# 三)、模糊查询
/*
like
		特点:
				①一般和通配符搭配使用
		通配符:
				% 任意多个字符,包含0个字符
				_ 任意单个字符
	
	
between and
in
is null|is not null

*/
-- 5.查询员工名中包含字符a的员工信息
SELECT * FROM employees
WHERE last_name LIKE '%a%'

-- 6.查询员工名中第三个字符为n,第五个字符为l的员工名和工资
SELECT last_name,salary from employees
WHERE last_name LIKE '__n_l%'							-- Hunold

-- 7.查询员工名中第二个字符为_的员工名
SELECT last_name from employees 
WHERE last_name LIKE '_$_%' ESCAPE '$';		-- K_ing



-- BETWEEN and 的使用
/*
①使用between and 可以提高语句的简洁度
②包含临界值
③两个临界值不要调换顺序
*/
-- 8.查询员工编号在100到120之间的员工信息
SELECT	* FROM	employees
WHERE	employee_id >= 120 AND employee_id<=100;
#----------------------
SELECT	* FROM	employees
WHERE	employee_id BETWEEN 120 AND 100;



-- in 
/*
含义:判断某字段的值是否属于in列表中的某一项
特点:
	①使用in提高语句简洁度
	②in列表的值类型必须一致或兼容
	③in列表中不支持通配符
*/
-- 9.查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
SELECT last_name,job_id FROM employees
WHERE job_id ='IT_PROT' OR job_id='AD_VP' OR job_id='AD_PRES'


SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');


-- is null
/*
=或<>不能用于判断null值
is null或is not null 可以判断null值
*/
-- 10.查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees
WHERE commission_pct is NULL;

-- 11.查询有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees
WHERE commission_pct is not NULL;



Insert picture description here

Guess you like

Origin blog.csdn.net/Anna_Liqi/article/details/110226953