數據庫入門:以商品訂單系統為例

數據庫入門:以商品訂單系統為例

一、前言

數據庫是現代軟件開發中不可或缺的基礎,掌握數據庫的基本概念和操作,是每個開發者的必經之路。本文將以“商品-品牌-客戶-訂單-訂單項”為例,帶你快速入門數據庫的核心知識和基本操作。


二、數據庫基礎知識回顧

1. 主鍵(Primary Key, PK)

主鍵是表中用來唯一標識一條記錄的一列或多列的組合。主鍵分為業務主鍵(如身份證號、手機號等有實際業務意義的字段)和代理主鍵(如自增ID)。

2. 外鍵(Foreign Key, FK)

外鍵用于連接兩張表,是引用另一張表的主鍵或唯一鍵,用于保證數據的完整性和關聯性。

3. 關系范式

  • 1NF(第一范式):每一列的值都是不可再分的原子值。
  • 2NF(第二范式):表中的每個非主屬性都完全依賴于主鍵。
  • 3NF(第三范式):非主屬性之間不能有傳遞依賴。

范式的意義:消除冗余、保證數據完整性和一致性。


三、SQL 語言分類

  • DDL(數據定義語言):用于定義和管理數據庫對象(如表、視圖、索引等)。
    • CREATE:創建
    • ALTER:修改
    • DROP:刪除
    • TRUNCATE:清空
    • GRANT:授權
  • DML(數據操作語言):用于對數據進行增刪改查(CRUD)。
    • INSERT:插入
    • SELECT:查詢
    • UPDATE:更新
    • DELETE:刪除
  • TCL(事務控制語言):用于管理事務。

四、常用數據類型

  • 數值類型bittinyintsmallintintbigintdecimaldouble
  • 文本類型CHARVARCHARTEXTBLOBENUMSET
  • 日期時間類型DATETIMEDATETIMETIMESTAMPYEAR
  • JSON類型:用于存儲結構化數據(如數組、對象)

五、實戰:商品訂單系統表設計

1. 創建數據庫

CREATE DATABASE shopdb;
USE shopdb;

2. 創建表結構

(1)品牌表
CREATE TABLE brand (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(32) NOT NULL
);
(2)商品表
CREATE TABLE product (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(64) NOT NULL,price DECIMAL(10,2) NOT NULL,brand_id INT,FOREIGN KEY (brand_id) REFERENCES brand(id)
);
(3)客戶表
CREATE TABLE customer (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(32) NOT NULL,tel CHAR(11),birthday DATE
);
(4)訂單表
CREATE TABLE orders (id INT PRIMARY KEY AUTO_INCREMENT,customer_id INT,order_date DATETIME DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (customer_id) REFERENCES customer(id)
);
(5)訂單項表
CREATE TABLE order_item (id INT PRIMARY KEY AUTO_INCREMENT,order_id INT,product_id INT,quantity INT NOT NULL,FOREIGN KEY (order_id) REFERENCES orders(id),FOREIGN KEY (product_id) REFERENCES product(id)
);

3. 插入數據示例

-- 插入品牌
INSERT INTO brand(name) VALUES ('華為'), ('蘋果');-- 插入商品
INSERT INTO product(name, price, brand_id) VALUES ('Mate60', 4999.00, 1), ('iPhone15', 6999.00, 2);-- 插入客戶
INSERT INTO customer(name, tel, birthday) VALUES ('張三', '13800000001', '1990-01-01'), ('李四', '13800000002', '1992-02-02');-- 插入訂單
INSERT INTO orders(customer_id) VALUES (1), (2);-- 插入訂單項
INSERT INTO order_item(order_id, product_id, quantity) VALUES (1, 1, 2), (1, 2, 1), (2, 2, 3);

4. 查詢數據示例

-- 查詢所有訂單及其客戶信息
SELECT o.id AS 訂單號, c.name AS 客戶名, o.order_date
FROM orders o
JOIN customer c ON o.customer_id = c.id;-- 查詢某訂單的商品明細
SELECT oi.order_id, p.name AS 商品名, oi.quantity, p.price
FROM order_item oi
JOIN product p ON oi.product_id = p.id
WHERE oi.order_id = 1;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82416.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UE失落方舟特效學習 筆記01

通過法線扭曲貼圖 Begin Object Class/Script/UnrealEd.MaterialGraphNode Name"MaterialGraphNode_0" ExportPath"/Script/UnrealEd.MaterialGraphNode/Engine/Transient.M_RadialUV_01:MaterialGraph_0.MaterialGraphNode_0"Begin Object Class/Script/E…

跨境支付風控失效?用代理 IP 構建「地域 - 設備 - 行為」三維防護網

針對跨境支付風控失效問題,結合代理IP技術構建「地域-設備-行為」三維防護網是當前最有效的解決方案。以下是基于最新實踐的技術路徑與策略指南: 一、地域維度:IP地理特征精準匹配 IP屬地真實性驗證 優先選擇住宅代理IP(Residenti…

AI的“軟肋”:架構設計與業務分析的壁壘

盡管人工智能(AI)在代碼生成、數據分析等方面取得了顯著進展,但在架構設計和業務分析的核心領域,人類的智慧和經驗仍然是不可替代的。這些領域往往涉及高度的抽象思維、戰略遠見、對復雜商業邏輯的深刻理解以及在模糊不清的環境中…

【Redis實戰篇】基于Redis的功能實現附近商鋪查詢(Geo),用戶簽到與統計(Bitmap),網站UV統計(HyperLogLog)

文章目錄 附近商鋪GEOSEARCH 實現語法參數解釋 GEORADIUS 實現基本語法參數詳解必選參數可選參數參數詳解必選參數 代碼實現 用戶簽到BitmapRedis 中 Bitmap 基本操作1. 設置位值2. 獲取位值3. 統計位值為 1 的數量4. 位圖運算 Spring Data Redis 中操作 Bitmap1. 操作示例(1) …

【C++高階一】二叉搜索樹

【C高階一】二叉搜索樹剖析 1.什么是二叉搜索樹2.二叉搜索樹非遞歸實現2.1插入2.2刪除2.2.1刪除分析一2.2.2刪除分析二 2.3查找 3.二叉搜索樹遞歸實現3.1插入3.2刪除3.3查找 4.完整代碼 1.什么是二叉搜索樹 任何一個節點,他的左子樹的所有節點都比他小,右…

前端面試熱門知識點總結

URL從輸入到頁面展示的過程 版本1 1.用戶在瀏覽器的地址欄輸入訪問的URL地址。瀏覽器會先根據這個URL查看瀏覽器緩存-系統緩存-路由器緩存,若緩存中有,直接跳到第6步操作,若沒有,則按照下面的步驟進行操作。 2.瀏覽器根據輸入的UR…

Swagger | 解決Springboot2.x/3.x不兼容和依賴報錯等問題

目錄 不兼容報錯提醒 1. 修改Spring Boot版本 2. 修改application.yml配置文件 3. 使用其他替代方案 依賴兼容 配置 Yaml 文件 依賴報錯提醒 解決方法 1. 選擇一個庫 2. 移除springfox依賴 3. 添加springdoc依賴 4. 配置springdoc 5. 清理項目 6. 啟動項目 示例代…

C++默認構造函數、普通構造函數、拷貝構造、移動構造、委托構造及析構函數深度解析

目錄 一、默認構造函數(Default Constructor)二、普通構造函數(General Constructor)三、拷貝構造函數(Copy Constructor)四、移動構造函數(Move Constructor,C11)五、委…

JVM 深度解析

一、JVM 概述 1.1 什么是 JVM? JVM(Java Virtual Machine,Java 虛擬機)是 Java 程序運行的核心引擎。它像一個“翻譯官”,將 Java 字節碼轉換為機器能理解的指令,并管理程序運行時的內存、線程等資源。 …

OpenCV CUDA 模塊圖像過濾-----創建一個計算圖像導數的濾波器函數createDerivFilter()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 cv::cuda::createDerivFilter 是 OpenCV CUDA 模塊中的一個工廠函數,用于創建一個計算圖像導數的濾波器。這個濾波器可以用來計算圖像…

Spring Boot 接口開發實戰指南

Spring Boot 接口開發實戰指南 一、基礎接口開發步驟 1.1 添加必要依賴 <!-- pom.xml --> <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></depen…

題目 3325: 藍橋杯2025年第十六屆省賽真題-2025 圖形

題目 3325: 藍橋杯2025年第十六屆省賽真題-2025 圖形 時間限制: 2s 內存限制: 192MB 提交: 494 解決: 206 題目描述 小藍要畫一個 2025 圖形。圖形的形狀為一個 h w 的矩形&#xff0c;其中 h 表示圖形的高&#xff0c;w 表示圖形的寬。當 h 5,w 10 時&#xff0c;圖形如下所…

UML 時序圖 使用案例

UML 時序圖 UML 時序圖 (Sequence Diagram)時序圖的主要元素消息類型詳解時序圖示例時序圖繪制步驟時序圖的應用場景 UML 時序圖 (Sequence Diagram) 時序圖是UML(統一建模語言)中用于展示對象之間交互行為的動態視圖&#xff0c;它特別強調消息的時間順序。 時序圖的主要元素…

PPT連同備注頁(演講者模式)一塊轉為PDF

首先&#xff0c;進入創建PDF/XPS&#xff1a; 然后進入選項&#xff1a; 發布選項-發布內容里選備注頁&#xff1a; 導出的原始結果是這樣的&#xff1a; 這個時候裁剪一下&#xff0c;范圍為所有頁面&#xff1a; 最終結果&#xff1a; 如果導出不選“備注頁”而是只勾選“包…

AI時代新詞-多模態(Multimodal)

一、什么是多模態&#xff08;Multimodal&#xff09;&#xff1f; 多模態&#xff08;Multimodal&#xff09;是指在人工智能中&#xff0c;融合多種不同類型的信息&#xff08;如文本、圖像、語音、視頻等&#xff09;進行處理和分析的技術。與傳統的單一模態&#xff08;例…

【圖像大模型】Stable Diffusion XL:下一代文本到圖像生成模型的技術突破與實踐指南

Stable Diffusion XL&#xff1a;下一代文本到圖像生成模型的技術突破與實踐指南 一、架構設計與技術演進1.1 核心架構革新1.2 關鍵技術突破1.2.1 雙文本編碼器融合1.2.2 動態擴散調度 二、系統架構解析2.1 完整生成流程2.2 性能指標對比 三、實戰部署指南3.1 環境配置3.2 基礎…

圖像分割技術的實現與比較分析

引言 圖像分割是計算機視覺領域中的一項基礎技術&#xff0c;其目標是將數字圖像劃分為多個圖像子區域&#xff08;像素的集合&#xff09;&#xff0c;以簡化圖像表示&#xff0c;便于后續分析和理解。在醫學影像、遙感圖像分析、自動駕駛、工業檢測等眾多領域&#xff0c;圖…

摩爾線程S4000國產信創計算卡性能實戰——Pytorch轉譯,多卡P2P通信與MUSA編程

簡介 MTT S4000 是基于摩爾線程曲院 GPU 架構打造的全功能元計算卡&#xff0c;為千億規模大語言模型的訓練、微調和推理進行了定制優化&#xff0c;結合先進的圖形渲染能力、視頻編解碼能力和超高清 8K HDR 顯示能力&#xff0c;助力人工智能、圖形渲染、多媒體、科學計算與物…

「從0到1」構建工業物聯網監控系統:ARM+Quarkus+Prometheus技術棧全記錄

在工業4.0浪潮中&#xff0c;邊緣計算正成為智能制造的核心基礎設施。ARM架構邊緣計算機憑借其低功耗、高能效比和模塊化設計優勢&#xff0c;正在重塑工業物聯網&#xff08;IIoT&#xff09;的監控體系。當Java的跨平臺能力與Prometheus的實時監控體系相結合&#xff0c;為工…

【HW系列】—web常規漏洞(文件上傳漏洞)

文章目錄 一、簡介二、危害三、文件檢測方式分類四、判斷文件檢測方式五、文件上傳繞過技術六、漏洞防御措施 一、簡介 文件上傳漏洞是指Web應用程序在處理用戶上傳文件時&#xff0c;未對文件類型、內容、路徑等進行嚴格校驗和限制&#xff0c;導致攻擊者可上傳惡意文件&…