• 创建表格(Create)
  • 插入数据(Insert)
  • 查询数据(Read / Select)
  • 更新数据(Update)
  • 删除数据(Delete)

我们以你实验中的 S 表(供应商表) 为例进行讲解。


🧱 一、创建表格(CREATE TABLE)

CREATE TABLE S (
    SNO CHAR(2) PRIMARY KEY,         -- 供应商编号,主键
    SNAME VARCHAR(20) NOT NULL,      -- 供应商名称,不能为空
    STATUS INT,                      -- 状态
    CITY VARCHAR(20)                 -- 城市
);

💡 说明:

  • CHAR(2):固定长度为2的字符(如 S1, S2)
  • VARCHAR(20):可变长度字符串,最多20字符
  • PRIMARY KEY:设置主键(唯一标识)
  • NOT NULL:不能为空值

✍️ 二、插入数据(INSERT INTO)

单条插入

INSERT INTO S (SNO, SNAME, STATUS, CITY)
VALUES ('S1', '精 益', 20, '天津');

多条插入(推荐)

INSERT INTO S (SNO, SNAME, STATUS, CITY) VALUES
('S1', '精 益', 20, '天津'),
('S2', '盛 锡', 10, '北京'),
('S3', '东方红', 30, '北京');

🔍 三、查询数据(SELECT)

查询所有字段

SELECT * FROM S;

查询指定字段

SELECT SNAME, CITY FROM S;

添加条件(WHERE)

SELECT * FROM S WHERE CITY = '北京';

排序(ORDER BY)

SELECT * FROM S ORDER BY STATUS DESC;

🔁 四、更新数据(UPDATE)

更新单个字段

UPDATE S
SET STATUS = 0
WHERE SNO = 'S1';

同时更新多个字段

UPDATE S
SET STATUS = 25, CITY = '上海'
WHERE SNO = 'S3';

⚠️ 加上 WHERE 条件很重要,否则会更新整张表!


🗑️ 五、删除数据(DELETE)

删除指定行

DELETE FROM S
WHERE SNO = 'S2';

删除整张表的数据(保留表结构)

DELETE FROM S;

删除整张表(连结构也删掉)

DROP TABLE S;

🔁 小结(CRUD)一览表

操作类型 SQL 语句样例 说明
创建表 CREATE TABLE 创建新表结构
插入数据 INSERT INTO 向表添加记录
读取数据 SELECT 查询数据
更新数据 UPDATE ... SET ... WHERE 修改记录
删除数据 DELETE FROM 删除记录

完整的 sql 文件

-- 创建数据库(可选)
CREATE DATABASE IF NOT EXISTS SPJ;
USE SPJ;

-- 删除旧表(如果存在)
DROP TABLE IF EXISTS SPJ;
DROP TABLE IF EXISTS J;
DROP TABLE IF EXISTS P;
DROP TABLE IF EXISTS S;

-- 创建表 S(供应商)
CREATE TABLE S (
    SNO CHAR(2) PRIMARY KEY,
    SNAME VARCHAR(20) NOT NULL,
    STATUS INT,
    CITY VARCHAR(20)
);

-- 创建表 P(零件)
CREATE TABLE P (
    PNO CHAR(2) PRIMARY KEY,
    PNAME VARCHAR(20) NOT NULL,
    COLOR VARCHAR(10),
    WEIGHT INT
);

-- 创建表 J(工程)
CREATE TABLE J (
    JNO CHAR(2) PRIMARY KEY,
    JNAME VARCHAR(50) NOT NULL,
    CITY VARCHAR(20)
);

-- 创建表 SPJ(供应关系)
CREATE TABLE SPJ (
    SNO CHAR(2),
    PNO CHAR(2),
    JNO CHAR(2),
    QTY INT,
    PRIMARY KEY (SNO, PNO, JNO),
    FOREIGN KEY (SNO) REFERENCES S(SNO),
    FOREIGN KEY (PNO) REFERENCES P(PNO),
    FOREIGN KEY (JNO) REFERENCES J(JNO)
);

-- 插入数据到 S
INSERT INTO S (SNO, SNAME, STATUS, CITY) VALUES
('S1', '精 益', 20, '天津'),
('S2', '盛 锡', 10, '北京'),
('S3', '东方红', 30, '北京'),
('S4', '丰泰盛', 20, '天津'),
('S5', '为 民', 30, '上海');

-- 插入数据到 P
INSERT INTO P (PNO, PNAME, COLOR, WEIGHT) VALUES
('P1', '螺 母', '红', 12),
('P2', '螺 栓', '绿', 17),
('P3', '螺丝刀', '蓝', 14),
('P4', '螺丝刀', '红', 14),
('P5', '凸 轮', '蓝', 40),
('P6', '齿 轮', '红', 30);

-- 插入数据到 J
INSERT INTO J (JNO, JNAME, CITY) VALUES
('J1', '三建', '北京'),
('J2', '一汽汽车', '长春'),
('J3', '弹簧厂项目', '天津'),
('J4', '造船厂军舰', '天津'),
('J5', '机车厂高铁车厢', '唐山'),
('J6', '无线电厂通话设备', '常州'),
('J7', '半导体厂S01型芯片', '南京');

-- 插入数据到 SPJ
INSERT INTO SPJ (SNO, PNO, JNO, QTY) VALUES
('S1', 'P1', 'J1', 200),
('S1', 'P1', 'J3', 100),
('S1', 'P1', 'J4', 700),
('S1', 'P2', 'J2', 100),
('S2', 'P3', 'J1', 400),
('S2', 'P3', 'J2', 200),
('S2', 'P3', 'J4', 500),
('S2', 'P3', 'J5', 400),
('S2', 'P5', 'J1', 400),
('S2', 'P5', 'J2', 100),
('S3', 'P1', 'J1', 200),
('S3', 'P3', 'J1', 200),
('S4', 'P5', 'J1', 100),
('S4', 'P6', 'J3', 300),
('S4', 'P6', 'J4', 200),
('S5', 'P2', 'J4', 100),
('S5', 'P3', 'J1', 200),
('S5', 'P6', 'J2', 200),
('S5', 'P6', 'J4', 500);