Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
資料庫是什麼
Search
滋滋桑
June 05, 2023
0
20
資料庫是什麼
簡報動機
資料庫
兩種資料庫考試
Mssql
Mysql
Postsql
oracle sql
滋滋桑
June 05, 2023
Tweet
Share
More Decks by 滋滋桑
See All by 滋滋桑
SPRING BOOT+VUE+資料庫到底是甚麼
tzutzu
0
14
asp.net用北風資料庫來說明實用技術
tzutzu
0
62
如何準備證照考試
tzutzu
0
62
準備面試
tzutzu
0
350
Featured
See All Featured
Side Projects
sachag
452
42k
Teambox: Starting and Learning
jrom
133
8.8k
Designing for Performance
lara
604
68k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Code Review Best Practice
trishagee
64
17k
The Cost Of JavaScript in 2023
addyosmani
45
6.8k
How GitHub (no longer) Works
holman
310
140k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Transcript
資料庫是什麼 TZU 留言給我
簡報大綱 • 簡報動機 • 資料庫 • 兩種資料庫考試 • Mssql •
Mysql • Postsql • oracle sql
投稿的動機及這場分享想帶給讀者的是什 麼? • 自我介紹~工程師 • 希望可以讓讀者知道的內容 • 考試
資料庫~考題是? • SQL基礎語法:資料庫和資料表建立 • select 敍述子句 :select from • 資料操作
insert into/update /delete • Order by排序 • having篩選 • Group by分群 • 關聯式sql語法撰寫
舉例說明:新增 (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(); • }
舉例說明:讀取 (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(); • }
舉例說明:更新 (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(); • }
舉例說明:刪除 (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(); • }
資料庫都是用有關聯的~ • 關聯式資料庫(Relational Database)是一種以表格 (Table)形式組織和儲存資料 的資料庫。在關聯式資料庫中, 資料被組織成多個相互關聯的 表格,每個表格由一個或多個 欄位(Column)組成,代表不 同的屬性,並且使用主鍵
(Primary Key)和外鍵 (Foreign Key)建立表格之間 的關聯。 • 關聯式資料庫
資料型態: • 數字欄位(int):用於儲存整數值,範圍通常根據資料庫系統而 有所不同。 • 文字欄位(varchar(30)):用於儲存可變長度的字串,括號內的 數字表示欄位的最大長度。 • 精準小數(decimal(9,2)):用於儲存具有固定小數位數的數值, 括號內的數字分別表示總位數和小數位數。
• 時間欄位(datetime):用於儲存日期和時間的值,通常以特定 的格式表示(例如 YYYY-MM-DD HH:MM:SS)。
簡答題:這段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 值。
Order by排序 • ASC升序 • DESC降序
NULL 空值 • SELECT * FROM 表名 WHERE 欄位名 IS
NULL; • SELECT * FROM 表名 WHERE 欄位名 IS NOT NULL; • 第一個查詢將返回表中該欄位值為 NULL 的記錄,而第二個查詢 將返回表中該欄位值不為 NULL 的記錄。 • 在設計資料庫結構時,您可以選擇是否允許欄位為 NULL。根據需 要和業務邏輯,您可以將某些欄位設置為必填(NOT NULL),或 允許其為可選的(NULL)。
having篩選與Group by分群 • SELECT Category, COUNT(*) as Total • FROM
Products • GROUP BY Category • HAVING COUNT(*) > 5; • 這個查詢將返回 Products 表中按照類別(Category)分組的記錄 數目大於 5 的結果。HAVING 子句篩選掉了分組後的結果集中那 些不符合條件的組。 • HAVING 子句僅在使用聚合函數(如 COUNT、SUM、AVG 等)並 進行分組操作時使用。
再練習一下資料庫 • 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。
前端 • 作品集: https://jzs2home.github.io/blog/admin/blogs.html?fbclid=IwAR0z5n u5rFxHnVKqjtjAskFp4EJQVbPAROPwSKjCCEdpd5YWYXP_m_I2Z6I
使用Chrome看網頁
留言板: • http://jzs2home.byethost15.com/index.php?i=3&fbclid=IwAR30I3qlb kBAbp0MEE_JtIldTH1KdZQdXjT-msg35saXVHUY_7-jxXOsZdo