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

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 中执行数据分析和统计的重要工具,它允许您以汇总和可读的方式查看大量数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值