iT邦幫忙

0

體驗SQL資料庫Day2:常用資料型態解析和資料操作

  • 分享至 

  • xImage
  •  

常見Data type資料型態比較表

資料型態 描述 範例值 範例欄位
VARCHAR(n) 可變長度字串,n 為最大長度 'Alice', 'Hello' name VARCHAR(30)
INTEGER 4 字節整數,適合整數存儲 1, 45,-15 age INTEGER
BOOLEAN true 或 false 開關狀態 TRUE, FALSE is_active BOOLEAN
JSON JSON彈性資料 {"name","John"} setting JSON
TIMESTAMP 建立/更新時間 {"name","John"} created_at TIMESTAMP
DECIMAL 小數點 計算金額 1199.99 price DECIMAL(10,2)

SQL 資料操作方法比較表

操作類型 SQL 語法 功能說明 常見註解與示例
新增資料 INSERT INTO table_name (...) 將一筆或多筆資料加入指定資料表 用於創建新記錄,適合用於註冊新用戶、記錄交易等。
INSERT INTO users (name, email, created_at) VALUES ('Alice', 'alice@example.com', CURRENT_TIMESTAMP);
INSERT INTO users (name, email, age) VALUES ('Alex', 'Alex@mail.com', 10), ('Bill', 'Bill@mail.com', 15);
查找資料 SELECT columns FROM table_name 查詢指定的資料表及欄位 搭配 * 查詢所有欄位,或列出欄位名稱以提高效率。
SELECT name, age FROM users;
SELECT * FROM users;
篩選資料 WHERE condition 根據條件篩選出符合條件的資料 用於匹配特定資料,支持條件運算(如 =>, <),並可與邏輯運算符(AND, OR)結合使用。
SELECT name FROM customers WHERE city = '高雄縣';
SELECT * FROM customers WHERE city = '台北市';
使用 AS SELECT column_name AS alias_name 為查詢結果中的列指定別名 提高結果的可讀性和清晰度。
SELECT name AS user_name, email AS "Email Address" FROM users;
更新資料 UPDATE table_name SET column = value WHERE condition 更新指定資料表中的資料 根據條件更新特定欄位的值。
UPDATE products SET price = 30000 WHERE name = 'jacket';
刪除資料 DELETE FROM table_name WHERE condition 刪除符合條件的資料 根據條件刪除特定記錄。
DELETE FROM users WHERE age < 18;

1. 新增資料:INSERT

功能:將新記錄插入到資料表中。
語法:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

註解:
欄位名與值的順序必須一一對應。
若所有欄位都要插入數據,可以省略欄位名稱:

INSERT INTO table_name VALUES (value1, value2, ...);
  • 插入一名新用戶
INSERT INTO users (name, email, created_at) 
VALUES ('Alice', 'alice@example.com', CURRENT_TIMESTAMP);
  • 插入多名新用戶
INSERT INTOO users(name,email,age)
VALUES
('Alex','Alex@mail.com',10),
('Bill','Bill@mail.com',15),
('Cally','Bill@mail.com',18);

2.查找資料:SELECT

功能:從資料表中讀取數據。

#查詢“特定”所有用戶的名稱和電子郵件
SELECT column1, column2 FROM table_name;
SELECT name, age FROM users;
#
Alex	10
Bill	15
Cally	18
#查詢“所有”欄位
SELECT * FROM table_name;
SELECT * FROM users;

註解:
使用 * 查詢所有欄位,但會影響效率,建議僅查詢需要的欄位。

3.可使用 AS 給查詢結果賦於新的欄位標題

在 SQL 中,AS 關鍵字用於為查詢結果中的列或整個表格起別名,這可以讓查詢結果更具可讀性和清晰度。這樣不僅能讓你對查詢的資料做更好的命名,也能在進行資料處理、報告生成或資料分析時提高可讀性。

  1. 為列(欄位)起別名
    功能:為查詢結果中的列(欄位)指定更具描述性的名稱,特別是當列的原始名稱不夠直觀時。
SELECT column_name AS alias_name
FROM table_name;

範例: 假設有一個 users 資料表,並且我們希望查詢用戶的name將欄位名稱改成更User Name。

SELECT name AS user_name, email AS "Email Address"
FROM users;

SELECT 
	name AS user_name,
  age AS user_age
FROM users

SELECT 
	email AS "Email Address"
FROM users
  1. 新增欄位:為計算結果起別名
    有時候,你可能會在查詢中進行某些計算,例如總和、平均值等。在這種情況下,為計算結果指定別名會讓結果更具可讀性。
SELECT aggregate_function(column_name) AS newCol
FROM table_name;
SELECT 
	name AS userName,
    age AS userAge,
	65 - age AS retireAge
FROM users;

來動手試試看:https://pg-sql.com/

4. WHERE 篩選資料

子句是 SQL 中用來篩選記錄的重要工具,能夠根據特定條件從資料表中提取所需的數據

SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • column1, column2: 要選擇的字段名稱,可以為多個字段。
  • table_name: 要查詢的表名稱。
  • condition: 篩選條件,決定哪些行會被選取。

假設有一個名為 customers 的資料表,包含以下數據:

CREATE TABLE customers (
    name VARCHAR(100),          
    City VARCHAR(100),
  	address VARCHAR(50),        
    Phone INTEGER
);

INSERT INTO customers(name,City,address,Phone)
VALUES
('張一','台北市','XX路100號','0212345678'),
('王二','新竹縣','YY路200號','0312345678'),
('李三','高雄縣','ZZ路300號','0712345678'),
('林四','高雄縣','ZZ路300號','0712345678'),
('陳五','台北市','XX路101號','0212345679');

要查詢City為「高雄縣」的“顧客name”資料,可以使用以下 SQL 語句:

SELECT name
FROM customers 
WHERE City = '高雄縣';
/*
name
李三	
林四
*/

要查詢City為「高雄縣」的顧客“全部*資料”,可以使用以下 SQL 語句:

SELECT *
FROM customers 
WHERE City = '台北市';
/*
name	city	address	phone
張一	台北市	XX路100號	212345678
陳五	台北市	XX路101號	212345679
*/

來動手試試看:https://pg-sql.com/

模糊查詢:

SELECT * 
FROM customers 
WHERE Name LIKE '王%';  -- 姓名以「王」開頭的顧客

5.比較運算子: >、≤、=

假設有一個名為 products 的資料表,包含以下數據:

-- 商品資料表
CREATE TABLE products (
    name VARCHAR(100),           -- 商品名稱
    price INTEGER,              -- 原價
    discount_price INTEGER,      -- 折扣價
    stock INTEGER,              -- 庫存數量
    category VARCHAR(50),        -- 商品類別
    status VARCHAR(20)          -- 商品狀態(上架、下架)
);

INSERT INTO products (name, price, discount_price, stock, category, status) 
VALUES
   ('dress', 25000, 23000, 50, 'women', 'active'),
   ('jacket', 5000, 5000, 5, 'man', 'inactive'),
   ('充電線', 18000, 16000, 25, '3C', 'active'),
   ('earing', 500, 500, 100, '配件', 'active'),
   ('bracelet', 300, 250, 30, '配件', 'active'),
   ('skirt', 200, 180, 150, 'women', 'active'),
   ('top', 400, 400, 0, 'women', 'inactive');

情境:哪些商品快沒貨了?庫存< 50的產品有哪些?

SELECT name, stock
FROM products 
WHERE stock <= 50;
/*
name	stock
dress	50
jacket	5
充電線	25
bracelet	30
top	0
*/

6.邏輯運算子:AND、OR

多個條件的篩選
可以使用邏輯運算符(如 AND 和 OR)來組合多個篩選條件:
AND: 同時滿足兩個或多個條件。 WHERE category = '3C' AND price > 1000
OR: 滿足任一條件。 WHERE category = '3C' OR category = '配件'

SELECT name, price, stock 
FROM products 
WHERE status = 'active' 
AND category = '3C';
--使用字串查找時 注意只能用單引號
/*
name	price	stock
充電線	18000	25
*/
SELECT name, status, stock
FROM products 
WHERE status = 'inactive' 
  OR stock = 0;
/*
name	status	stock
jacket	inactive	5
top	inactive	0
*/
--使用字串查找時 注意只能用單引號

來動手試試看:https://pg-sql.com/

7.集合與範圍運算子:IN、NOT IN、BETWEEN

運算子 意義 範例
BETWEEN 在指定的範圍內 WHERE price BETWEEN 100 AND 500;
IN 包含在列出的值中 WHERE category IN ('3C', '配件')
NOT IN 不包含在列出的值中 WHERE category NOT IN ('3C')

預算在 100~500 元

SELECT * 
FROM products
WHERE price BETWEEN 100 AND 500; 

找出特定類別商品

SELECT * 
FROM products
WHERE category IN ('3C','配件')
--使用字串查找時 注意只能用單引號

排除特定商品

SELECT * 
FROM products
WHERE category NOT IN ('3C','配件')
--使用字串查找時 注意只能用單引號

來動手試試看:https://pg-sql.com/

8.update 更新欄位

更新情境

  1. 調整特定商品的價格
UPDATE products
SET price = 30000
WHERE name = 'jacket'

同時調整特定商品的價格和名字

UPDATE products
SET 
    price = 30000,
    name = 'jacket new'
WHERE name = 'jacket'
  1. 更新庫存:增加庫存數量
UPDATE products
SET stock = stock +5
WHERE name ='top'

使用字串查找時 注意只能用單引號

9.delete

刪除情境

  1. 單筆刪除:刪除特定商品
DELETE FROM products
WHERE name ='top';
  1. 條件刪除:刪除類別為 配件 的商品
DELETE FROM products
WHERE category ='3C';
  1. 多重條件刪除:刪除沒庫存且已下架的商品
UPDATE products
SET 
		stock =0,
		status ='inactive'
WHERE name ='dress'

使用字串查找時 注意只能用單引號


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言