SQL 다중 테이블 쿼리 소개

SQL 다중 테이블 쿼리 소개

  • (1) 데이터 초기화
  • (2) 실제 프로젝트에서는 데이터가 여러 테이블에 저장되며, 필요한 데이터가 여러 테이블에서 나온 경우에는 멀티 테이블 쿼리를 사용해야합니다.
  • (3) 질의의 분류
    "1 : 교차 조인 질의 (이해)
    "2 : 내부 조인 질의
    암시 적 내부 조인, 명시 적 내부 조인 ***
    "3 : 외부 조인 질의
    왼쪽 외부 조인, 오른쪽 외부 조인
    "4 : Sub 조회
# 初始化数据
create database day13_3;
use database day13_3;

create table category (
  cid int primary key ,
  cname varchar(50)
);
create table products(
  pid int primary key ,
  pname varchar(50),
  price int,
  flag varchar(2),				#是否上架标记为:1表示上架、0表示下架
  category_id int,
  constraint products_fk foreign key (category_id) references category (cid)
);


#分类
insert into category(cid,cname) values('1','家电');
insert into category(cid,cname) values('2','服饰');
insert into category(cid,cname) values('3','化妆品');
#商品
insert into products(pid, pname,price,flag,category_id) values('1','联想',5000,'1',1);
insert into products(pid, pname,price,flag,category_id) values('2','海尔',3000,'1',1);
insert into products(pid, pname,price,flag,category_id) values('3','雷神',5000,'1',1);

insert into products (pid, pname,price,flag,category_id) values('4','杰克琼斯',800,'1',2);
insert into products (pid, pname,price,flag,category_id) values('5','真维斯',200,'1',2);
insert into products (pid, pname,price,flag,category_id) values('6','花花公子',440,'1',2);

insert into products (pid, pname,price,flag,category_id) values('7','劲霸',2000,'1',2);
insert into products (pid, pname,price,flag,category_id) values('8','香奈儿',800,'1',2);
insert into products (pid, pname,price,flag,category_id) values('9','相宜本草',200,'1',2);

다중 테이블 쿼리-교차 조인 쿼리

(1) 교차 조인 쿼리는 무엇입니까?
교차 조인 쿼리는 A와 B의 두 테이블을 곱하는 것입니다. —> A * B
(2) 데카르트 집합이란 무엇입니까?
데이터가 올바른지 여부에 관계없이 두 테이블을 곱한 결과
여기에 사진 설명 삽입

(3)
다중 테이블 쿼리 의 본질 다중 테이블 쿼리는 Cartesian 집합을 기반으로 한 조건부 필터링으로 이해할 수 있습니다.
(4) Case : 각 범주 및 해당 범주의 모든 제품을 쿼리합니다.

select * from category,products;

다중 테이블 쿼리 내부 조인

  • (1) 내부 조인 쿼리 란 무엇입니까?
    당신이 찾는 것은 여러 테이블의 교차점입니다.
    본질은 Cartesian 집합에 조건을 추가하는 것입니다.
  • (2) 분류 :
    암시 적 내부 조인 : A, B에서 조건
    선택 , 명시 적 내부 조인 : 조건 따라 A 내부 조인 B 에서 선택 , (높은 효율성)
    (3)
    "키워드 내부 조인 사용
    "이전 데카르트 집합을 기준으로 필터링하고, 후자는 원래 목록에 있습니다.
    (4) 연습 :도 및 도시
隐式内连接:select * from A,B where 条件;

select * from category c,products p where c.cid = p.category_id;

显式内连接:select * from A inner join B on 条件;(效率更高)

select * from category c inner	join products p on c.cid = p.category_id;


select * from province,city;
select * from province p inner join city c on p.pid = c.pid_fk;

다중 테이블 쿼리 외부 조인

  • (1) 외부 조인 쿼리 란 무엇입니까?
    두 테이블 중 하나를 선택하여 모든 데이터를 출력하고 다른 테이블은 해당 데이터가 없으면 NULL을 출력합니다.
  • (2) 구분
    왼쪽 외부 조인
    select * from A left outer join B on 条件;
    은 주로 왼쪽 테이블에 있고, 왼쪽 테이블의 모든 데이터가 출력 되고, 오른쪽 테이블에 상응하는 데이터가 없으면 NULL이 채워집니다.
    오른쪽 외부 조인
    select * from A right outer join B on 条件;
    은 주로 오른쪽 테이블을 기준으로하며 오른쪽 테이블의 모든 데이터가 출력됩니다. 테이블에 동등한 데이터가 없으면 NULL을 채 웁니다.
    여기에 사진 설명 삽입
# 外连接

select * from province p inner join city c on p.pid = c.pid_fk;
# 左外连接
select * from province p left outer join city c on p.pid = c.pid_fk;

# 右外连接
select * from province p right outer join city c on p.pid = c.pid_fk;

실습
(1)
각 배우가 어떤 역할을 수행하는지 질문 합니다. (2) 각 배우가 어떤 역할을하고 어떤 권한을 가지고 있는지 질문합니다.

하위 쿼리

  • (1) 서브 쿼리 란?
    선택 중첩 : 한 선택의 쿼리 결과가 다른 선택 쿼리 구문의 일부로 사용됩니다.
  • (2) Cases
    상품 표에서 전자 분류에 속하는 상품을 조회
select *from product where cid = 1
select cid from category where cname='电子'

select *from product where cid = (select cid from category where cname='电子')


제품 테이블에서 가전 ​​및 화장품 카테고리에 속하는 제품을 쿼리합니다. 제품 테이블에서 화장품 카테고리에 속하는 제품을 쿼리합니다 (선택 쿼리 후에 테이블이 표시됨).

추천

출처blog.csdn.net/qq_37924905/article/details/108759720