mysql创建borrow表结构_sql 典型SQL题(多表联查) | 学步园

1.

数据库表A 有个字段a是int类型

a中有数据有1到9任意(有重复的)

想取得a中,当 a=1时 a=2时 a=3…… 各一条记录的列表

select top 1 * from A where a=1

union

select top 1 * from A where a=2

...

union

select top 1 * from A where a=9

2.

S(SNO,SNAME)学生表

C(CNO,CNAME,CTEARCHER)课程表

SC(SNO,CNO,SCGRADE)成绩表

1.找出没有选修李明老师课程的所有学生姓名

2.找出每门课程成绩在90分以上的学生姓名及成绩

select S.SNAME from STUDENT as S inner join TECHER as T

inner join Souce as So

on T.CNO=So.CNO

on S.SNO=So.SNO

where T.CTEACHER <>'李明'

select s.SNAME

from STUDENT as S inner join TECHER as T

inner join Souce as So

on T.CNO=So.CNO

on S.SNO=So.SNO

where not exists(select 1 from sc where sno=a.sno and cno=a.cno and grade<90)

3.

本题用到下面三个关系表

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
请按照以下步骤创建 `borrow` : ```sql CREATE TABLE borrow ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, book_id INT NOT NULL, borrow_date DATE NOT NULL, return_date DATE, CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT fk_book_id FOREIGN KEY (book_id) REFERENCES book(id) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT chk_return_date CHECK (return_date >= borrow_date) ); ``` 上述代码创建一个 `borrow` ,其中包含以下字段: - `id`:借阅记录编号,自增长整数类型,作为主键。 - `user_id`:借阅用户的编号,非空整数类型。 - `book_id`:借阅书籍的编号,非空整数类型。 - `borrow_date`:借阅日期,非空日期类型。 - `return_date`:归还日期,可为空日期类型。 - `fk_user_id`:外键约束,指定 `user_id` 字段必须引用 `user` 的 `id` 字段。 - `fk_book_id`:外键约束,指定 `book_id` 字段必须引用 `book` 的 `id` 字段。 - `chk_return_date`:检查约束,指定 `return_date` 字段的值必须大于等于 `borrow_date` 字段的值。 请注意,上述代码中的外键约束指定了在删除或更新 `user` 或 `book` 中对应记录时,必须同步删除或更新 `borrow` 中的相关记录。这有助于保持数据的一致性。 如果您想重新创建 BookDB 数据库中的 5 张基本并添加完整性约束,请参考以下示例脚本: ```sql -- 创建 user CREATE TABLE user ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(50) UNIQUE NOT NULL, phone VARCHAR(20), address VARCHAR(100) ); -- 创建 book CREATE TABLE book ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(100) NOT NULL, author VARCHAR(50) NOT NULL, publish_date DATE NOT NULL, isbn VARCHAR(20) UNIQUE NOT NULL, price DECIMAL(8,2) NOT NULL ); -- 创建 category CREATE TABLE category ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, description VARCHAR(100) ); -- 创建 publisher CREATE TABLE publisher ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, address VARCHAR(100), phone VARCHAR(20), website VARCHAR(50) ); -- 创建 book_category CREATE TABLE book_category ( book_id INT NOT NULL, category_id INT NOT NULL, PRIMARY KEY (book_id, category_id), CONSTRAINT fk_book_id FOREIGN KEY (book_id) REFERENCES book(id) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT fk_category_id FOREIGN KEY (category_id) REFERENCES category(id) ON DELETE CASCADE ON UPDATE CASCADE ); ``` 上述脚本中的每个都包含了一些基本字段,如 `id`、`name`、`email` 等。其中,`user` 和 `book` 都包含了一个唯一性约束,防止重复记录的出现。`book_category` 一个关联,用于记录书籍和分类之间的关系。每个都包含了适当的外键约束和检查约束,以确保数据的完整性和一致性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值