mysql自学笔记五(Navicat Premium 15)

#子查询
/*
含义:
出现在其他语句中的select语句,称为子查询或内查询

分类:
按子查询出现的位置:
				select后面:
								仅仅支持标量子查询
								
				from后面:
								支持表子查询
								
				where或having后面:
								标量子查询
								列子查询
								
								行子查询
				exists后面(相关子查询)
								表子查询
								
按结果集的行列数不同:
				标量子查询(结果只有一行一列)
				列子查询(结果集只有一列多行)
				行子查询(结果集有一行多列)
				表子查询(结果集一般为多行多列)
*/

#一、where或having后面
/*

1、标量子查询(单行子查询)
2、列子查询(多行子查询)

3、行子查询(多列多行)

特点:
①子查询都放在小括号内
②子查询一般放在条件的右侧
③标量子查询,一般搭配着单行操作符使用
> < >= <= <>
列子查询,一般搭配着多行操作符使用
in any some all
④子查询的执行优先于主查询执行,主查询的条件

*/

#1、标量子查询(单行子查询)
#谁的工资比Abel高?
SELECT * FROM employees WHERE salary >( SELECT salary FROM employees WHERE last_name = 'Abel' );

#返回job_id与141号员工相同,salary比143号员工多的员工 姓名 job_id 和工资
SELECT
	last_name,
	job_id,
	salary 
FROM
	employees 
WHERE
	job_id =(
	SELECT
		job_id 
	FROM
		employees 
	WHERE
		employee_id = 141 
	) 
	AND salary >(
	SELECT
		salary 
	FROM
		employees 
	WHERE
		employee_id = 143 
	);

#返回公司工资最少的员工的last_name、job_id和salary

select last_name,job_id,salary from employees where salary=(select min(salary) from employees);

#查询最低工资大于50号部门最低工资的部门id和其最低工资

SELECT
	department_id,
	min( salary ) 
FROM
	employees 
GROUP BY
	department_id 
HAVING
	min( salary )>(
	SELECT
		min( salary ) 
	FROM
		employees 
	WHERE
		department_id = 50 
	);
	
	
#非法使用标量子查询
SELECT department_id, min( salary ) FROM employees GROUP BY department_id HAVING min( salary )>( SELECT salary FROM employees WHERE department_id = 50 );


#2、列子查询(多行子查询)
	
#返回location_id是1400或1700的部门中所有员工的姓名
SELECT
	last_name 
FROM
	employees 
WHERE
	department_id IN (
	SELECT
		department_id 
	FROM
		departments 
	WHERE
	location_id IN ( 1400, 1700 ));

#返回其他部门中比job_id为IT_PROG部门任一工资低的员工的:工号、姓名、job_id以及salary
SELECT
	employee_id,
	last_name,
	job_id,
	salary 
FROM
	employees 
WHERE
	salary < ANY ( SELECT MAX( salary ) FROM employees WHERE job_id = 'IT_PROG' ) 
	AND job_id <> 'IT_PROG';
	
#返回其他部门中比job_id为IT_PROG部门所有工资低的员工的:工号、姓名、job_id以及salary
SELECT
	employee_id,
	last_name,
	job_id,
	salary 
FROM
	employees 
WHERE
	salary < all ( SELECT min( salary ) FROM employees WHERE job_id = 'IT_PROG' ) 
	AND job_id <> 'IT_PROG';

#行子查询(结果集一行多列或多行多列)
#查询员工编号最小并且工资最高的员工信息
SELECT * FROM employees WHERE employee_id =( SELECT min( employee_id ) FROM employees ) AND salary =( SELECT max( salary ) FROM employees );
SELECT * FROM employees WHERE ( employee_id, salary )=( SELECT min( employee_id ), max( salary ) FROM employees );

#二、select后面
/*
只支持标量子查询
*/
#查询每个部门的员工个数
select count(*),department_id from employees group by department_id;

select d.*,(select count(*) from employees e where e.department_id=d.department_id) from departments d;

#查询员工号=102的部门名
select (select department_name from departments d inner join employees e on d.department_id=e.department_id where e.employee_id=102) 部门名;

#三、from后面
/*
	将子查询结果充当一张表,要求必须起别名
*/
#查询每个部门的平均工资的工资等级
select grade_level,department_id from (select avg(salary) a,department_id from employees group by department_id) s inner join job_grades g on s.a between g.lowest_sal and g.highest_sal;

#四、exists后面(相关子查询)
select exists(select employee_id from employees where salary=30000);

#查询有员工名部门名
select department_name from departments d where EXISTS(select * from employees e where d.department_id=e.department_id);

#查询一下没用女朋友的男神信息
1SELECT
	bo.* 
FROM
	boys bo 
WHERE
	bo.id NOT IN ( SELECT boyfriend_id FROM beauty );
2SELECT
	bo.* 
FROM
	boys bo 
WHERE
	NOT EXISTS ( SELECT boyfriend_id FROM beauty b WHERE bo.id = b.boyfriend_id );
	
	
#查询和 Zlotkey相同部门的员工姓名和工资
SELECT last_name, salary FROM employees WHERE department_id =( SELECT department_id FROM employees WHERE last_name = 'Zlotkey' );

#查询工资比公司平均工资高的员工的员工号、姓名、工资
select employee_id,last_name,salary from employees WHERE salary>(select avg(salary) from employees);
	
#查询各部门工资比本部门平均工资高的员工的员工号、姓名和工资
1SELECT
employee_id,
last_name,
salary,
e.department_id 
FROM
	employees e,(
	SELECT
		avg( salary ) a,
		department_id 
	FROM
		employees 
	GROUP BY
		department_id 
	) ea 
WHERE
	salary > a 
	AND e.department_id = ea.department_id;

2SELECT
employee_id,
last_name,
salary,
e.department_id 
FROM
	employees e
	INNER JOIN ( SELECT avg( salary ) a, department_id FROM employees GROUP BY department_id ) ea ON e.department_id = ea.department_id 
WHERE
	salary > a;

#查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名
SELECT
	employee_id,
	last_name 
FROM
	employees 
WHERE
	department_id IN ( SELECT DISTINCT department_id FROM employees WHERE last_name LIKE '%u%' );

#查询在部门的location_id为1700的部门工作的员工的员工号
1SELECT
employee_id 
FROM
	employees e
	INNER JOIN ( SELECT department_id FROM departments WHERE location_id = 1700 ) d ON e.department_id = d.department_id;

2SELECT
employee_id 
FROM
	employees e 
WHERE
	department_id = ANY ( SELECT department_id FROM departments WHERE location_id = 1700 );

#查询管理者是king的员工的姓名和工资
SELECT
	last_name,
	salary 
FROM
	employees e 
WHERE
	manager_id IN ( SELECT employee_id FROM employees WHERE last_name = 'k_ing' );

#查询工资最高的员工的姓名,要求first_name和last_name显示为一列,列名为 姓.名

SELECT
	CONCAT( first_name, '.', last_name ) '姓.名' 
FROM
	employees 
HAVING
	max( salary );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要连接MySQL数据库,首先需要打开Navicat Premium 15软件。然后,点击“新建连接”按钮,选择MySQL作为数据库类型。接下来,填写MySQL服务器的IP地址、端口号、用户名和密码等信息。如果需要加密连接,还需要选择SSL选项。最后,点击“测试连接”按钮,确认连接成功后,就可以开始使用Navicat Premium 15连接MySQL数据库了。 ### 回答2: Navicat Premium 15是一种数据库管理工具,可以帮助用户连接多种数据库,包括MySQL。如果要连接MySQL,需要按照以下步骤操作: 第一步:安装Navicat Premium 15 首先,用户需要在自己的计算机上安装Navicat Premium 15。可以从Navicat官方网站下载安装程序,然后按照提示进行安装。 第二步:创建MySQL连接 打开Navicat Premium 15后,点击“连接”按钮,进入连接管理器。在连接管理器中,可以看到已经存在一些默认的连接,也可以自己创建新的连接。如果要创建MySQL连接,需要点击“新建连接”按钮,然后填写以下信息: - 连接名称:可以自定义,方便识别。 - 连接类型:选择“MySQL”。 - 主机名/IP地址:填写MySQL数据库所在的主机名或IP地址。 - 端口号:填写MySQL数据库的端口号,默认为3306。 - 用户名:填写MySQL数据库的用户名。 - 密码:填写MySQL数据库的密码。 - 数据库:选择要连接的MySQL数据库,如果没有可以先不选,稍后手动选择。 填写完上述信息后,点击“测试连接”按钮,Navicat Premium 15会尝试连接数据库。如果连接成功,会弹出提示框。如果连接失败,可以检查填写的信息是否正确,或者检查网络环境是否畅通。 第三步:开始使用Navicat Premium 15操作MySQL数据库 连接MySQL数据库成功后,就可以使用Navicat Premium 15来操作MySQL数据库了。Navicat Premium 15提供了丰富的功能,例如创建、编辑、删除数据库、表、视图、存储过程等,还可以执行SQL语句、备份、还原等操作。用户可以根据自己的需要,灵活地使用Navicat Premium 15来管理MySQL数据库。 ### 回答3: Navicat Premium 15 是一款非常流行的数据库管理工具。它可以连接多种数据库,包括 MySQL 数据库。下面是如何使用 Navicat Premium 15 连接 MySQL 的步骤: 1. 首先,你需要在你的计算机上安装 Navicat Premium 15 软件和 MySQL 服务器。 2. 打开 Navicat Premium 15,点击左上角 “新建连接” 按钮。在弹出的对话框中,选择 MySQL 作为数据库类型。 3. 输入数据库连接信息:主机名、端口号、用户名和密码。如果你在本地使用 MySQL 服务器,主机名可以是 “localhost”。 4. 在下方的 “高级选项” 中,你可以设置其他选项,比如使用 SSH 加密连接、自定义字符集等。 5. 点击 “测试连接” 按钮,检查连接是否成功。如果连接成功,将会显示一个绿色的提示框。 6. 点击 “保存连接” 按钮,保存连接设置。现在你可以在 Navicat Premium 15 中打开连接,并开始管理 MySQL 数据库了。 总之,使用 Navicat Premium 15 连接 MySQL 非常简单。只需要输入一些连接设置,就可以轻松连接到 MySQL 服务器,管理和查询数据库了。该软件还支持许多其他功能,包括数据导入和导出、数据备份、查询构建器等等。如果你需要更多的帮助和支持,可以查看 Navicat Premium 15 的官方文档和论坛。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

友培

数据皆开源!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值