数据库是现代软件开发中不可或缺的基础,掌握数据库的基本概念和操作,是每个开发者的必经之路。本文将以“商品-品牌-客户-订单-订单项”为例,带你快速入门数据库的核心知识和基本操作。
主键是表中用来唯一标识一条记录的一列或多列的组合。主键分为业务主键(如身份证号、手机号等有实际业务意义的字段)和代理主键(如自增ID)。
外键用于连接两张表,是引用另一张表的主键或唯一键,用于保证数据的完整性和关联性。
范式的意义:消除冗余、保证数据完整性和一致性。
CREATE
:创建ALTER
:修改DROP
:删除TRUNCATE
:清空GRANT
:授权INSERT
:插入SELECT
:查询UPDATE
:更新DELETE
:删除bit
、tinyint
、smallint
、int
、bigint
、decimal
、double
CHAR
、VARCHAR
、TEXT
、BLOB
、ENUM
、SET
DATE
、TIME
、DATETIME
、TIMESTAMP
、YEAR
CREATE DATABASE shopdb;
USE shopdb;
CREATE TABLE brand (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32) NOT NULL
);
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)
);
CREATE TABLE customer (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32) NOT NULL,
tel CHAR(11),
birthday DATE
);
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)
);
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)
);
-- 插入品牌
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);
-- 查询所有订单及其客户信息
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;