MySql教程

MySQL学习笔记篇八

本文主要是介绍MySQL学习笔记篇八,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

本节主要内容:等值连接、非等值连接、自然连接、外连接(左、右连接);

连接分为内连接、外连接、自然连接。

其中,内连接包括等值连接、非等值连接、自连接;外连接包括左外连接、右外连接;

1、等值连接:

1)两个表查询条件相等才显示;

2)与多表联查约束主外键是一样的;

3)ON后面只写主外键;

例如1:SELECT * FROM student st INNER JOIN score sc ON st.id=sc.st_id;

例如2:SELECT * FROM student st, score sc where st.id=sc.st_id;

例如3:等值连接查询成绩大于70的学生

SELECT * FROM student  st INNER JOIN score sc ON st.id=sc.st_id where sc.score>70;

2、非等值连接:

假设有员工表employer表如下:

id

name

job

shangji

hiredate

salary

reward

dep_id

1100

张一

经理

2001

2020-10-12

15000

300

00

1101

张二

客服

2002

2019-09-09

8000

01

1102

张三

客服

2003

2017-09-23

8000

02

1103

李四

业务人员

2004

2020-11-09

7800

500

03

1104

王五

经理

2005

2021-01-06

17800

04

1105

赵六

业务人员

2006

2021-03-28

7800

05

1106

赵七

客服

2007

2020-06-26

8000

06

部门表department表如下:

dep_id

name

local

00

客服部

北京

01

业务部

上海

02

运营部

广州

03

销售部

青岛

薪水等级表SG表如下:

grade

lowsalary

highsalary

1

1000

5000

2

5001

9000

3

9001

13000

4

13001

17000

5

17001

21000

查询所有员工的姓名、工资,所在部门的名称以及工资的等级

法一:SELECT e.name, e.salary, d.name  FROM employer e, department d , SG s where e.dep_id=d.dep_id and e.salary >= s.lowsalary and e.salary <= s.highsalary ;

法二:SELECT e.name, e.salary, d.name  FROM employer e join department on e.dep_id=d.dep_id join SG s on e.salary between s.lowsalary and  s.highsalary ;

3、自连接:

连接查询会产生无用笛卡尔集,我们通常使用主外键关系等式来去除它;

而自然连接无需给出主外键等式,它会自动找到这一等式;

要求:两张连接的表中列名和类型完全一致的列作为条件;会去除相同的列;

假设学生表student表如下:

s_id

name

age

1

张一

21

2

张二

25

3

张三

28

成绩表score表如下:

s_id

score

name

1

80

张一

2

76

张二

3

69

张三

语句:SELECT * FROM student natural join score;

4、外连接:

这篇关于MySQL学习笔记篇八的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!