亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SQL中UNION與UNION ALL的區(qū)別小結(jié)

 更新時(shí)間:2025年04月24日 09:35:29   作者:灰_灰丶灰  
UNION?和?UNION ALL?都用于將兩個(gè)或多個(gè)結(jié)果集合并為一個(gè)結(jié)果集,但它們?cè)谔幚碇貜?fù)數(shù)據(jù)方面有顯著區(qū)別,本文就來介紹一下SQL中UNION與UNION ALL的區(qū)別小結(jié),感興趣的可以了解一下

在 SQL 中,UNION 和 UNION ALL 都用于將兩個(gè)或多個(gè)結(jié)果集合并為一個(gè)結(jié)果集,但它們?cè)谔幚碇貜?fù)數(shù)據(jù)方面有顯著區(qū)別。以下是它們的詳細(xì)區(qū)別:

1. UNION

UNION 操作符用于合并兩個(gè)或多個(gè) SELECT 語句的結(jié)果集,并自動(dòng)去除結(jié)果集中重復(fù)的行。

SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
  • 去重UNION 自動(dòng)去除重復(fù)的行,只返回唯一的行。
  • 性能: 由于需要進(jìn)行去重操作,UNION 的性能相對(duì)較低,尤其是在大數(shù)據(jù)集上。
  • 用途: 當(dāng)需要合并結(jié)果集并且不希望結(jié)果集中包含重復(fù)的行時(shí)使用。

2. UNION ALL

UNION ALL 操作符用于合并兩個(gè)或多個(gè) SELECT 語句的結(jié)果集,不去除重復(fù)的行,返回所有結(jié)果,包括重復(fù)的行。

SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;
  • 去重UNION ALL 不去除重復(fù)的行,返回所有結(jié)果。
  • 性能: 由于不進(jìn)行去重操作,UNION ALL 的性能相對(duì)較高。
  • 用途: 當(dāng)需要合并結(jié)果集并且希望包含所有行,包括重復(fù)的行時(shí)使用。

示例代碼

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

public class UnionExample {
    private static final String JDBC_URL = "jdbc:mysql://localhost:3306/yourdatabase";
    private static final String JDBC_USER = "yourusername";
    private static final String JDBC_PASSWORD = "yourpassword";

    public static void main(String[] args) {
        try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
             Statement stmt = conn.createStatement()) {

            // 示例數(shù)據(jù)準(zhǔn)備
            String createTableSQL1 = "CREATE TABLE IF NOT EXISTS table1 (id INT, name VARCHAR(255))";
            String createTableSQL2 = "CREATE TABLE IF NOT EXISTS table2 (id INT, name VARCHAR(255))";
            stmt.executeUpdate(createTableSQL1);
            stmt.executeUpdate(createTableSQL2);

            String insertDataSQL1 = "INSERT INTO table1 (id, name) VALUES (1, 'Alice'), (2, 'Bob')";
            String insertDataSQL2 = "INSERT INTO table2 (id, name) VALUES (2, 'Bob'), (3, 'Charlie')";
            stmt.executeUpdate(insertDataSQL1);
            stmt.executeUpdate(insertDataSQL2);

            // 使用 UNION
            String unionSQL = "SELECT id, name FROM table1 UNION SELECT id, name FROM table2";
            try (ResultSet rs = stmt.executeQuery(unionSQL)) {
                System.out.println("Results of UNION:");
                while (rs.next()) {
                    int id = rs.getInt("id");
                    String name = rs.getString("name");
                    System.out.println("ID: " + id + ", Name: " + name);
                }
            }

            // 使用 UNION ALL
            String unionAllSQL = "SELECT id, name FROM table1 UNION ALL SELECT id, name FROM table2";
            try (ResultSet rs = stmt.executeQuery(unionAllSQL)) {
                System.out.println("Results of UNION ALL:");
                while (rs.next()) {
                    int id = rs.getInt("id");
                    String name = rs.getString("name");
                    System.out.println("ID: " + id + ", Name: " + name);
                }
            }

            // 清理示例數(shù)據(jù)
            stmt.executeUpdate("DROP TABLE IF EXISTS table1");
            stmt.executeUpdate("DROP TABLE IF EXISTS table2");

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

在上述代碼中,演示了如何使用 JDBC 執(zhí)行 UNION 和 UNION ALL 操作。請(qǐng)根據(jù)需要調(diào)整數(shù)據(jù)庫連接字符串、用戶名、密碼和 SQL 語句。

總結(jié)

  • UNION: 合并結(jié)果集并去除重復(fù)的行。
  • UNION ALL: 合并結(jié)果集并保留所有重復(fù)的行。

到此這篇關(guān)于SQL中UNION與UNION ALL的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)SQL UNION與UNION ALL區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評(píng)論