mysql自学笔记四(Navicat Premium 15)

#连接查询
/*
含义:又称为多表查询,当查询的字段来自于多个表时,就会用到连接查询

笛卡尔乘积现象:表1 有m行,表2有n行,结果为=m*n行

发生原因:没有有效的连接条件
如何避免:添加有效的连接条件

分类: 
			按年代分类
			sq192标准
			sq199标准【推荐】
			
			按功能分类:
							内连接:
											等值连接
											非等值连接
											自连接
							外连接:
											左外连接
											右外连接
											全外连接
							交叉连接:
											
											

*/

#一、sq192标准
#1、等值连接
/*
①多表的等值连接的结果为多表的交集部分
②n表连接,至少需要n-1连接条件
③多表的顺序没有要求
④一般需要为表起别名
⑤可以搭配前面所有的查询子句使用,比如排序、分组、筛选
*/

#查询女神名和对应的男神名
select name,boyName from boys,beauty where beauty.boyfriend_id=boys.id;

#查询部门名对应的员工名
select department_name,last_name from employees,departments where employees.department_id=departments.department_id;

		#2、为表起别名
/*

①提高语句的简洁度
②区分多个重名的字段

*/

#查询员工名、工种号、工种名
select last_name,e.job_id,job_title from employees e,jobs  j where e.job_id=j.job_id;


		#3、两个表的顺序是否可以调换

#查询员工名、工种号、工种名
select last_name,e.job_id,job_title from jobs j,employees e where e.job_id=j.job_id;

		#4、可以加筛选

#查询有奖金的员工名、部门名
select last_name,department_name from employees,departments where  employees.department_id=departments.department_id and commission_pct is not null;

#查询城市名第二个字符为o的部门名和城市名

select department_name,city from departments,locations where departments.location_id=locations.location_id and city like '_o%';

#查询每个城市的部门的个数
select count(*),city from locations,departments where locations.location_id=departments.location_id group by city;

#查询有奖金的每个部门的部门名和部门的领导编号和该部门的最低工资
select 	department_name,departments.manager_id,min(salary) from employees,departments where departments.department_id=employees.department_id and commission_pct is not null group by department_name;

		#6、可以加排序

#查询每个工种的工种名和员工的个数,并且按员工个数降序
select job_title,count(*) from employees,jobs where employees.job_id=jobs.job_id group by job_title order by count(*) desc;

		#7、可以实现三表连接

#查询员工名、部门名和所在的城市
select last_name,department_name,city from departments,employees,locations where employees.department_id=departments.department_id and departments.location_id=locations.location_id;

	#2、非等值连接

/*CREATE TABLE job_grades
(grade_level VARCHAR(3),
 lowest_sal  int,
 highest_sal int);

INSERT INTO job_grades
VALUES ('A', 1000, 2999);

INSERT INTO job_grades
VALUES ('B', 3000, 5999);

INSERT INTO job_grades
VALUES('C', 6000, 9999);

INSERT INTO job_grades
VALUES('D', 10000, 14999);

INSERT INTO job_grades
VALUES('E', 15000, 24999);

INSERT INTO job_grades
VALUES('F', 25000, 40000);*/
#查询员工的工资和工资级别

select salary,employee_id from employees;
select salary,grade_level from job_grades,employees where 
 salary BETWEEN job_grades.lowest_sal and job_grades.highest_sal;

	#3、自连接

#查询员工名和上级的名称

select s1.last_name 员工名字,s2.last_name 上级名字 from employees s1,employees s2 where s1.manager_id=s2.employee_id;


#二、sql99语法
/*
语法:
			select 查询列表
			from 表1 别名 【连接类型】
			join 表2 别名
			on 连接条件
			where 筛选条件
			
分类
内连接:inner
外连接:
				左外:left 【outer】
				右外:right 【outer】
				全外:full 【outer】
交叉连接:CROSS
*/

# 一)内连接
/*
语法:
			select 查询列表
			from 表1 别名 
			inner join 表2 别名
			on 连接条件
			
分类:
等值
非等值
自连接

特点:
1、添加排序、分组、筛选
2、inner可以省略
3、筛选条件可以放在where后面,连接条件放在on后面,提高分离性,便于阅读
4、inner join 连接和sql192语法中的等值连接效果是一样的,都是查询多表的交集
*/

#1、等值连接
#查询员工名、部门名
select last_name,department_name from employees e
INNER JOIN departments d on e.department_id=d.department_id;

#查询名字中包含e的员工名和工种名
select last_name,job_title from employees e INNER JOIN jobs j on e.job_id=j.job_id where e.last_name like '%e%';

#查询部门个数大于3的城市名和部门个数(添加分组+筛选)

select city,COUNT(*) 部门个数 from departments d
INNER JOIN locations l on d.location_id=l.location_id group by city having 部门个数>3; 


#查询哪个部门的员工个数大于3的部门名和员工个数,并按个数降序(添加排序)

select count(*),department_name from employees e inner join departments d on e.department_id=d.department_id
group by department_name having count(*)>3 order by count(*) desc;

#查询员工名、部门名、工种名,并按照部门名降序(三表连接)
select last_name,department_name,job_title from employees e INNER JOIN departments d on e.department_id=d.department_id INNER JOIN jobs j on j.job_id=e.job_id order by department_name;

#2、非等值连接
#查询员工的工资级别

select salary,grade_level from employees e join job_grades g on e.salary BETWEEN g.lowest_sal and g.highest_sal;

#查询每个工资级别的个数>20,并且按照工资级别降序
select count(*),grade_level from employees e join job_grades g on e.salary BETWEEN g.lowest_sal and g.highest_sal group by grade_level having count(*)>20 order by grade_level desc;

#3、自连接
#查询姓名中包含字符k员工的名字、上级的名字
select e.last_name,m.last_name from employees e join employees m on e.manager_id=m.employee_id where e.last_name like 'k%%';


#二、外连接
/*
应用场景:

特点:			    
    1、外连接的查询结果为主表中的所有记录,如果从表中有匹配的,则显示匹配的值,如果没有,则显示null
		2、左外连接,left  join左边的是主表
			 右外连接,right join右边的是主表
	  3、左外和右外交换两个表的顺序,可以实现同样的效果
		4、全外连接=内连接的结果+表1中有但表2中没有的+表2中有但表1没有的
		
*/
#查询没有男朋友的女神名
select b.name,bo.* from beauty b left outer join boys bo on b.boyfriend_id=bo.id where bo.id is null;

#查询哪个部门没有员工
#左外
select d.*,e.employee_id from departments d left outer join employees e on d.department_id=d.department_id where e.employee_id is not null;
#右外
select d.*,e.employee_id from employees e right outer join departments d  on d.department_id=d.department_id where e.employee_id is not null;

#全外

select b.*,bo.*from beauty b FULL outer JOIN boys bo on b.boyfriend_id=bo.id; #会报错,不支持,结果应该是两表交集

#三、交叉连接
select b.*,bo.* from beauty b cross join boys bo;

#sql92和sql99 
功能:sql99支持的较多
可读性: sql99实现连接的条件和筛选条件的分离,可读性较高
  • 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、付费专栏及课程。

余额充值