图书出版数据库设计与实现 - SQL 语句示例

本文档介绍了图书出版数据库的设计,包括图书、作者、出版三个表的结构定义和示例数据。提供了使用 SQL 语句创建表格、插入数据的代码示例,方便读者学习和实践。

表结构

'图书' 表结构:

| 字段名 | 数据类型 | 长度 | 主键 | 非空 | 其他约束 | 说明 | |---|---|---|---|---|---|---| | 书号 | CHAR | 20 | 是 | 是 | | 图书唯一标识 | | 书名 | VARCHAR | 30 | 否 | 是 | | 图书名称 | | 出版年份 | SMALLINT | | 否 | 否 | | 图书出版年份 | | 印刷数量 | INT | | 否 | 否 | 印刷数量>=1000 | 图书印刷数量 | | 单价 | DECIMAL | 6,2 | 否 | 否 | | 图书单价 |

'作者' 表结构:

| 字段名 | 数据类型 | 长度 | 主键 | 非空 | 其他约束 | 说明 | |---|---|---|---|---|---|---| | 作者号 | CHAR | 11 | 是 | 是 | | 作者唯一标识 | | 作者名 | VARCHAR | 30 | 否 | 是 | | 作者姓名 | | 职称 | CHAR | 2 | 否 | 否 | 职称 IN ('高级', '中级', '初级') | 作者职称 |

'出版' 表结构:

| 字段名 | 数据类型 | 长度 | 主键 | 非空 | 其他约束 | 说明 | |---|---|---|---|---|---|---| | 书号 | CHAR | 20 | 是 | 是 | REFERENCES 图书(书号) | 外键,引用图书表 | | 作者号 | CHAR | 11 | 是 | 是 | REFERENCES 作者(作者号) | 外键,引用作者表 | | 作者序号 | INT | | 否 | 否 | | 作者在图书中的序号 |

SQL 语句

创建表格:

-- 创建图书表格
CREATE TABLE 图书 (
  书号 CHAR(20) PRIMARY KEY,
  书名 VARCHAR(30) NOT NULL,
  出版年份 SMALLINT,
  印刷数量 INT CHECK (印刷数量>=1000),
  单价 DECIMAL(6,2)
);

-- 创建作者表格
CREATE TABLE 作者 (
  作者号 CHAR(11) PRIMARY KEY,
  作者名 VARCHAR(30) NOT NULL,
  职称 CHAR(2) CHECK (职称 IN ('高级', '中级', '初级'))
);

-- 创建出版表格
CREATE TABLE 出版 (
  书号 CHAR(20) REFERENCES 图书(书号),
  作者号 CHAR(11) REFERENCES 作者(作者号),
  作者序号 INT,
  PRIMARY KEY (书号, 作者号)
);

插入数据:

-- 插入图书数据
INSERT INTO 图书 (书号, 书名, 出版年份, 印刷数量, 单价)
VALUES 
  ('0001', 'Java编程思想', 2018, 10000, 68.50),
  ('0002', 'Python编程快速入门', 2019, 5000, 45.99),
  ('0003', 'C++ Primer', 2020, 8000, 88.00);

-- 插入作者数据
INSERT INTO 作者 (作者号, 作者名, 职称)
VALUES
  ('A001', '张三', '高级'),
  ('A002', '李四', '中级'),
  ('A003', '王五', '初级');

-- 插入出版数据
INSERT INTO 出版 (书号, 作者号, 作者序号)
VALUES
  ('0001', 'A001', 1),
  ('0001', 'A002', 2),
  ('0002', 'A002', 1),
  ('0003', 'A002', 1),
  ('0003', 'A003', 2);

原文地址: https://www.cveoy.top/t/topic/ogan 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录