Operación básica de la base de datos MySQL--Operación DQL

DQL - consulta básica

concepto

  • Una función importante del sistema de gestión de bases de datos es la consulta de datos. La consulta de datos no debe simplemente devolver los datos almacenados en la base de datos, sino que también debe filtrar los datos y determinar el formato en el que se deben mostrar los datos según sea necesario.
  • MySQL proporciona declaraciones poderosas y flexibles para implementar estas operaciones
  • La base de datos MySQL usa la declaración de selección para implementar la operación de consulta

Sintaxis simplificada

seleccione el nombre de la columna de la tabla donde la condición

preparación de datos

create database if not exists mydb2;
use mydb2;
create table product(
pid int primary key auto_increment,
pname varchar(20) not null,
price double,
catagory_id varchar(20)
);

insert into product values(null,'海尔洗衣机',5000,'c001');
insert into product values(null,'美的冰箱',3000,'c001');
insert into product values(null,'格力空调',5000,'c001');
insert into product values(null,'九阳电饭煲',5000,'c001');

insert into product values(null,'啄木鸟衬衣',300,'c002');
insert into product values(null,'恒源祥西裤',800,'c002');
insert into product values(null,'花花公子夹克',440,'c002');
insert into product values(null,'劲爆休闲裤',266,'c002');
insert into product values(null,'海澜之家唯一',180,'c002');
insert into product values(null,'杰克琼斯运动裤',430,'c002');

insert into product values(null,'兰蔻面霜',300,'c003');
insert into product values(null,'雅诗兰黛精华水',200,'c003');
insert into product values(null,'香奈儿香水',350,'c003');
insert into product values(null,'SK-II神仙水',350,'c003');
insert into product values(null,'资生堂粉底液',180,'c003');

insert into product values(null,'老北京方便面',56,'c004');
insert into product values(null,'良品铺子海带丝',17,'c004');
insert into product values(null,'三只松鼠坚果',88,'c004');

consulta sencilla

-- --简单查询
-- --1查询所有商品

select  pid,pname ,price,catagory_id from product;
-- 或者select * from product
-- 

-- 2查询商品名和商品价格
select pname,price from product;

-- 3.1 表别名
select * from product as p;
-- 或者select * from product p;
-- select p.id,u.id from product,user;
-- 3.2 列别名
select pname as '商品名',price '商品价格' from product;
-- 4去掉重复值
select distinct price from product;
-- 或者select distinct * from product;
-- 5查询结果是表达式(运算查询):将所有商品加价十元后显示
select pname,price+10 new_price from product;

operador

  • Introducción

Después de determinar la estructura de la tabla de la base de datos, se ha determinado el significado representado por los datos en la tabla. Al operar con operadores MySQL, puede volver a datos que no sean la estructura de la tabla.

Por ejemplo, hay un campo de nacimiento en la tabla de estudiantes, que indica el año de nacimiento del estudiante, luego resta este campo de la hora actual para obtener los datos de la edad real del estudiante.

MySQL admite cuatro operadores

  • operador aritmético
  • operador de comparación
  • Operadores logicos
  • operador bit a bit

 operador aritmético

+ Suma
- Sustracción
* Multiplicación
/ o DIV operación de división, devuelve el cociente
% o MOD Operación de resto, devuelve el resto
operador aritmético ilustrar

operador de comparación

 Operadores logicos

 operador bit a bit

Consulta básica

-- 查询商品名称为海尔洗衣机的所有商品
 select * from product where pname='海尔洗衣机';
 -- 查询价格为800商品
 select * from product where price=800;
-- 查询价格不是800的所有商品
select * from product where price!=800;
select * from product where price<>800;
select * from product where not (price=800);
-- 查询商品价格大于60元的所有商品信息
select * from product where price>60;
-- 查询商品价格在200到1000之间所有商品
select * from product where price >= 200 and price <= 1000;
select * from product where price >= 200 and price <=1000;

select * from product where price between 200 and 1000;
-- 查询商品价格是200或800的所有商品
select * from product where price=200 or price=800;
select * from product where price in (200,800);
-- 查询含有‘裤'字的所有商品
select * from product where pname like '%裤%';
-- 查询以'海'开头的所有商品
select * from product where pname like '海%';-- 百分号表示任意字符
-- 查询第二个字为'蔻'的所有商品
select * from product where pname like '_蔻%';
-- 查询category_id为null的商品
select * from product where catagory_id is null;
-- 查询category_id不为null分类的商品
select * from product where catagory_id is not null;
-- 使用least求最小值
select least (10,5,20) as small_number;
select least (10,null,20) as small_number;-- 如果求最小、大值时有null,则无法比较,结果之间为null
-- 使用greatest求最大值

 select greatest (10,5,20) as max_number;

Operaciones de operador - Operadores aritméticos

-- 1算数运算符
select 6 + 2;
select 6 - 2;
select 6 / 2;
select 6 % 2;

-- 将所有商品加10 元
select pname,price+10 as new_price from product;
-- 将所有商品上调10%
select pname,price * 1.1 as new_price from product;

 operadores bit a bit (comprensión)

Ordenar consulta

  • introducir

Si queremos ordenar los datos leídos, podemos usar la cláusula order by de MySQL para establecer por qué campo desea ordenar y luego devolver los resultados de la búsqueda.

select
字段名1,字段名2,...
from 表名
order by 字段名1 [asc|desc],字段名2[asc|desc]
  • características

1.asc significa orden ascendente, desc significa orden descendente , si no está escrito, el orden ascendente predeterminado

2. el orden se usa en la cláusula para admitir un solo campo, múltiples campos, expresiones, funciones, alias

3. La cláusula order by se coloca al final de la declaración de consulta. Excepto por la cláusula LIMIT. 

funcionar

-- 1.使用价格排序(降序)
select * from product order by price desc;
-- 2.在价格排序(降序)的基础上,以分类排序(降序)
select * from product order by price desc,category_id asc;
-- 3.显示商品的价格(去重复),并排序(降序)
select distinct price from product order by price desc;

consulta de agregación

Introducción

Las consultas que hemos hecho antes son todas consultas horizontales, que se juzgan línea por línea según las condiciones, mientras que la consulta que utiliza la función agregada es una consulta vertical, que calcula el valor de una columna y luego devuelve un valor único; además , los valores nulos de la función agregada se ignoran.

funcionar

-- 1 查询商品的总条数
select count(*) from product;
-- 2 查询价格大于200商品的总条数
select count(*) from product where price > 200;
-- 3 查询分类为'c001'的所有商品的总和
select sum(price) from product where category_id = 'c001';
-- 4 查询商品的最大价格
select max(price) from product;
-- 5 查询商品的最小价格
select min(price) from product;
-- 6 查询分类为'c002'所有商品的平均价格
select avg(price) from product where category_id = 'c002';

 Manejo de consultas agregadas de valores NULL

1. La función de conteo maneja valores nulos

Si el parámetro de la función de conteo es un asterisco ( * ), contará el número de todos los registros. Y si el parámetro es un campo determinado, no se contará la cantidad de registros que contienen valores nulos .

2. Las funciones sum y avg manejan valores nulos

Estas dos funciones ignoran la presencia de valores nulos , como si el registro no existiera. El número no se cuenta cuando se calcula el promedio. Si se asume por defecto = 0 al crear, está bien.

3. Las funciones max y min manejan valores nulos

Las funciones  max y min también ignoran la existencia de valores nulos .

funcionar

-- 创建表
create table test_null( 
 c1 varchar(20), 
 c2 int 
);

-- 插入数据
insert into test_null values('aaa',3);
insert into test_null values('bbb',3);
insert into test_null values('ccc',null);
insert into test_null values('ddd',6);
 
-- 测试
select count(*), count(1), count(c2) from test_null;
select sum(c2),max(c2),min(c2),avg(c2) from test_null;

Consulta de grupo (muy importante)

Consulta de grupo se refiere al uso de cláusulas group by para agrupar información de consulta.

Formato

seleccione el campo 1, campo 2... del nombre de la tabla grupo por campo de grupo que tiene condición de grupo;

-- 分组查询
-- select 字段1,字段2...from 表名 group by 分组字段 having 分组条件;
-- 统计各个分类商品的个数,分组之后select后面只能写分组字段和聚合函数
select catagory_id,count(*) from product group by catagory_id;

Filtrado condicional después de agrupar -tener

Si filtra los resultados estadísticos después de agrupar , debe usar tener en lugar de dónde
La cláusula where se usa para filtrar las filas producidas por la operación especificada en la cláusula FROM
La  cláusula group by se utiliza para agrupar la salida de la cláusula WHERE .
La cláusula que tiene se usa para filtrar filas de los resultados agrupados
Formato

seleccione el campo 1, campo 2... del nombre de la tabla grupo por campo de grupo que tiene condición de grupo;

funcionar

-- 2.统计各个分类商品的个数,且只显示个数大于4的信息
select category_id ,count(*) from product group by category_id having count(*) > 4;
顺序(desde, donde, agrupar por, teniendo)

Límite de consulta de paginación

Introducción

La consulta paginada es común en el desarrollo de proyectos. Debido a la gran cantidad de datos y la longitud limitada de la pantalla de visualización, los datos deben mostrarse en páginas. Por ejemplo, hay 30 elementos de datos , 5 elementos se muestran en cada página, 1-5 elementos se muestran en la primera página y 6-10 elementos se muestran en la segunda página. 

Formato

-- Método 1 - mostrar los primeros n elementos

seleccionar campo 1, campo 2... de indica límite n

-- Modo 2-Visualización de paginación

seleccionar campo 1, campo 2... de indica límite m,n

m: número entero, que indica desde qué índice empezar, método de cálculo (página actual - 1) * número de elementos que se muestran en cada página

n: número entero, que indica cuántos datos consultar

funcionar

-- 查询product表的前5条记录 
select * from product limit 5 

-- 从第4条开始显示,显示5条 
select * from product limit 3,5
instrucción INSERT INTO SELECT
Formato

insertar en la Tabla 2 (campo 1, campo 2,...) seleccionar valor 1, valor 2,... de la Tabla 1 或者:

insertar en Table2 seleccionar * de Table1

instrucción SELECCIONAR EN DESDE

Introducción

Para importar datos de una tabla a otra tabla, hay dos opciones: SELECT INTO e INSERT INTO SELECT

Formato

SELECCIONE vale1, valor2 en Table2 de Table1

Se requiere que la tabla de destino Table2 no exista, porque la tabla Table2 se creará automáticamente al insertar, y los datos de campo especificados en Table1 se copiarán en Table2.

Apéndice código completo

create database if not exists mydb2;
use mydb2;
create table product(
pid int primary key auto_increment,
pname varchar(20) not null,
price double,
catagory_id varchar(20)
);

insert into product values(null,'海尔洗衣机',5000,'c001');
insert into product values(null,'美的冰箱',3000,'c001');
insert into product values(null,'格力空调',5000,'c001');
insert into product values(null,'九阳电饭煲',5000,'c001');

insert into product values(null,'啄木鸟衬衣',300,'c002');
insert into product values(null,'恒源祥西裤',800,'c002');
insert into product values(null,'花花公子夹克',440,'c002');
insert into product values(null,'劲爆休闲裤',266,'c002');
insert into product values(null,'海澜之家唯一',180,'c002');
insert into product values(null,'杰克琼斯运动裤',430,'c002');

insert into product values(null,'兰蔻面霜',300,'c003');
insert into product values(null,'雅诗兰黛精华水',200,'c003');
insert into product values(null,'香奈儿香水',350,'c003');
insert into product values(null,'SK-II神仙水',350,'c003');
insert into product values(null,'资生堂粉底液',180,'c003');

insert into product values(null,'老北京方便面',56,'c004');
insert into product values(null,'良品铺子海带丝',17,'c004');
insert into product values(null,'三只松鼠坚果',88,null);

-- --简单查询
-- --1查询所有商品

select  pid,pname ,price,catagory_id from product;
-- 或者select * from product
-- 

-- 2查询商品名和商品价格
select pname,price from product;

-- 3.1 表别名
select * from product as p;
-- 或者select * from product p;
-- select p.id,u.id from product,user;
-- 3.2 列别名
select pname as '商品名',price '商品价格' from product;
-- 4去掉重复值
select distinct price from product;
-- 或者select distinct * from product;
-- 5查询结果是表达式(运算查询):将所有商品加价十元后显示
select pname,price+10 new_price from product;

-- 运算符
use mydb2;
-- 1算数运算符
select 6 + 2;
select 6 - 2;
select 6 / 2;
select 6 % 2;

-- 将所有商品加10 元
select pname,price+10 as new_price from product;
-- 将所有商品上调10%
select pname,price * 1.1 as new_price from product;
-- 2 比较运算符合
 
 -- 3 逻辑运算符
 -- 查询商品名称为海尔洗衣机的所有商品
 select * from product where pname='海尔洗衣机';
 -- 查询价格为800商品
 select * from product where price=800;
-- 查询价格不是800的所有商品
select * from product where price!=800;
select * from product where price<>800;
select * from product where not (price=800);
-- 查询商品价格大于60元的所有商品信息
select * from product where price>60;
-- 查询商品价格在200到1000之间所有商品
select * from product where price >= 200 and price <= 1000;
select * from product where price >= 200 and price <=1000;

select * from product where price between 200 and 1000;
-- 查询商品价格是200或800的所有商品
select * from product where price=200 or price=800;
select * from product where price in (200,800);
-- 查询含有‘裤'字的所有商品
select * from product where pname like '%裤%';
-- 查询以'海'开头的所有商品
select * from product where pname like '海%';-- 百分号表示任意字符
-- 查询第二个字为'蔻'的所有商品
select * from product where pname like '_蔻%';
-- 查询category_id为null的商品
select * from product where catagory_id is null;
-- 查询category_id不为null分类的商品
select * from product where catagory_id is not null;
-- 使用least求最小值
select least (10,5,20) as small_number;
select least (10,null,20) as small_number;-- 如果求最小、大值时有null,则无法比较,结果之间为null
-- 使用greatest求最大值

 select greatest (10,5,20) as max_number;
 -- 4位运算符
-- 使用价格排序(降序)

select * from product order by price desc;
-- 2在价格降序的基础上,以分类降序
select * from product order by price desc,catagory_id desc;
-- 3.显示商品的价格(去重复),并排序(降序)
select distinct price from product order by price desc;

-- 聚合查询

-- 1 查询商品的总条数
select count(pid) from product;
select count(*) from product;
-- 2 查询价格大于200商品的总条数
select count(pid) from product where price > 200;
-- 3 查询分类为'c001'的所有商品的总和
select 
-- 4 查询商品的最大价格
select sum(price) from product where price > 200;
-- 5 查询商品的最小价格
select max(price) from product;
select max(price) max_price, min(price) min_price from product;
-- 6 查询分类为'c002'所有商品的平均价格

select avg(price) from product where catagory_id ='c002';



-- 分组查询
-- select 字段1,字段2...from 表名 group by 分组字段 having 分组条件;
-- 统计各个分类商品的个数,分组之后select后面只能写分组字段和聚合函数
select catagory_id,count(*) from product group by catagory_id;


-- 分页查询
-- 1.查询product表的前五条记录
select * from product limit 5;
-- 2从第四天开始显示,显示五条
 select * from product limit 3,5;-- 从第四天开始显示,显示五条

Supongo que te gusta

Origin blog.csdn.net/weixin_44734502/article/details/126267780
Recomendado
Clasificación