MySQL连接

来源:互联网 发布:苹果手机免费看书软件 编辑:程序博客网 时间:2024/06/09 04:44

一:连接查询:

1.内连接:inner join
2.外连接:out join

二:内连接:

等值连接:where ‘=‘符号
非等值连接:from 返回一个乘积

三:外连接查询:

1.左外连接:
从左表中返回所有的记录,即便在右表中没有匹配的行。
2.右外连接:
表中返回所有的记录,即便在表中没有匹配的行


四:自连接查询:

数据表与自身进行连接:


五:不同的SQL JOIN 对比:

左外连接,右外连接及内连接的对比或区别:

内连接:如果表中至少有一个匹配,则返回行
左外连接:即使右表没有匹配,也从左表返回所有的行,如果该行左表无数据则返回null。
右外连接:即使左表没有匹配,也从右表返回所有的行,如果该行右表无数据则返回null。


六:连接查询参考代码:

CREATE DATABASE myschool;


USE myschool;

#课程表
CREATE TABLE subjects(
subjectNo INT(5) NOT NULL ,
subjectName VARCHAR(5) NOT NULL ,
subjectNum INT(5) NOT NULL ,
NO INT(5) NOT NULL
);

#添加数据
INSERT INTO `subjects`(`subjectNo`,`subjectName`,`subjectNum`,`No`)
VALUES (1,'Java',222,1),(2,'html',160,1),(3,'javaoop',230,2);

#创建年级信息表
CREATE TABLE class(
id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
className VARCHAR(255) NOT NULL
);
#给年级表class 插入数据
INSERT INTO class (`className`) VALUES('大一'),('大二'),('大三'),('大四')

#类别表
CREATE TABLE IF NOT EXISTS category(
categoryId INT(10)  AUTO_INCREMENT  PRIMARY KEY,
categoryName   VARCHAR(32) NOT NULL ,
pid  INT(10)
);

#添加数据
INSERT INTO category (categoryName) 
VALUES('软件开发'),('美术设计')


#内连接
SELECT g.className AS '年级',s.subjectName AS '课程'
FROM subjects AS s INNER JOIN class AS g ON g.id = s.No


#左外连接
SELECT className '年级',subjectName '课程'
FROM subjects AS s LEFT JOIN class AS g ON g.id = s.No


#右外连接
SELECT className '年级',subjectName '课程'
FROM subjects AS s RIGHT JOIN class AS g ON g.id = s.No


#自连接
SELECT a.categoryName AS '父栏目名称',b.categoryName AS '子栏目名称'
FROM category AS a INNER JOIN category AS b ON a.categoryId = b.pid






0 0
原创粉丝点击