SQL 语言包括哪几部分?每部分都有哪些操作关键字?思维导图 代码示例(java 架构) SQL语言的组成部分及其操作关键字

SQL语言的组成部分及其操作关键字

SQL(Structured Query Language,结构化查询语言)是用于管理和操作关系型数据库的标准语言。它被分为几个主要部分,每个部分负责不同的功能和任务。以下是SQL语言的主要组成部分及其对应的操作关键字:

1. 数据查询语言 (DQL - Data Query Language)
  • 用途:从数据库中检索数据。
  • 关键字
    • SELECT:用于查询表中的数据行。
    • FROM:指定要从中选择数据的表。
    • WHERE:定义过滤条件以限制返回的数据行。
    • GROUP BY:将结果集按照一个或多个列进行分组。
    • HAVING:用于对分组后的结果进一步筛选。
    • ORDER BY:对结果集排序。
    • LIMIT/OFFSET:限制返回的结果数量或跳过某些行。
2. 数据定义语言 (DDL - Data Definition Language)
  • 用途:定义或修改数据库结构(如创建、删除或更改表、索引等)。
  • 关键字
    • CREATE:创建新的数据库对象,如表、视图、索引等。
    • ALTER:修改现有数据库对象的结构。
    • DROP:删除数据库对象。
    • TRUNCATE:快速清空表内容而不删除表结构。
    • RENAME:重命名数据库对象。
3. 数据操纵语言 (DML - Data Manipulation Language)
  • 用途:插入、更新或删除数据库中的数据。
  • 关键字
    • INSERT INTO:向表中添加新记录。
    • UPDATE:修改表中的现有记录。
    • DELETE FROM:从表中移除记录。
    • MERGE:合并来自不同源的数据到目标表中。
4. 数据控制语言 (DCL - Data Control Language)
  • 用途:管理用户权限以及事务控制。
  • 关键字
    • GRANT:授予用户特定的权限。
    • REVOKE:撤销用户的权限。
    • COMMIT:提交当前事务的所有更改。
    • ROLLBACK:回滚未提交的事务更改。
    • SAVEPOINT:设置保存点以便部分回滚。
5. 事务控制语言 (TCL - Transaction Control Language)
  • 用途:处理事务边界及状态。
  • 关键字
    • BEGIN/START TRANSACTION:启动一个新的事务。
    • COMMIT:确认并永久保存事务中的所有更改。
    • ROLLBACK:撤销自事务开始以来的所有更改。
    • SET TRANSACTION:设置事务特性。

思维导图概述

SQL 语言组成部分
├── 数据查询语言 (DQL)
│   ├── SELECT
│   ├── FROM
│   ├── WHERE
│   ├── GROUP BY
│   ├── HAVING
│   ├── ORDER BY
│   └── LIMIT/OFFSET
├── 数据定义语言 (DDL)
│   ├── CREATE
│   ├── ALTER
│   ├── DROP
│   ├── TRUNCATE
│   └── RENAME
├── 数据操纵语言 (DML)
│   ├── INSERT INTO
│   ├── UPDATE
│   ├── DELETE FROM
│   └── MERGE
├── 数据控制语言 (DCL)
│   ├── GRANT
│   ├── REVOKE
│   ├── COMMIT
│   ├── ROLLBACK
│   └── SAVEPOINT
└── 事务控制语言 (TCL)
    ├── BEGIN/START TRANSACTION
    ├── COMMIT
    ├── ROLLBACK
    └── SET TRANSACTION

Java架构代码示例

下面是一些简单的Java代码片段,展示了如何通过JDBC执行不同类型SQL语句的例子。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class SQLExample {

    private static final String URL = "jdbc:mysql://localhost:3306/mydb";
    private static final String USER = "user";
    private static final String PASSWORD = "password";

    public static void main(String[] args) {
        // 获取数据库连接
        try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD)) {

            // DDL 示例 - 创建表
            executeDDL(conn, "CREATE TABLE IF NOT EXISTS employees (" +
                             "id INT AUTO_INCREMENT PRIMARY KEY," +
                             "name VARCHAR(100)," +
                             "salary DECIMAL(10, 2)," +
                             "hire_date DATE" +
                             ")");

            // DML 示例 - 插入数据
            executeDML(conn, "INSERT INTO employees (name, salary, hire_date) VALUES (?, ?, ?)",
                       new Object[]{"John Doe", 70000.0, "2024-01-01"});

            // DQL 示例 - 查询数据
            ResultSet rs = executeDQL(conn, "SELECT id, name, salary, hire_date FROM employees");
            while (rs.next()) {
                System.out.println("ID: " + rs.getInt("id") +
                                   ", Name: " + rs.getString("name") +
                                   ", Salary: " + rs.getDouble("salary") +
                                   ", Hire Date: " + rs.getDate("hire_date"));
            }

            // TCL 示例 - 开始事务、提交或回滚
            manageTransaction(conn);

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private static void executeDDL(Connection conn, String sql) throws SQLException {
        try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.execute();
        }
    }

    private static void executeDML(Connection conn, String sql, Object[] params) throws SQLException {
        try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
            for (int i = 0; i < params.length; i++) {
                pstmt.setObject(i + 1, params[i]);
            }
            pstmt.executeUpdate();
        }
    }

    private static ResultSet executeDQL(Connection conn, String sql) throws SQLException {
        try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
            return pstmt.executeQuery();
        }
    }

    private static void manageTransaction(Connection conn) throws SQLException {
        conn.setAutoCommit(false); // 关闭自动提交模式
        try {
            // 执行一些DML操作...
            conn.commit(); // 提交事务
        } catch (SQLException e) {
            conn.rollback(); // 回滚事务
            throw e;
        } finally {
            conn.setAutoCommit(true); // 恢复自动提交模式
        }
    }
}

这段代码演示了如何使用JDBC API执行各种类型的SQL语句,包括创建表(DDL)、插入数据(DML)、查询数据(DQL)以及管理事务(TCL)。请注意,在实际项目中,你可能会使用ORM框架(如Hibernate或Spring Data JPA),这些工具提供了更高层次的抽象来简化SQL语句的编写,并且通常能够更好地集成到应用程序的整体架构中。此外,现代开发实践中也推荐使用数据库迁移工具(如Flyway或Liquibase)来管理和版本化数据库结构变更,包括创建和修改表及索引等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值