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
25
資料庫是什麼
簡報動機
資料庫
兩種資料庫考試
Mssql
Mysql
Postsql
oracle sql
滋滋桑
June 05, 2023
Tweet
Share
More Decks by 滋滋桑
See All by 滋滋桑
SPRING BOOT+VUE+資料庫到底是甚麼
tzutzu
0
23
asp.net用北風資料庫來說明實用技術
tzutzu
0
73
如何準備證照考試
tzutzu
0
69
準備面試
tzutzu
0
350
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
A designer walks into a library…
pauljervisheath
205
24k
Into the Great Unknown - MozCon
thekraken
34
1.6k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.5k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Typedesign – Prime Four
hannesfritz
40
2.5k
It's Worth the Effort
3n
183
28k
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
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