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

資料庫是什麼

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for 滋滋桑 滋滋桑
June 05, 2023
32

 資料庫是什麼

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

Avatar for 滋滋桑

滋滋桑

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。