Chapter 33 SQL语言

欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能!


前言

SQL不仅是数据库管理系统(DBMS)的标准语言,更是数据分析和数据驱动决策的基础工具。本章将详细讲解SQL语言的数据定义(DDL)、数据操纵(DML)与数据查询(DQL)这三个方面。


本篇文章参考:黑马程序员

一、概述

①定义
SQL全称为结构化查询语言(Structured Query Language),是一种用于访问和处理数据库的标准计算机语言。

SQL 语言于1974年由 Boyce 和 Chamberlin 提出,并首次在 IBM 公司的关系数据库系统 System R 上实现。经过多年的发展,SQL 已成为数据库领域的统一数据操作标准语言。几乎所有市面上的数据库系统都支持使用 SQL 语言进行操作。

②分类
由于数据库管理系统(数据库软件)功能众多,除了存储数据外,还包括数据管理、表管理、库管理、账户管理和权限管理等。因此,SQL 语言可以根据其功能划分为四类:

  • 数据定义语言(DDL,Data Definition Language):
    用于库的创建删除、表的创建删除等
  • 数据操纵语言(DML,Data Manipulation Language):
    负责数据的新增、删除和修改等
  • 数据控制语言(DCL,Data Control Language):
    用于新增用户、删除用户、修改密码和权限管理等
  • 数据查询语言(DQL,Data Query Language):
    基于需求查询和计算数据

③语法特征
特征一:SQL语言大小写不敏感
我们可以利用DBeaver图形化工具的SQL编辑器编写SQL语句。
在这里插入图片描述

Show databases;

在这里插入图片描述

Show DataBases;

在这里插入图片描述

特征二:SQL可以单行或多行书写,最后以;号结束

SHOW
databases;

在这里插入图片描述

特征三:SQL支持注释

  • 单行注释: -- 注释内容(--后面一定要有一个空格)
  • 单行注释:# 注释内容(# 后面可以不加空格,建议加上)
  • 多行注释:/* 注释内容 */

单行注释:

SHOW
-- 我是注释(写法一)
# 我是注释(写法二)
databases;

多行注释:

SHOW
/*
我
是
注释
*/
databases;

二、数据定义(DDL)

数据定义语言(DDL,Data Definition Language),用于定义和管理数据库结构,包括数据库和表的创建、修改和删除。
①库管理
在这里插入图片描述

②表管理
在这里插入图片描述

三、数据操纵(DML)

数据操纵语言(DML,Data Manipulation Language),用于管理和处理数据库中的数据,包括数据的插入、更新和删除。
①数据插入
基础语法:
在这里插入图片描述

示例:

CREATE TABLEstudent(
    id INT,
    name VARCHART(20),
    age INT
);   
# 仅插入id列数据
INSERT INTO student(id)VALUES(10001),(10002),(10003)
#插入全部列数据
INSERT INTo student(id, name, age)VALUES(10001,'小明'31)(10002,'小王'33)(10003'小节'26)
# 插入全部列数据(快捷写法)
INSERT INTO student VALUES(10001,'小明'31)(10002,'小王'33)(10003'小节'
26

【注意】

  • 插入字符串数据,需要用单引号包围
  • 插入全部列的时候,列的列表可以省略

②数据删除
基础语法:
在这里插入图片描述
在这里插入图片描述

示例:

DROP TABLE IF EXISTS stucent;
CREATE TABLE student(
    id INT,
    name VARCHAR(20),
    age INT
);    
INSERT INTo student(id, name, age)VALUES(10001,'小明'31)(10002,'小王'33)(10003'小节'26)
# 删除name为小节的数据
DELETE FROM student WHERE name ='小节';# 注意,不要忘记单引号''
#删除age >33 的数据
DELETE FROM student WHERE age > 33;
#删除全部数据
DELETE FROM student:

③数据更新
基础语法:
在这里插入图片描述

示例:

DROP TABLE IF EXISTS student;
CREATE TABLE student(
    id INT,
    name VARCHAR(20)
    age INT
);     
INSERT INTo student(id, name, age)VALUES(10001,'小明'31)(10002,'小王'33)(10003'小节'26)
# 修改id为10001的name为小陈
UPDATE student sET name ='小陈' WHERE id = 10001;
# 修改全部数据的age为11
UPDATE student SET age = 11:

四、数据查询(DQL)

数据查询语言(DQL,Data Query Language),主要用于从数据库中检索数据,通常是用户与数据库交互的主要方式。

①基础查询
在SQL中,通过SELECT关键字开头的SQL语句进行数据的查询。

基础语法:
在这里插入图片描述
含义:从(FROM)表中,选择(SELECT)某些列进行展示

示例:

DROP TABLE IF EXISTS student;
CREATE TABLE student(
    id INT,
    name VARCHAR(20),
    age INT
);     
INSERT INTo student(id, name, age)VALUES(10001,'小明'31)(10002,'小王'33)(10003'小节'26)
# 查询id和name两个列
SELECT id, name FROM student;
#查询全部列
SELECT id, name, age FROM student;
#查询全部列(快捷写法)
SELECT * FROM student;

查询也可以带有指定条件,基础语法如下:
在这里插入图片描述
示例:

# 查询id和name两个列,年龄小于33岁
SELECT id, name FROM student WHERE age < 33;
# 查询全部列,id等于10003
SELECT id,name, age FROM student WHERE id = 10003

②分组聚合
在 SQL 中,分组聚合是指将数据按某个或多个列进行分组,并对每个组应用聚合函数以汇总数据。通过这种方式,可以方便地计算每个组的统计信息,如总数、平均值、最大值、最小值等。

  • 分组(GROUP BY):使用 GROUP BY 语句对结果集中的数据进行分组,通常基于一个或多个列
  • 聚合函数:在分组后,可以使用聚合函数(如 COUNT、SUM、AVG、MAX、MIN 等)计算每个组的统计数据
  • 聚合列:在查询中被聚合函数处理的列,这类函数用于对一组数据执行计算,并返回一个单一的结果,例如 COUNT()、SUM()、AVG() 等
  • 非聚合列:在查询中未被聚合函数处理的列,通常用于直接显示结果,它们可以是用作分组的列或仅仅用于选择结果

基础语法:
在这里插入图片描述

常见的聚合函数:

  • SUM(列):求和
  • AVG(列):求平均值
  • MIN(列):求最小值
  • MAX(列):求最大值
  • COUNT(列|*):求数量

示例:

DROP TABLE IF EXISTS student;
CREATE TABLE student(
    id INT,
    name VARCHAR(20),
    age INT,
    gender VARCHAR(10)
);     
INSERT INTO student(id, name, age)VALUES(10001,'小周'31'男')(10002'小王'33'男'),(10003,'小琳'35'女')(10004'小灵',36,'女')(10005'小德'30'男')
#按性别分组,统计各组人数
SELECT gender,COUNT(*) FROM student GROUP BY gender;
# 按性别分组,统计平均年龄
SELEcT gender,AVG(age) FROM student GROUP BY gender;
#按性别分组,统计最大最小年龄
SELEcT gender, MAX(age),MIN(age) FROM student GROUP BY gender;

【注意】
在 SELECT 语句中,如果想选择非聚合列,这些列必须出现在 GROUP BY 子句中。这是因为 SQL 需要明确如何将结果集中的记录汇总成组,以确保所有非聚合列在分组的上下文中都有清晰的含义。
例如,以下查询会报错:

SELECT 性别, 年龄, COUNT(*) AS 学生人数  
FROM 学生  
GROUP BY 性别;

在这个例子中,“年龄”既没有使用聚合函数,也不在 GROUP BY 子句中,因此 SQL 无法确定如何将“年龄”与性别的分组结果关联起来。

如果想要按性别和年龄进行分组,可以将“年龄”也添加到 GROUP BY 中,如下所示:

SELECT 性别, 年龄, COUNT(*) AS 学生人数  
FROM 学生  
GROUP BY 性别, 年龄;  

③排序
定义:
排序 (Sorting)是指按照指定的列对查询结果集进行排列。SQL 通常使用 ORDER BY 子句来实现排序操作。可以根据一个或多个列进行升序或降序排列。

方式:

  • 升序 (ASC): 默认方式,从小到大排列
  • 降序 (DESC):从大到小排列

基本语法:
在这里插入图片描述

示例:

DROP TABLE IF EXISTS student;
CREATE TABLE student(
    id INT,
    name VARCHAR(20),
    age INT,
    gender VARCHAR(10)
);     
INSERT INTo student(id, name, age)VALUES(10001,'小周'31'男')(10002'小王'33'男'),(10003,'小琳'35'女')(10004'小灵',36,'女')(10005'小德'30'男')
# 按年龄降序排序结果
SELECT * FROM student ORDER BY age DESC:
#按ID升序排序结果
SELECT *FROM student WHERE age > 31 ORDER BY id;

④分页
定义
分页是将查询结果分成多个部分(页),使用户可以分步查看数据,而不是一次性返回所有记录。SQL 通常使用 LIMIT 关键字实现分页。

基本语法:
在这里插入图片描述

示例:

DROP TABLE IF EXISTS student;
CREATE TABLE student(
    id INT,
    name VARCHAR(20),
    age INT,
    gender VARCHAR(10)
);     
INSERT INTo student(id, name, age)VALUES(10001,'小周'31'男')(10002'小王'33'男'),(10003,'小琳'35'女')(10004'小灵',36,'女')(10005'小德'30'男')
# 查询结果只保留2条
SELECT * FROM student LIMIT 2;
# 找出年龄最大的3人
SELECT *FROM Student ORDER BY age DESC LIMIT 3;

【注意】
将排序和分页结合使用时,通常先进行排序,然后再进行分页,确保在进行分页时,数据是按照指定的顺序排列的。

在 SQL 查询中,执行顺序遵循特定的步骤:
FROM → WHERE → GROUP BY 和聚合函数 → SELECT → ORDER BY → LIMIT
首先,从数据表中选择数据(FROM),然后通过条件筛选来过滤记录(WHERE)。接着,对结果进行分组与聚合(GROUP BY),再提取所需的列(SELECT)。随后,对结果进行排序(ORDER BY),最后限制返回的记录数量或进行分页(LIMIT)。这一执行顺序确保了在处理数据时获得准确且有序的输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值