Introducción a la consulta de múltiples tablas SQL

Introducción a la consulta de múltiples tablas SQL

  • (1) Inicializar datos
  • (2) En el proyecto real, los datos se almacenan en varias tablas. Si los datos requeridos provienen de varias tablas, es necesario utilizar la consulta de varias tablas
  • (3) La clasificación de consultas
    "1: Consulta de combinación cruzada (comprensión)
    " 2: Consulta de combinación
    interna Unión interna implícita, combinación interna explícita ***
    "3: Consulta de combinación
    externa Unión externa izquierda, combinación externa derecha
    " 4: Sub Preguntar
# 初始化数据
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);

Consulta de tabla múltiple-consulta de combinación cruzada

(1) ¿Qué consulta de combinación
cruzada ? La consulta de combinación cruzada consiste en multiplicar dos tablas: A y B -> A * B
(2) ¿Qué es un conjunto cartesiano?
El resultado de multiplicar dos tablas, independientemente de si los datos son correctos
Inserte la descripción de la imagen aquí

(3) La esencia de la
consulta de varias tablas La consulta de varias tablas puede entenderse como un filtrado condicional sobre la base del conjunto cartesiano.
(4) Caso: consulta cada categoría y todos los productos de esa categoría.

select * from category,products;

Unión interna de consulta de varias tablas

  • (1) ¿Qué es la consulta de combinación interna?
    Lo que busca es la intersección de varias tablas, la
    esencia es agregar condiciones al conjunto cartesiano.
  • (2) Clasificación:
    combinación interna implícita: seleccione * de A, B donde condición; combinación interna
    explícita: seleccione * de A combinación interna B en condición; (mayor eficiencia)
    (3) diferencia
    "usando la palabra clave combinación interna
    " anterior Filtrar sobre la base del conjunto cartesiano, este último en la lista original
    (4) Ejercicio: Provincias y ciudades
隐式内连接: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;

Unión externa de consulta de varias tablas

  • (1) ¿Qué es una consulta de combinación externa?
    Seleccione una de las dos tablas para generar todos los datos, y la otra tabla generará NULL si no hay datos correspondientes
  • (2) Clasificación
    La combinación externa izquierda se
    select * from A left outer join B on 条件;
    encuentra principalmente en la tabla de la izquierda, se generan todos los datos de la tabla de la izquierda, si no hay datos equivalentes en la tabla de la derecha, se completa NULL. La
    combinación externa derecha
    select * from A right outer join B on 条件;
    se basa principalmente en la tabla de la derecha y todos los datos de la tabla de la derecha se obtienen, Complete NULL si no hay datos equivalentes en la tabla
    Inserte la descripción de la imagen aquí
# 外连接

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;

Práctica
(1) Consultar qué papel juega cada actor
(2) Consultar qué papel tiene cada actor y qué permisos

Subconsulta

  • (1) ¿Qué es una subconsulta?
    Seleccionar anidamiento: el resultado de la consulta de una selección se utiliza como parte de la sintaxis de otra consulta de selección
  • (2) Casos
    Consultar productos pertenecientes a la clasificación electrónica en la tabla de productos
select *from product where cid = 1
select cid from category where cname='电子'

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

Consultar los productos pertenecientes a la categoría de electrodomésticos y cosméticos
en la tabla de productos Consultar los productos pertenecientes a la categoría de cosméticos en la tabla de productos (obtendrá una tabla después de la consulta de selección)

Supongo que te gusta

Origin blog.csdn.net/qq_37924905/article/details/108759720
Recomendado
Clasificación