SQL之连表查询

打印 上一主题 下一主题

主题 1051|帖子 1051|积分 3153

1、内连接

  语法:
  1. SELECT 查询字段1,查询字段2, ... FROM 表1 [INNER] JOIN 表2 ON 表1.关系字段=表2.关系字段
复制代码
  准备数据
  1. -- 若存在数据库mydb则删除
  2. DROP DATABASE IF EXISTS mydb;
  3. -- 创建数据库mydb
  4. CREATE DATABASE mydb;
  5. -- 选择数据库mydb
  6. USE mydb;
  7. -- 创建部门表
  8. CREATE TABLE department(
  9.   did int (4) NOT NULL PRIMARY KEY,
  10.   dname varchar(20)
  11. );
  12. -- 创建员工表
  13. CREATE TABLE employee (
  14.   eid int (4) NOT NULL PRIMARY KEY,
  15.   ename varchar (20),
  16.   eage int (2),
  17.   departmentid int (4) NOT NULL
  18. );
  19. -- 向部门表插入数据
  20. INSERT INTO department VALUES(1001,'财务部');
  21. INSERT INTO department VALUES(1002,'技术部');
  22. INSERT INTO department VALUES(1003,'行政部');
  23. INSERT INTO department VALUES(1004,'生活部');
  24. -- 向员工表插入数据
  25. INSERT INTO employee VALUES(1,'张三',19,1003);
  26. INSERT INTO employee VALUES(2,'李四',18,1002);
  27. INSERT INTO employee VALUES(3,'王五',20,1001);
  28. INSERT INTO employee VALUES(4,'赵六',20,1004);
复制代码
查询:
  1. select employee.ename,department.dname from department inner join employee on department.did=employee.departmentid;
复制代码
output:

2、外连接查询-左连接

  语法:
  1. SELECT 查询字段1,查询字段2, ... FROM 表1 LEFT | RIGHT [OUTER] JOIN 表2 ON 表1.关系字段=表2.关系字段 WHERE 条件
复制代码
2.1、LEFT [OUTER] JOIN 左(外)连接:返回包括左表中的所有记录和右表中符合连接条件的记录。
2.2、RIGHT [OUTER] JOIN 右(外)连接:返回包括右表中的所有记录和左表中符合连接条件的记录。
准备数据:
  1. -- 若存在数据库mydb则删除
  2. DROP DATABASE IF EXISTS mydb;
  3. -- 创建数据库mydb
  4. CREATE DATABASE mydb;
  5. -- 选择数据库mydb
  6. USE mydb;
  7. -- 创建班级表
  8. CREATE TABLE class(
  9.   cid int (4) NOT NULL PRIMARY KEY,
  10.   cname varchar(20)
  11. );
  12. -- 创建学生表
  13. CREATE TABLE student (
  14.   sid int (4) NOT NULL PRIMARY KEY,
  15.   sname varchar (20),
  16.   sage int (2),
  17.   classid int (4) NOT NULL
  18. );
  19. -- 向班级表插入数据
  20. INSERT INTO class VALUES(1001,'Java');
  21. INSERT INTO class VALUES(1002,'C++');
  22. INSERT INTO class VALUES(1003,'Python');
  23. INSERT INTO class VALUES(1004,'PHP');
  24. -- 向学生表插入数据
  25. INSERT INTO student VALUES(1,'张三',20,1001);
  26. INSERT INTO student VALUES(2,'李四',21,1002);
  27. INSERT INTO student VALUES(3,'王五',24,1002);
  28. INSERT INTO student VALUES(4,'赵六',23,1003);
  29. INSERT INTO student VALUES(5,'Jack',22,1009);
复制代码
查询:
  1. select class.cid,class.cname,student.sname from class left outer join student on class.cid=student.classid;
复制代码
output:

3、外连接查询-右连接

查询:
  1. select class.cid,class.cname,student.sname from class right outer join student on class.cid=student.classid;
复制代码
output:

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

嚴華

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表