图书(书号,书名,作者编号,价格,出版社编号) 作者(编号,姓名,电话) 出版社(编号,出版社名称,地址) 根据上面基本表的信息完成下列查询。 1 查询价格10元以下的图书作者信息 2 查询比“张力”写的书都便宜的图书信息 3 查询高教出版社出版的图书书名和作者姓名
时间: 2023-06-26 16:07:44 浏览: 202
1. 查询价格10元以下的图书作者信息:
```
SELECT 作者.编号, 作者.姓名, 作者.电话
FROM 图书, 作者
WHERE 图书.作者编号 = 作者.编号 AND 图书.价格 < 10;
```
2. 查询比“张力”写的书都便宜的图书信息:
```
SELECT *
FROM 图书
WHERE 价格 < (SELECT MIN(价格)
FROM 图书, 作者
WHERE 图书.作者编号 = 作者.编号 AND 作者.姓名 = '张力');
```
3. 查询高教出版社出版的图书书名和作者姓名:
```
SELECT 图书.书名, 作者.姓名
FROM 图书, 作者, 出版社
WHERE 图书.作者编号 = 作者.编号 AND 图书.出版社编号 = 出版社.编号 AND 出版社.出版社名称 = '高教';
```
相关问题
图书(书号,书名,作者编号,价格,出版社编号) 作者(编号,姓名,电话) 出版社(编号,出版社名称,地址) 建立作者的delete 触发器,只有当此作者没有任何作品才可删除,若有出书的记录不能删除。
可以使用以下的SQL语句创建作者表:
```
CREATE TABLE 作者(
编号 INT PRIMARY KEY,
姓名 VARCHAR(20) NOT NULL,
电话 VARCHAR(20) NOT NULL
);
```
然后创建图书表:
```
CREATE TABLE 图书(
书号 INT PRIMARY KEY,
书名 VARCHAR(50) NOT NULL,
作者编号 INT NOT NULL,
价格 DECIMAL(10, 2) NOT NULL,
出版社编号 INT NOT NULL,
FOREIGN KEY(作者编号) REFERENCES 作者(编号),
FOREIGN KEY(出版社编号) REFERENCES 出版社(编号)
);
```
最后创建出版社表:
```
CREATE TABLE 出版社(
编号 INT PRIMARY KEY,
出版社名称 VARCHAR(50) NOT NULL,
地址 VARCHAR(100) NOT NULL
);
```
接下来我们可以创建一个删除作者的触发器,确保只有当作者没有任何作品时才能删除作者。下面是一个示例:
```
CREATE TRIGGER 删除作者触发器
BEFORE DELETE ON 作者
FOR EACH ROW
BEGIN
DECLARE 作品数 INT;
SELECT COUNT(*) INTO 作品数 FROM 图书 WHERE 图书.作者编号 = OLD.编号;
IF 作品数 > 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '该作者已有作品,不能删除!';
END IF;
END;
```
这个触发器在作者表上定义,在每次删除操作之前被触发。它首先查询图书表,以确定该作者是否有任何作品。如果有作品,则触发器会发出一个错误消息,否则删除操作将继续执行。
用sqlserver语言完成图书(书号,书名,作者编号,价格,出版社编号) 作者(编号,姓名,电话) 出版社(编号,出版社名称,地址) 建立作者的delete 触发器,只有当此作者没有任何作品才可删除,若有出书的记录不能删除。
可以使用以下 SQL 语句创建相关的表格:
```sql
CREATE TABLE 书籍 (
书号 INT PRIMARY KEY,
书名 VARCHAR(50),
作者编号 INT,
价格 MONEY,
出版社编号 INT
);
CREATE TABLE 作者 (
编号 INT PRIMARY KEY,
姓名 VARCHAR(50),
电话 VARCHAR(20)
);
CREATE TABLE 出版社 (
编号 INT PRIMARY KEY,
出版社名称 VARCHAR(50),
地址 VARCHAR(100)
);
```
然后,可以使用以下 SQL 语句创建删除触发器:
```sql
CREATE TRIGGER trg_删除作者
ON 作者
INSTEAD OF DELETE
AS
BEGIN
IF EXISTS (SELECT * FROM 书籍 WHERE 作者编号 = deleted.编号)
BEGIN
RAISERROR ('此作者有书籍,不能删除!', 16, 1);
ROLLBACK TRANSACTION;
END
ELSE
BEGIN
DELETE FROM 作者 WHERE 编号 = deleted.编号;
END
END
```
该触发器会在删除作者记录时触发,如果该作者有书籍,则会提示错误并回滚事务,否则会删除该作者记录。
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)