数据库小记-mysql-DDL、DML、DQL

2023-09-17 09:34:47

MySQL是一个流行的关系型数据库管理系统,支持各种数据库操作语言(Data Manipulation Language,DML)、数据库定义语言(Data Definition Language,DDL)和数据查询语言(Data Query Language,DQL)。以下是它们的主要区别和示例:

DDL(数据定义语言):
DDL用于定义数据库的结构,例如表、列、索引等。常见的DDL命令包括:

  1. CREATE TABLE(创建表): 用于创建新表格,并指定表格的结构,包括列名、数据类型和约束。
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP
);
  1. ALTER TABLE(修改表): 用于修改已存在的表格结构,可以添加、修改或删除列,也可以添加索引等。
ALTER TABLE users
ADD COLUMN last_login TIMESTAMP;
  1. DROP TABLE(删除表): 用于删除表格及其数据,慎用,因为它会永久删除数据。
DROP TABLE users;

DML(数据操作语言):
DML用于处理数据库中的数据,包括插入、更新和删除数据。常见的DML命令包括:

  1. INSERT INTO(插入数据): 用于将新数据插入到表格中。
INSERT INTO users (username, email)
VALUES ('john_doe', 'john@example.com');
  1. UPDATE(更新数据): 用于修改表格中的现有数据。
UPDATE users
SET email = 'new_email@example.com'
WHERE username = 'john_doe';
  1. DELETE FROM(删除数据): 用于从表格中删除数据。
DELETE FROM users
WHERE username = 'john_doe';

DQL(数据查询语言):
DQL用于从数据库中检索数据,最常见的DQL命令是SELECT。

  1. SELECT(检索数据): 用于从一个或多个表格中检索数据,可以使用各种条件、排序和聚合函数来筛选和处理数据。
SELECT username, email
FROM users
WHERE created_at >= '2023-01-01'
ORDER BY created_at DESC;

这些是MySQL中常见的DDL、DML和DQL命令示例,它们用于创建、操作和查询数据库中的数据。根据具体需求,还可以使用更复杂的SQL语句来执行更高级的操作。

DQL

数据查询语言(Data Query Language,DQL)是SQL(Structured Query Language)的一个子集,用于从数据库中检索数据。DQL允许用户通过SQL查询语句来提取数据库中所需的信息。以下是一些关于DQL的详细介绍:

基本的DQL语法:

DQL的核心语句是SELECT语句,它用于从一个或多个表格中选择数据。

SELECT column1, column2, ...
FROM table
WHERE condition;
  • SELECT子句指定要检索的列。
  • FROM子句指定要检索数据的表格。
  • WHERE子句可选,用于筛选满足特定条件的行。如果省略WHERE子句,将检索表格中的所有行。

DQL的主要功能和概念:

  1. 列选择:SELECT子句中指定要检索的列名。您可以选择一个或多个列,也可以使用通配符*选择所有列。

    SELECT first_name, last_name FROM employees;
    SELECT * FROM products;
    
  2. 条件筛选: 使用WHERE子句来筛选符合特定条件的行。

    SELECT product_name, price FROM products WHERE price < 50;
    
  3. 排序: 使用ORDER BY子句按升序(ASC)或降序(DESC)对结果进行排序。

    SELECT product_name, price FROM products ORDER BY price DESC;
    
  4. 聚合函数: 可以使用聚合函数(如SUM、AVG、COUNT、MAX、MIN)对数据进行统计计算。

    SELECT AVG(salary) FROM employees WHERE department = 'Sales';
    
  5. 分组: 使用GROUP BY子句将数据分组,并在分组上应用聚合函数。

    SELECT department, AVG(salary) FROM employees GROUP BY department;
    
  6. 连接表格: 使用JOIN操作连接多个表格以检索相关信息。

    SELECT orders.order_id, customers.customer_name
    FROM orders
    JOIN customers ON orders.customer_id = customers.customer_id;
    
  7. 子查询: 使用子查询在一个查询中嵌套另一个查询以检索复杂的数据。

    SELECT employee_name FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE department_name = 'HR');
    
  8. 别名: 使用AS关键字为列或表格指定别名,以提高查询的可读性。

    SELECT first_name AS "First Name", last_name AS "Last Name" FROM employees;
    
  9. 限制结果集: 使用LIMIT子句来限制结果集的行数。

    SELECT product_name FROM products LIMIT 10;
    

DQL允许您以各种方式查询数据库以满足不同的信息需求。它是SQL中最常用的部分之一,用于从数据库中提取和分析数据。

聚合函数与GROUP BY

聚合函数和GROUP BY 子句是 SQL 中用于处理数据聚合和分组的重要工具。它们通常一起使用,以对数据库表中的数据进行分组、聚合和统计。下面详细介绍聚合函数和GROUP BY 子句以及它们如何一起使用:

聚合函数:

SQL中的聚合函数是用于执行对一组数据进行计算并返回单一结果的函数。常见的聚合函数包括:

  1. COUNT(): 用于计算指定列的行数。

    SELECT COUNT(*) FROM orders;
    
  2. SUM(): 用于计算指定列的总和。

    SELECT SUM(price) FROM products;
    
  3. AVG(): 用于计算指定列的平均值。

    SELECT AVG(salary) FROM employees;
    
  4. MAX(): 用于找到指定列的最大值。

    SELECT MAX(score) FROM exam_results;
    
  5. MIN(): 用于找到指定列的最小值。

    SELECT MIN(stock_price) FROM stock_prices;
    

GROUP BY 子句:

GROUP BY 子句用于将结果集按一个或多个列进行分组。它将相同值的行分为一个组,并允许在每个组上应用聚合函数。GROUP BY 子句的语法如下:

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;
  • column1:用于分组的列。
  • aggregate_function(column2):应用于每个组的聚合函数。

聚合函数与GROUP BY 一起使用:

当聚合函数与GROUP BY 一起使用时,它们允许您按照指定的列对数据进行分组,并在每个组上应用聚合函数以获取分组的统计信息。例如,以下查询将根据部门对员工表进行分组,并计算每个部门的平均工资:

SELECT department, AVG(salary)
FROM employees
GROUP BY department;

在这个示例中,数据首先按部门分组,然后对每个组应用 AVG() 聚合函数来计算每个部门的平均工资。

另一个示例,以下查询将根据订单的客户 ID 对订单表进行分组,并计算每个客户的订单数量:

SELECT customer_id, COUNT(order_id)
FROM orders
GROUP BY customer_id;

在这里,数据首先按客户 ID 分组,然后使用 COUNT() 聚合函数计算每个客户的订单数量。

GROUP BY 子句和聚合函数的组合是 SQL 中执行数据分析和统计的重要工具,它允许您以汇总和可读的方式查看大量数据。

更多推荐

基于Java+vue前后端分离失物招领信息交互平台设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题

初始化列表

目录必须在初始化列表初始化的条件:explicit多参数强制类型转换静态成员​编辑对于静态成员变量需要在构造函数里初始化吗?静态成员函数:题目1:求1+2+3+...+n_牛客题霸_牛客网(nowcoder.com)要求类对象只能在栈上:必须在初始化列表初始化的条件:1:const修饰的成员变量(只有一次初始化的机会,

VirtualBox安装RockyLinux并使用ssh访问

文章目录1前言2安装RockyLinux2.1新建虚拟机2.2设置虚拟机内存和CPU数量2.3设置虚拟机硬盘大小2.4完成设置2.5启动虚拟机2.6RockyLinux的安装2.6.1直接回车2.6.2等待check完成2.6.3设置语言2.6.4设置最小化安装2.6.5去除分区设置的感叹号2.6.7设置root账号的

什么是生成对抗网络 (GAN)?

什么是生成对抗网络(GAN)?钦吉兹·赛义德贝利·一、说明GAN(GenerativeAdversarialNetwork)网络是一种深度学习模型,由两个神经网络——生成器和判别器组成。生成器负责生成虚假的数据,而判别器负责判断数据的真实性。它们之间通过对抗学习的方式相互影响和学习,最终生成器能够生成更加真实的数据,而

Compositional Minimax Optimization学习之路

梯度最优化理论最优化基础---基本概念:凸优化、梯度、Jacobi矩阵、Hessian矩阵_哔哩哔哩_bilibili从图像来看:存在两点连线上的点不在集合内定义ax1+(1-a)x2其实就是两点连线上的点可用与函数围成的面积和与坐标轴围成的面积角度理解凸函数凸优化在定义域和F(X)都是凸集的问题(凸凸问题),就是凸优

如何使用Python和Numpy实现简单的2D FDTD仿真:详细指南与完整代码示例

第一部分:引言及FDTD简介引言:计算机模拟在许多科学和工程领域中都得到了广泛应用。在电磁学领域,有许多不同的数值方法用于模拟波的传播和散射。其中最为知名和广泛使用的一种方法是有限差分时域方法(FiniteDifferenceTimeDomain,FDTD)。在这篇文章中,我们将使用Python和Numpy库为你提供一

ES-索引管理

前言数据类型​搜索引擎是对数据的检索,所以我们先从生活中的数据说起。我们生活中的数据总体分为两种:结构化数据非结构化数据结构化数据:也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。指具有固定格式或有限长度的数据,如数据库,元数据等。非结构化数据:又可

ArcGIS Maps SDK for JavaScript系列之四:添加自定义底图

目录Basemap类介绍Basemap类的常用属性Basemap类的常用方法使用Basemap添加自定义底图引用Basemap引用切片图层创建一个新的Basemap对象将自定义图层应用到地图视图中引入并创建Camera对象引入并创建SceneView对象Basemap类介绍Basemap类是ArcGISMapsSDKf

TypeScript算法题实战——剑指 Offer篇(5)

目录一、平衡二叉树1.1、题目描述1.2、题解二、数组中数字出现的次数2.1、题目描述2.2、题解三、数组中数字出现的次数II3.1、题目描述3.2、题解四、和为s的两个数字4.1、题目描述4.2、题解五、和为s的连续正数序列5.1、题目描述5.2、题解六、翻转单词顺序6.1、题目描述6.2、题解七、滑动窗口的最大值7

竞赛 基于机器视觉的银行卡识别系统 - opencv python

1前言🔥优质竞赛项目系列,今天要分享的是基于深度学习的银行卡识别算法设计该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!🧿更多资料,项目分享:https://gitee.com/dancheng-senior/postgraduate2算法设计流程银行卡卡号识别技术原理是先对银行卡图像定位,保障获取图像绝对位置

OpenCV(四十六):特征点匹配

1.特征点匹配的定义特征点匹配是一种在两幅图像中寻找相互对应的特征点,并建立它们之间的对应关系的过程。具体而言,首先通过特征检测算法在两幅图像中寻找相互对应的特征点,然后,对于每个特征点,通过描述子提取算法计算其描述子,最后,使用匹配算法对两组特征点的描述子进行比较,以找到相互匹配的特征点对。2.DMatch()用于表

热文推荐