Upgrade to Pro — share decks privately, control downloads, hide ads and more …

資料庫是什麼

滋滋桑
June 05, 2023
13

 資料庫是什麼

簡報動機
資料庫
兩種資料庫考試
Mssql
Mysql
Postsql
oracle sql

滋滋桑

June 05, 2023
Tweet

Transcript

  1. 資料庫~考題是? • SQL基礎語法:資料庫和資料表建立 • select 敍述子句 :select from • 資料操作

    insert into/update /delete • Order by排序 • having篩選 • Group by分群 • 關聯式sql語法撰寫
  2. 舉例說明:新增 (Create): 使用 INSERT INTO 陳述式來插入新的資料列。 • // 使用 PreparedStatement

    執行 INSERT 陳述式 • String sql = "INSERT INTO users (name, email) VALUES (?, ?)"; • try (Connection connection = DriverManager.getConnection(url, username, password); • PreparedStatement statement = connection.prepareStatement(sql)) { • statement.setString(1, "John"); • statement.setString(2, "[email protected]"); • int rowsInserted = statement.executeUpdate(); • if (rowsInserted > 0) { • System.out.println("新增成功"); • } • } catch (SQLException e) { • e.printStackTrace(); • }
  3. 舉例說明:讀取 (Read):使用 SELECT 陳述式 搭配 ResultSet 來檢索資料。 • // 使用

    Statement 執行 SELECT 陳述式 • String sql = "SELECT * FROM users"; • try (Connection connection = DriverManager.getConnection(url, username, password); • Statement statement = connection.createStatement(); • ResultSet resultSet = statement.executeQuery(sql)) { • while (resultSet.next()) { • int id = resultSet.getInt("id"); • String name = resultSet.getString("name"); • String email = resultSet.getString("email"); • System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email); • } • } catch (SQLException e) { • e.printStackTrace(); • }
  4. 舉例說明:更新 (Update):使用 UPDATE 陳 述式來修改資料列。 • // 使用 PreparedStatement 執行

    UPDATE 陳述式 • String sql = "UPDATE users SET email = ? WHERE id = ?"; • try (Connection connection = DriverManager.getConnection(url, username, password); • PreparedStatement statement = connection.prepareStatement(sql)) { • statement.setString(1, "[email protected]"); • statement.setInt(2, 1); • int rowsUpdated = statement.executeUpdate(); • if (rowsUpdated > 0) { • System.out.println("更新成功"); • } • } catch (SQLException e) { • e.printStackTrace(); • }
  5. 舉例說明:刪除 (Delete):使用 DELETE FROM 陳述式來刪除資料列。 • // 使用 PreparedStatement 執行

    DELETE 陳述式 • String sql = "DELETE FROM users WHERE id = ?"; • try (Connection connection = DriverManager.getConnection(url, username, password); • PreparedStatement statement = connection.prepareStatement(sql)) { • statement.setInt(1, 1); • int rowsDeleted = statement.executeUpdate(); • if (rowsDeleted > 0) { • System.out.println("刪除成功"); • } • } catch (SQLException e) { • e.printStackTrace(); • }
  6. 簡答題:這段SQL語法的意思? • Select sign_code,fu_name from common_flow_header where fu_name='價格核決作業’ • 一個名為

    common_flow_header 的資料表,其中包含 sign_code 和 fu_name 兩個欄位,你想要查詢 fu_name 為 "價格核決作業" 的資 料列中的 sign_code 和 fu_name 欄位的值。 • 這個查詢將從 common_flow_header 表格中檢索符合條件的資料 列,並選擇 sign_code 和 fu_name 欄位的值。條件是 fu_name 欄 位等於 "價格核決作業"。執行這個查詢後,你將得到符合條件的 資料列的 sign_code 和 fu_name 值。
  7. NULL 空值 • SELECT * FROM 表名 WHERE 欄位名 IS

    NULL; • SELECT * FROM 表名 WHERE 欄位名 IS NOT NULL; • 第一個查詢將返回表中該欄位值為 NULL 的記錄,而第二個查詢 將返回表中該欄位值不為 NULL 的記錄。 • 在設計資料庫結構時,您可以選擇是否允許欄位為 NULL。根據需 要和業務邏輯,您可以將某些欄位設置為必填(NOT NULL),或 允許其為可選的(NULL)。
  8. having篩選與Group by分群 • SELECT Category, COUNT(*) as Total • FROM

    Products • GROUP BY Category • HAVING COUNT(*) > 5; • 這個查詢將返回 Products 表中按照類別(Category)分組的記錄 數目大於 5 的結果。HAVING 子句篩選掉了分組後的結果集中那 些不符合條件的組。 • HAVING 子句僅在使用聚合函數(如 COUNT、SUM、AVG 等)並 進行分組操作時使用。
  9. 再練習一下資料庫 • CREATE TABLE t3 (c1 INT, c2 VARCHAR(10)); •

    建立表格 t3: • ALTER TABLE t3 ADD c3 INT; • 修改表格 t3,新增欄位 c3: • SELECT * FROM t3; • 查詢表格 t3 中的所有資料: • INSERT INTO t3 (c1, c2, c3) VALUES (1, 'A', 100); • 成功插入新的記錄到表格 t3。