【愚公系列】2023年10月 Java教学课程 093-MySQL数据库(SQL介绍)

在这里插入图片描述

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏


🚀一、数据库的基本概念

🔎1.为什么要学数据库

学习数据库是为了掌握数据管理和处理的技能。数据库是存储和管理数据的软件系统,它们是现代计算机系统中最重要的组成部分之一。在当今信息化时代,数据库已广泛应用于企业、政府、教育等各个领域,成为重要的数据管理工具。学习数据库可以让我们掌握数据的组织和管理方法、数据的查询和更新技巧、数据的备份和恢复方法等,这些技能对于开发应用程序、网站、系统等都非常有用。同时,学习数据库还可以提升我们的就业竞争力,成为企业中的重要人才。

🔎2.什么是数据库

数据库是一种组织数据的方式,它是数据的集合,以及存储、检索、管理和更新这些数据的软件工具。它是一个带有结构的数据集合,可以通过计算机程序进行访问、修改和更新。数据库的目的是为了方便、高效地存储和管理数据,以支持各种应用程序和业务需求。例如,企业可以使用数据库来存储和管理客户信息、订单信息、库存信息等等。常见的数据库软件包括MySQL、Oracle、SQL Server、PostgreSQL等。

🔎3.数据库的好处

好处描述
数据共享多个用户可以共享同一个数据库,实现数据的共享和统一管理。
数据一致性通过数据库的事务管理和数据约束,可以确保数据的一致性。
数据安全性通过数据库的权限管理和加密等技术,可以保障数据的安全性。
数据备份恢复数据库可以提供数据备份和恢复功能,使数据能够在灾难时得到保障。
数据完整性数据库可以在插入、更新和删除数据时检查数据的完整性,以保证数据的正确性。
数据处理效率使用数据库可以提高数据的处理效率,同时也可以减少数据处理的时间和成本。
数据可维护性使用数据库可以方便地进行数据管理和维护,包括数据迁移、数据修改和数据查询等。

🔎4.常见的数据库有哪些

数据库类型数据库名称
关系型数据库MySQL
关系型数据库Oracle
关系型数据库SQL Server
非关系型数据库MongoDB
非关系型数据库Redis
非关系型数据库Cassandra
分布式数据库HBase
分布式数据库Cassandra
图形数据库Neo4j
图形数据库OrientDB
时间序列数据库InfluxDB
时间序列数据库OpenTSDB
空间数据库PostGIS
空间数据库Oracle Spatial
文档数据库Couchbase
文档数据库RavenDB
列式数据库Vertica
列式数据库Hadoop
内存数据库Memcached
内存数据库Redis
搜索引擎Elasticsearch
搜索引擎Solr

🚀二、MySQL数据库的介绍和安装

🔎1.MySQL数据库介绍

MySQL是一个开源的、基于关系型数据库管理系统的软件。它是多线程、多用户的,并且可以用于多种操作系统,如Linux、Windows和Mac OS等操作系统。MySQL的特点包括具有高性能、易于使用、可靠性高、安全性强、支持事务处理、支持多种数据类型、支持多种编程语言、可伸缩性强等。

MySQL支持的数据类型包括数字、字符串、日期、时间和二进制数据等。MySQL也支持各种数据操作,如插入、查询、更新和删除等。它也支持事务处理,保证数据的完整性和一致性。此外,MySQL支持多种编程语言,如C、C++、Java、Perl、PHP和Python等,便于数据库的应用开发和集成。MySQL还具有可伸缩性强的特点,可以支持从个人网站到大型企业应用的各种规模。

🔎2.MySQL安装和配置

MySQL是一个流行的开源关系型数据库管理系统。以下是MySQL的安装和配置步骤:

  1. 下载MySQL:访问MySQL官方网站,下载适用于您操作系统的MySQL安装程序。

  2. 安装MySQL:运行下载的MySQL安装程序并按照安装向导的指示进行安装。在安装期间,您将被要求设置root用户的密码。

  3. 启动MySQL服务器:安装完成后,启动MySQL服务器。如果在Windows上安装,可以在“服务”中找到MySQL服务并启动它。

  4. 连接MySQL:MySQL安装完后,可以使用MySQL客户端来连接服务器。可以使用命令行界面,也可以使用图形化工具,例如MySQL Workbench。

  5. 配置MySQL:默认情况下,MySQL安装程序会将MySQL服务器安装为一个本地服务。您可以对MySQL进行配置,以更好地满足您的需求。

  6. 加强MySQL安全:MySQL在默认设置下可能存在一些安全漏洞。为了保障服务器的安全性,建议加强MySQL的安全性配置,例如更改root用户密码、创建新用户、限制MySQL服务器的访问权限等。

MySQL数据库安装教程:https://blog.csdn.net/aa2528877987/article/details/121604835

mysql涉及的操作如下:

  1. 修改mysql默认字符集
vi /etc/my.cnf

添加如下内容:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

-- 需要在最下方填写
[client]
default-character-set=utf8
  1. 启动mysql服务
service mysqld start
  1. 登录mysql
mysql -u root -p  敲回车,输入密码
初始密码查看:cat /var/log/mysqld.log
在root@localhost:   后面的就是初始密码
  1. 修改mysql登录密码
set global validate_password_policy=0;

set global validate_password_length=1;

set password=password('密码');
  1. 授予远程连接权限
//授权
grant all privileges on *.* to 'root' @'%' identified by '密码';
//刷新
flush privileges;
  1. 关闭Linux系统防火墙
systemctl stop firewalld.service

🚀三、SQL语句

🔎1.数据库、数据表、数据的关系介绍

数据库是一种用于存储、管理和访问数据的集合。通常,数据库内的数据按一定的结构(如表、索引、视图)组织并存储在硬盘上。

数据表是数据库中的一个主要组件。它是用于存储数据的数据结构,通常以行和列的方式组织。每个数据表都由一个或多个列组成,每列对应数据表中的一种数据类型。一组相同数据类型的列就组成了一个行。

数据表之间可以建立不同的关系。常见的关系有:一对一、一对多、多对多。例如,一个订单可以与一位客户对应,但一个客户可以拥有多个订单。在数据库中,这种关系可以用外键来实现。

数据的关系是指数据表之间的联系和关联关系。这些关系可以通过建立外键、联合查询等方式来实现。例如,订单和客户之间的关系可以通过订单表中存储客户ID来实现。这样,在需要查询订单信息时,可以联合查询客户表,从而获取客户的详细信息。

在这里插入图片描述

🔎2.SQL介绍

🦋2.1 什么是SQL

SQL(Structured Query Language)是一种用于管理关系型数据库的语言,它可以用于创建、删除、修改和查询数据库中的数据。SQL语言被广泛应用于各种数据库系统,包括MySQL、Oracle、SQL Server、PostgreSQL等。SQL的核心是一组用于操作数据库的命令和语法,包括查询、插入、更新、删除等操作。SQL语言的优点在于它是一种简单易用、具有通用性的语言,使得开发人员可以轻松地实现数据库操作,同时也让普通用户可以方便地查询和更新数据。

🦋2.2 SQL通用语法

SQL是结构化查询语言,常用于关系型数据库管理系统中的数据管理和查询。其通用语法如下:

  1. SELECT语句:用于查询数据
SELECT column_name1, column_name2, ... FROM table_name WHERE condition;

其中,column_name为要查询的列名,可以是多个,用逗号隔开;table_name为要查询的表名;condition为查询条件,可以是一个或多个。

  1. INSERT语句:用于插入数据
INSERT INTO table_name(column_name1, column_name2, ...) VALUES(value1, value2, ...);

其中,column_name为要插入的列名,可以是多个,用逗号隔开;value为要插入的值,可以是一个或多个。

  1. UPDATE语句:用于修改数据
UPDATE table_name SET column_name1=value1, column_name2=value2, ... WHERE condition;

其中,column_name为要修改的列名,可以是多个,用逗号隔开;value为要修改的值,可以是一个或多个;condition为修改条件,可以是一个或多个。

  1. DELETE语句:用于删除数据
DELETE FROM table_name WHERE condition;

其中,table_name为要删除数据的表名;condition为删除条件,可以是一个或多个。

  1. CREATE语句:用于创建表
CREATE TABLE table_name(column_name1 data_type1, column_name2 data_type2, ...);

其中,table_name为要创建的表名;column_name为表的列名,可以是多个,用逗号隔开;data_type为数据类型,如INT、FLOAT、VARCHAR等。

  1. DROP语句:用于删除表
DROP TABLE table_name;

其中,table_name为要删除的表名。

  1. ALTER语句:用于修改表结构
ALTER TABLE table_name ADD column_name data_type;

其中,table_name为要修改的表名;column_name为要添加的列名;data_type为数据类型。

🦋2.3 SQL分类

SQL分类描述
数据查询语言(DQL)用于从数据库中检索数据的SQL语句,如SELECT。
数据操作语言(DML)用于修改或删除数据库中的数据的SQL语句,如INSERT、UPDATE和DELETE。
数据定义语言(DDL)用于定义和修改数据库结构的SQL语句,如CREATE、ALTER和DROP。
数据控制语言(DCL)用于授权或取消授权数据库用户的SQL语句,如GRANT和REVOKE。
事务控制语言(TCL)用于管理数据库中的事务,如COMMIT和ROLLBACK。
扩展SQL(ESQL)用于编写应用程序和处理各种数据库管理任务的SQL语句扩展。

在这里插入图片描述

🔎3.DDL-操作数据库

  • R(Retrieve):查询

    • 查询所有数据库
    -- 查询所有数据库
    SHOW DATABASES;
    
    • 查询某个数据库的创建语句
    -- 标准语法
    SHOW CREATE DATABASE 数据库名称;
    
    -- 查看mysql数据库的创建格式
    SHOW CREATE DATABASE mysql;
    
  • C(Create):创建

    • 创建数据库
    -- 标准语法
    CREATE DATABASE 数据库名称;
    
    -- 创建db1数据库
    CREATE DATABASE db1;
    
    -- 创建一个已存在的数据库会报错
    -- 错误代码:1007  Can't create database 'db1'; database exists
    CREATE DATABASE db1;
    
    • 创建数据库(判断,如果不存在则创建)
    -- 标准语法
    CREATE DATABASE IF NOT EXISTS 数据库名称;
    
    -- 创建数据库db2(判断,如果不存在则创建)
    CREATE DATABASE IF NOT EXISTS db2;
    
    • 创建数据库、并指定字符集
    -- 标准语法
    CREATE DATABASE 数据库名称 CHARACTER SET 字符集名称;
    
    -- 创建数据库db3、并指定字符集utf8
    CREATE DATABASE db3 CHARACTER SET utf8;
    
    -- 查看db3数据库的字符集
    SHOW CREATE DATABASE db3;
    
    • 练习:创建db4数据库、如果不存在则创建,指定字符集为gbk
    -- 创建db4数据库、如果不存在则创建,指定字符集为gbk
    CREATE DATABASE IF NOT EXISTS db4 CHARACTER SET gbk;
    
    -- 查看db4数据库的字符集
    SHOW CREATE DATABASE db4;
    
  • U(Update):修改

    • 修改数据库的字符集
    -- 标准语法
    ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;
    
    -- 修改数据库db4的字符集为utf8
    ALTER DATABASE db4 CHARACTER SET utf8;
    
    -- 查看db4数据库的字符集
    SHOW CREATE DATABASE db4;
    
  • D(Delete):删除

    • 删除数据库
    -- 标准语法
    DROP DATABASE 数据库名称;
    
    -- 删除db1数据库
    DROP DATABASE db1;
    
    -- 删除一个不存在的数据库会报错
    -- 错误代码:1008  Can't drop database 'db1'; database doesn't exist
    DROP DATABASE db1;
    
    • 删除数据库(判断,如果存在则删除)
    -- 标准语法
    DROP DATABASE IF EXISTS 数据库名称;
    
    -- 删除数据库db2,如果存在
    DROP DATABASE IF EXISTS db2;
    
  • 使用数据库

    • 查询当前正在使用的数据库名称
    -- 查询当前正在使用的数据库
    SELECT DATABASE();
    
    • 使用数据库
    -- 标准语法
    USE 数据库名称;
    
    -- 使用db4数据库
    USE db4;
    

🔎4.DDL-操作数据表

  • R(Retrieve):查询

    • 查询数据库中所有的数据表
    -- 使用mysql数据库
    USE mysql;
    
    -- 查询库中所有的表
    SHOW TABLES;
    
    • 查询表结构
    -- 标准语法
    DESC 表名;
    
    -- 查询user表结构
    DESC user;
    
    • 查询表字符集
    -- 标准语法
    SHOW TABLE STATUS FROM 库名 LIKE '表名';
    
    -- 查看mysql数据库中user表字符集
    SHOW TABLE STATUS FROM mysql LIKE 'user';
    
  • C(Create):创建

    • 创建数据表

      • 标准语法
      CREATE TABLE 表名(
          列名1 数据类型1,
          列名2 数据类型2,
          ....
          列名n 数据类型n
      );
      -- 注意:最后一列,不需要加逗号
      
      • 数据类型
      1. int:整数类型
      	* age int
      2. double:小数类型
      	* score double(5,2)
      	* price double
      3. date:日期,只包含年月日     yyyy-MM-dd
      4. datetime:日期,包含年月日时分秒	 yyyy-MM-dd HH:mm:ss
      5. timestamp:时间戳类型	包含年月日时分秒	 yyyy-MM-dd HH:mm:ss	
      	* 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
      6. varchar:字符串
      	* name varchar(20):姓名最大20个字符
      	* zhangsan 8个字符  张三 2个字符
      
      • 创建数据表
      -- 使用db3数据库
      USE db3;
      
      -- 创建一个product商品表
      CREATE TABLE product(
      	id INT,				-- 商品编号
      	NAME VARCHAR(30),	-- 商品名称
      	price DOUBLE,		-- 商品价格
      	stock INT,			-- 商品库存
      	insert_time DATE    -- 上架时间
      );
      
      • 复制表
      -- 标准语法
      CREATE TABLE 表名 LIKE 被复制的表名;
      
      -- 复制product表到product2表
      CREATE TABLE product2 LIKE product;
      
  • U(Update):修改

    • 修改表名
    -- 标准语法
    ALTER TABLE 表名 RENAME TO 新的表名;
    
    -- 修改product2表名为product3
    ALTER TABLE product2 RENAME TO product3;
    
    • 修改表的字符集
    -- 标准语法
    ALTER TABLE 表名 CHARACTER SET 字符集名称;
    
    -- 查看db3数据库中product3数据表字符集
    SHOW TABLE STATUS FROM db3 LIKE 'product3';
    -- 修改product3数据表字符集为gbk
    ALTER TABLE product3 CHARACTER SET gbk;
    -- 查看db3数据库中product3数据表字符集
    SHOW TABLE STATUS FROM db3 LIKE 'product3';
    
    • 添加一列
    -- 标准语法
    ALTER TABLE 表名 ADD 列名 数据类型;
    
    -- 给product3表添加一列color
    ALTER TABLE product3 ADD color VARCHAR(10);
    
    • 修改列名称和数据类型
    -- 修改数据类型 标准语法
    ALTER TABLE 表名 MODIFY 列名 新数据类型;
    
    -- 将color数据类型修改为int
    ALTER TABLE product3 MODIFY color INT;
    -- 查看product3表详细信息
    DESC product3;
    
    
    -- 修改列名和数据类型 标准语法
    ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
    
    -- 将color修改为address,数据类型为varchar
    ALTER TABLE product3 CHANGE color address VARCHAR(30);
    -- 查看product3表详细信息
    DESC product3;
    
    • 删除列
    -- 标准语法
    ALTER TABLE 表名 DROP 列名;
    
    -- 删除address列
    ALTER TABLE product3 DROP address;
    
  • D(Delete):删除

    • 删除数据表
    -- 标准语法
    DROP TABLE 表名;
    
    -- 删除product3表
    DROP TABLE product3;
    
    -- 删除不存在的表,会报错
    -- 错误代码:1051  Unknown table 'product3'
    DROP TABLE product3;
    
    • 删除数据表(判断,如果存在则删除)
    -- 标准语法
    DROP TABLE IF EXISTS 表名;
    
    -- 删除product3表,如果存在则删除
    DROP TABLE IF EXISTS product3;
    

🔎5.DML-INSERT语句

  • 新增表数据语法

    • 新增格式1:给指定列添加数据
    -- 标准语法
    INSERT INTO 表名(列名1,列名2,...) VALUES (值1,值2,...);
    
    -- 向product表添加一条数据
    INSERT INTO product(id,NAME,price,stock,insert_time) VALUES (1,'手机',1999,22,'2099-09-09');
    
    -- 向product表添加指定列数据
    INSERT INTO product (id,NAME,price) VALUES (2,'电脑',4999);
    
    -- 查看表中所有数据
    SELECT * FROM product;
    
    • 新增格式2:默认给全部列添加数据
    -- 标准语法
    INSERT INTO 表名 VALUES (值1,值2,值3,...);
    
    -- 默认给全部列添加数据
    INSERT INTO product VALUES (3,'电视',2999,18,'2099-06-06');
    
    -- 查看表中所有数据
    SELECT * FROM product;
    
    • 新增格式3:批量添加数据
    -- 默认添加所有列数据 标准语法
    INSERT INTO 表名 VALUES (值1,值2,值3,...),(值1,值2,值3,...),(值1,值2,值3,...);
    
    -- 批量添加数据
    INSERT INTO product VALUES (4,'冰箱',999,26,'2099-08-08'),(5,'洗衣机',1999,32,'2099-05-10');
    -- 查看表中所有数据
    SELECT * FROM product;
    
    
    -- 给指定列添加数据 标准语法
    INSERT INTO 表名(列名1,列名2,...) VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);
    
    -- 批量添加指定列数据
    INSERT INTO product (id,NAME,price) VALUES (6,'微波炉',499),(7,'电磁炉',899);
    -- 查看表中所有数据
    SELECT * FROM product;
    
  • 注意事项

    • 列名和值的数量以及数据类型要对应
    • 除了数字类型,其他数据类型的数据都需要加引号(单引双引都可以,推荐单引)

🔎6.DML-UPDATE语句

  • 修改表数据语法
-- 标准语法
UPDATE 表名 SET 列名1 = 值1,列名2 = 值2,... [where 条件];

-- 修改手机的价格为3500
UPDATE product SET price=3500 WHERE NAME='手机';

-- 查看所有数据
SELECT * FROM product;

-- 修改电视的价格为1800、库存为36
UPDATE product SET price=1800,stock=36 WHERE NAME='电视';

-- 修改电磁炉的库存为10
UPDATE product SET stock=10 WHERE id=7;
  • 注意事项
    • 修改语句中必须加条件
    • 如果不加条件,则将所有数据都修改

🔎7.DML-DELETE语句

  • 删除表数据语法
-- 标准语法
DELETE FROM 表名 [WHERE 条件];

-- 删除product表中的微波炉信息
DELETE FROM product WHERE NAME='微波炉';

-- 删除product表中库存为10的商品信息
DELETE FROM product WHERE stock=10;

-- 查看所有商品信息
SELECT * FROM product;
  • 注意事项
    • 删除语句中必须加条件
    • 如果不加条件,则将所有数据删除

🔎8.DQL-单表查询

  • 数据准备(直接复制执行即可)
-- 创建db1数据库
CREATE DATABASE db1;

-- 使用db1数据库
USE db1;

-- 创建数据表
CREATE TABLE product(
	id INT,				-- 商品编号
	NAME VARCHAR(20),	-- 商品名称
	price DOUBLE,		-- 商品价格
	brand VARCHAR(10),	-- 商品品牌
	stock INT,			-- 商品库存
	insert_time DATE    -- 添加时间
);

-- 添加数据
INSERT INTO product VALUES (1,'华为手机',3999,'华为',23,'2088-03-10'),
(2,'小米手机',2999,'小米',30,'2088-05-15'),
(3,'苹果手机',5999,'苹果',18,'2088-08-20'),
(4,'华为电脑',6999,'华为',14,'2088-06-16'),
(5,'小米电脑',4999,'小米',26,'2088-07-08'),
(6,'苹果电脑',8999,'苹果',15,'2088-10-25'),
(7,'联想电脑',7999,'联想',NULL,'2088-11-11');
  • 查询语法
select
	字段列表
from
	表名列表
where
	条件列表
group by
	分组字段
having
	分组之后的条件
order by
	排序
limit
	分页限定
  • 查询全部
-- 标准语法
SELECT * FROM 表名;

-- 查询product表所有数据
SELECT * FROM product;
  • 查询部分

    • 多个字段查询
    -- 标准语法
    SELECT 列名1,列名2,... FROM 表名;
    
    -- 查询名称、价格、品牌
    SELECT NAME,price,brand FROM product;
    
    • 去除重复查询
      • 注意:只有全部重复的才可以去除
    -- 标准语法
    SELECT DISTINCT 列名1,列名2,... FROM 表名;
    
    -- 查询品牌
    SELECT brand FROM product;
    -- 查询品牌,去除重复
    SELECT DISTINCT brand FROM product;
    
    • 计算列的值(四则运算)
    -- 标准语法
    SELECT 列名1 运算符(+ - * /) 列名2 FROM 表名;
    
    /*
    	计算列的值
    	标准语法:
    		SELECT 列名1 运算符(+ - * /) 列名2 FROM 表名;
    		
    	如果某一列为null,可以进行替换
    	ifnull(表达式1,表达式2)
    	表达式1:想替换的列
    	表达式2:想替换的值
    */
    -- 查询商品名称和库存,库存数量在原有基础上加10
    SELECT NAME,stock+10 FROM product;
    
    -- 查询商品名称和库存,库存数量在原有基础上加10。进行null值判断
    SELECT NAME,IFNULL(stock,0)+10 FROM product;
    
    • 起别名
    -- 标准语法
    SELECT 列名1,列名2,... AS 别名 FROM 表名;
    
    -- 查询商品名称和库存,库存数量在原有基础上加10。进行null值判断。起别名为getSum
    SELECT NAME,IFNULL(stock,0)+10 AS getsum FROM product;
    SELECT NAME,IFNULL(stock,0)+10 getsum FROM product;
    
  • 条件查询

    • 条件分类
    符号功能
    >大于
    <小于
    >=大于等于
    <=小于等于
    =等于
    <> 或 !=不等于
    BETWEEN … AND …在某个范围之内(都包含)
    IN(…)多选一
    LIKE 占位符模糊查询 _单个任意字符 %多个任意字符
    IS NULL是NULL
    IS NOT NULL不是NULL
    AND 或 &&并且
    OR 或 ||或者
    NOT 或 !非,不是
    • 条件查询语法
    -- 标准语法
    SELECT 列名 FROM 表名 WHERE 条件;
    
    -- 查询库存大于20的商品信息
    SELECT * FROM product WHERE stock > 20;
    
    -- 查询品牌为华为的商品信息
    SELECT * FROM product WHERE brand='华为';
    
    -- 查询金额在4000 ~ 6000之间的商品信息
    SELECT * FROM product WHERE price >= 4000 AND price <= 6000;
    SELECT * FROM product WHERE price BETWEEN 4000 AND 6000;
    
    -- 查询库存为14、30、23的商品信息
    SELECT * FROM product WHERE stock=14 OR stock=30 OR stock=23;
    SELECT * FROM product WHERE stock IN(14,30,23);
    
    -- 查询库存为null的商品信息
    SELECT * FROM product WHERE stock IS NULL;
    -- 查询库存不为null的商品信息
    SELECT * FROM product WHERE stock IS NOT NULL;
    
    -- 查询名称以小米为开头的商品信息
    SELECT * FROM product WHERE NAME LIKE '小米%';
    
    -- 查询名称第二个字是为的商品信息
    SELECT * FROM product WHERE NAME LIKE '_为%';
    
    -- 查询名称为四个字符的商品信息
    SELECT * FROM product WHERE NAME LIKE '____';
    
    -- 查询名称中包含电脑的商品信息
    SELECT * FROM product WHERE NAME LIKE '%电脑%';
    
  • 聚合函数

    • 将一列数据作为一个整体,进行纵向的计算
    • 聚合函数分类
    函数名功能
    count(列名)统计数量(一般选用不为null的列)
    max(列名)最大值
    min(列名)最小值
    sum(列名)求和
    avg(列名)平均值
    • 聚合函数语法
    -- 标准语法
    SELECT 函数名(列名) FROM 表名 [WHERE 条件];
    
    -- 计算product表中总记录条数
    SELECT COUNT(*) FROM product;
    
    -- 获取最高价格
    SELECT MAX(price) FROM product;
    -- 获取最高价格的商品名称
    SELECT NAME,price FROM product WHERE price = (SELECT MAX(price) FROM product);
    
    -- 获取最低库存
    SELECT MIN(stock) FROM product;
    -- 获取最低库存的商品名称
    SELECT NAME,stock FROM product WHERE stock = (SELECT MIN(stock) FROM product);
    
    -- 获取总库存数量
    SELECT SUM(stock) FROM product;
    -- 获取品牌为苹果的总库存数量
    SELECT SUM(stock) FROM product WHERE brand='苹果';
    
    -- 获取品牌为小米的平均商品价格
    SELECT AVG(price) FROM product WHERE brand='小米';
    
  • 排序查询

    • 排序分类
      • 注意:多个排序条件,当前边的条件值一样时,才会判断第二条件
    关键词功能
    ORDER BY 列名1 排序方式1,列名2 排序方式2对指定列排序,ASC升序(默认的) DESC降序
    • 排序语法
    -- 标准语法
    SELECT 列名 FROM 表名 [WHERE 条件] ORDER BY 列名1 排序方式1,列名2 排序方式2;
    
    -- 按照库存升序排序
    SELECT * FROM product ORDER BY stock ASC;
    
    -- 查询名称中包含手机的商品信息。按照金额降序排序
    SELECT * FROM product WHERE NAME LIKE '%手机%' ORDER BY price DESC;
    
    -- 按照金额升序排序,如果金额相同,按照库存降序排列
    SELECT * FROM product ORDER BY price ASC,stock DESC;
    
  • 分组查询

-- 标准语法
SELECT 列名 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤] [ORDER BY 排序列名 排序方式];

-- 按照品牌分组,获取每组商品的总金额
SELECT brand,SUM(price) FROM product GROUP BY brand;

-- 对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额
SELECT brand,SUM(price) FROM product WHERE price > 4000 GROUP BY brand;

-- 对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额,只显示总金额大于7000元的
SELECT brand,SUM(price) AS getSum FROM product WHERE price > 4000 GROUP BY brand HAVING getSum > 7000;

-- 对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额,只显示总金额大于7000元的、并按照总金额的降序排列
SELECT brand,SUM(price) AS getSum FROM product WHERE price > 4000 GROUP BY brand HAVING getSum > 7000 ORDER BY getSum DESC;
  • 分页查询
-- 标准语法
SELECT 列名 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤] [ORDER BY 排序列名 排序方式] LIMIT 开始索引,查询条数;
-- 公式:开始索引 = (当前页码-1) * 每页显示的条数

-- 每页显示2条数据
SELECT * FROM product LIMIT 0,2;  -- 第一页 开始索引=(1-1) * 2
SELECT * FROM product LIMIT 2,2;  -- 第二页 开始索引=(2-1) * 2
SELECT * FROM product LIMIT 4,2;  -- 第三页 开始索引=(3-1) * 2
SELECT * FROM product LIMIT 6,2;  -- 第四页 开始索引=(4-1) * 2

🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚公搬代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值