有关系表 reader(id,name,unit,address),id表示证件号,name表示姓名,unit表示单位,address表示地址。关系表borrow(bno,id,starttime,endtime,remark),其中,bno表示书号,id表示证件号,starttime表示结束时间,endtime表示还书时间,remark表示备注,用SQL语言实现,查询有未还书记录的读者“姓名”。
时间: 2024-04-04 14:34:15 浏览: 83
好的,根据您的要求,我来给您提供 SQL 语句:
```
SELECT DISTINCT reader.name
FROM reader
JOIN borrow ON reader.id = borrow.id
WHERE borrow.endtime IS NULL
```
这段 SQL 语句中,我们使用了 `JOIN` 关键字,将 `reader` 和 `borrow` 两个表连接起来,连接条件是 `reader.id = borrow.id`,即证件号相等。然后,使用 `WHERE` 子句筛选出未还书的记录,即 `borrow.endtime IS NULL`。最后,使用 `SELECT` 子句选择出满足条件的读者姓名,即 `reader.name`。由于有可能会有多条借书记录,我们使用 `DISTINCT` 关键字去重,避免出现重复的姓名。
相关问题
读者表reader(r_no借书证号, r_unit单位, r_name姓名,r_sex性别,r_pro职称,r_address地址)写出oracle语句查询分析每个系男、女人数各多少
假设你要查询的是一个名为`reader`的表格,其中包括`r_no`、`r_unit`、`r_name`、`r_sex`、`r_pro`、`r_address`等字段。你可以使用以下Oracle语句查询每个系男、女人数各多少:
```
SELECT SUBSTR(r_unit, 1, 2) AS department, r_sex, COUNT(*) AS count
FROM reader
GROUP BY SUBSTR(r_unit, 1, 2), r_sex;
```
这条语句会按照`r_unit`字段的前两位和`r_sex`两个字段进行分组,然后使用`COUNT(*)`函数统计每组中的记录数。其中,使用`SUBSTR`函数提取`r_unit`字段的前两位,以表示读者所属的系。最终的结果会显示每个系每个性别的读者人数。
创建三张表: 图书表 book (b_no 总编号,b_type分类号,b_name书名, b_author作者,b_publish出版单位,b_price 单价) 读者表reader(r_no借书证号, r_unit单位, r_name姓名,r_sex性别,r_pro职称,r_address地址) 借阅表borrow(r_no借书证号, b_no总编号,b_time借书日期) 约束: 图书表主键b_no,sex性别设置约束:男和女,地址设置默认值”宿舍”。
你可以使用以下SQL语句在Oracle数据库中创建三张表:
```sql
-- 创建图书表
CREATE TABLE book (
b_no NUMBER(10) PRIMARY KEY,
b_type VARCHAR2(20),
b_name VARCHAR2(100),
b_author VARCHAR2(50),
b_publish VARCHAR2(100),
b_price NUMBER(10, 2)
);
-- 创建读者表
CREATE TABLE reader (
r_no NUMBER(10) PRIMARY KEY,
r_unit VARCHAR2(100),
r_name VARCHAR2(50),
r_sex VARCHAR2(2) CONSTRAINT check_sex CHECK (r_sex IN ('男', '女')),
r_pro VARCHAR2(20),
r_address VARCHAR2(100) DEFAULT '宿舍'
);
-- 创建借阅表
CREATE TABLE borrow (
r_no NUMBER(10),
b_no NUMBER(10),
b_time DATE,
PRIMARY KEY (r_no, b_no),
CONSTRAINT borrow_reader_fk FOREIGN KEY (r_no) REFERENCES reader(r_no),
CONSTRAINT borrow_book_fk FOREIGN KEY (b_no) REFERENCES book(b_no)
);
```
以上SQL语句中,图书表的主键为b_no,读者表的主键为r_no和借阅表的联合主键为r_no和b_no。在读者表中,性别r_sex设置了约束CHECK,只允许取值为‘男’或‘女’。地址r_address设置了默认值为‘宿舍’。在借阅表中,设置了外键约束borrow_reader_fk和borrow_book_fk,分别关联到读者表的r_no字段和图书表的b_no字段。
阅读全文