常用SQL语句(连接查询)

表数据

Create Table

部门表
CREATE TABLE `t_dept` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `dept_name` varchar(255) DEFAULT NULL COMMENT '部门名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

员工表

Create Table

CREATE TABLE `t_emp` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `emp_name` varchar(255) NOT NULL COMMENT '员工姓名',
  `password` varchar(255) DEFAULT NULL COMMENT '密码',
  `email` varchar(255) DEFAULT NULL,
  `salary` decimal(10,0) DEFAULT NULL COMMENT '工资',
  `gender` int(1) NOT NULL COMMENT '性别',
  `birthday` date DEFAULT NULL COMMENT '生日',
  `dept_id` int(11) DEFAULT NULL COMMENT '部门id',
  `job_id` int(11) DEFAULT NULL COMMENT '岗位id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8

职位表

Create Table

CREATE TABLE `t_job` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job_name` varchar(255) DEFAULT NULL COMMENT '岗位名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8




 

 1.什么是连接查询,连接查询的分类

什么是连接查询?
从多表联合查取出最终结果


连接查询的分类
(1)根据语法来划分
SQL92
SQL99(常用)
(2)根据连接方式划分
内连接:
   等值连接
   非等值连接
   自连接
外连接:
   左外连接(左连接)
   右外连接(右连接)
全连接

2.笛卡尔积怎么产生的,如何解决笛卡尔积


笛卡尔积的产生
当两张表进行连接查询在没有条件限制的情况下,两张表记录数的乘积

如何解决笛卡尔积
添加查询条件

 3.内连接与外连接的区别

内连接两个表没有主副之分关系是平等的,而外链接列如A和B两个表,A为主表B为副表主要查询的是A表
的数据,如果副表与主表的数据不匹配,副表自动模拟出null与之匹配

 4.内连接的用法

内连接:等值连接 特点:连接条件是等量关系
SQL92:
SELECT * FROM t_dept t,t_emp p WHERE t.id=p.dept_id;
SQL99:(常用,inner可以省略)
SELECT * FROM t_dept t JOIN t_emp p ON t.id=p.dept_id;
==
select * from t_dept t inner join t_emp e on t.id=e.dept_id;

内连接:非等值连接 特点:连接条件是非等量关系
SELECT * FROM t_dept t JOIN t_emp p ON t.sal between p.lsal and p.psal;

内连接:自连接 特点:将自身一个表看成两个表进行连接查询
SELECT * FROM t_emp t1,t_emp t2 WHERE t1.job_id=t2.job_id;

5.外连接的用法(特点无条件查询主表数据)

外连接:右外连接(已右表为基准表,左表与之进行匹配查询,没有匹配的数据用null进行拼接)
SELECT * FROM t_dept t RIGHT OUTER JOIN t_emp t2 ON t.id=t2.dept_id;(outer可以省略)

外连接:左外连接(已左表为基准表,右表与之进行匹配查询,没有匹配的数据用null进行拼接)
SELECT * FROM t_dept t LEFT OUTER JOIN t_emp t2 ON t.id=t2.dept_id;(outer可以省略)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值