1. 写出创建如下三张数据表的SQL语句。
“图书”表结构:
书号:普通编码定长字符类型,长度为10,主键。
书名:普通编码可变长字符类型,长度为20,非空。
类别:统一字符编码定长字符类型,长度为4,取值为:“高等数学”、“量子力学”、“国学基础”。
出版日期:日期类型。
单价:整型。
“书店”表结构:
书店编号:普通编码定长字符类型,长度为20,主键。
书店名:普通编码可变长字符类型,长度为30,非空。
地址:统一字符编码可变长字符类型,长度为30。
“销售”表结构:
书号:普通编码定长字符类型,长度为10,引用图书表的外键。
书店编号:普通编码定长字符类型,长度为20,引用书店表的外键。
销售时间:日期时间类型。
销售数量:整型。
主键:(书号,书店编号,销售时间)。
答案:
CREATE TABLE 图书(
书号 char(10) primary key,
书名 varchar(20) not null,
类别 nchar(4) CHECK (类别 IN(高等数学,量子力学,‘’国学基础‘’)),
出版日期 date,
单价 int
)
CREATE TABLE 书店(
书店编号 char(20) primary key,
书店名 varchar(30) not null,
地址 nvarchar(30)
)
CREATE TABLE 销售(
书号 char(10),
书店编号 char(20),
销售时间 datetime,
销售数量 int
Primary key(书号,书店编号,销售时间),
Foreign key(书号) references 图书(书号),
Foreign key(书店编号) references 书店(书店编号)
)
2. 依据第1题所创建的三张表,写出完成下列操作的SQL语句。
1) 查询“量子力学”类图书的书名和出版日期。
2) 查询单价大于等于60的图书的销售情况,列出书名、类别、销售时间和销售数量。
3) 将量子力学类图书的单价降低10。
4) 在书店表中插入一行数据,书店编号:SD100,书店名:新华书店,地址:西单。
1) SELECT 书名,出版日期 FROM 图书 WHERE 类别=量子力学
2) SELECT 书名,类别,销售时间,销售数量
FROM 图书 aJOIN 销售 b ON a.书号=b.书号 WHERE 单价>=60
3) UPDATE 图书 SET 单价=单价-10 WHERE 类别=”量子力学”
4) INSERT INTO 书店 VALUES(‘SD100’,”新华书店”,”西单”)
3. 依据第1题所创建的三张表,写出创建满足如下要求的
视图
的SQL语句:查询销售了“高等数学”类图书的书店名和地址。
CREAT VIEW VI AS
SELECT 书店名,地址 FROM 书店 a
JOIN 销售 b ON a.书店编号=b.书店编号
JOIN 图书 c ON c.书号=b.书号
WHERE 类别=’高等数学’