Sql Server 学习2
很多东西只有自己动手去做了才能理解 其中的含义 呵呵 先把练手的代码贴出来以后有空了再做分析吧
本题用到下面三个关系表: CARD 借书卡: (CNO 卡号,NAME 姓名,CLASS 班级) BOOKS 图书: (BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY 库存册数 ) BORROW 借书记录: (CNO 借书卡号,BNO 书号,RDATE 还书日期--1. 写出自定义函数,要求输入借书卡号能得到该卡号所借书金额的总和CREATE FUNCTION GetSUMP ( @CNO int ) RETURNS int AS BEGINdeclare @sum int select @sum=sum(price) from BOOKS where bno in (select bno from BORROW where cno=@CNO)return @sum END GO -- 2. 找出借书超过5本的读者,输出借书卡号及所借图书册数。 select cno,COUNT(bno) t from borrow group by cno having count(bno)>=2 -- 6. 查询现有图书中价格最高的图书,输出书名及作者。select author,t_Books.bname from t_Books where price in (select max(price) from t_Books)-- 7. 查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。 select * from borrow bb where bno= (select bno bt from t_Books where bname='计算机方法')and bb.cnonot in (select cno c from borrow where bno=(select bno b from t_Books where bname='计算机方法习题集') ) order by cno desc;select cc.cno from borrow cc,t_Books ddwhere cc.bno=dd.bnoand dd.bname='计算机方法'and not exists(SELECT * FROM BORROW aa,t_Books bbWHERE aa.BNO=bb.BNOAND bb.BNAME='计算机方法习题集'and cc.cno=aa.cno)--将"C01"班同学所借图书的还期都延长一周。update borrow set borrow.rdate=dateadd(day,7,rdate) where cno in (select bno from borrow where cno=1)-- 9. 从BOOKS表中删除当前无人借阅的图书记录。 delete t from t_books twhere not exists( select * from borrow where t.bno=bno)-- 10.如果经常按书名查询图书信息,请建立合适的索引。create clustered index IBname on t_Books(bname)-- 11.在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",--就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)。 alter trigger trg_insert on borrow for insert,update as IF @@ROWCOUNT>0 insert borrow_save SELECT i.* FROM INSERTED i,t_books b WHERE i.BNO=b.BNO and b.bname='数据库技术及应用'insert into t_Books values('数据库技术及应用','张啊红',90.00,90)insert into borrow values(6,7,GETDATE()) --吧查询出来的数据存入指定表中 insert t_Books select bname,author,price,quantity from t_Books where bname='诛仙3' -- 12.建立一个视图,显示"01"班学生的借书信息(只要求显示姓名和书名)。 alter view v_v05 as select cc.name,tb.bname from borrow b,t_Card cc,t_Books tb where b.cno=cc.cno and tb.bno=b.bno and b.cno in(select cno c from t_Card where class='09软工5版')---- CREATE VIEW V_VIEW AS select name,bname from t_Books,t_Card,borrow where borrow.cno=t_Card.cno and borrow.bno=t_Books.bno and class='09软工5版'select * from v_v05 select * from V_VIEW--- 13.查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出。select cno,COUNT(bno) from borrow bb where bb.bno in(select bno bb from t_Books where bname in ('计算机方法','组合数学'))group by cno having COUNT(bno)=2 order by cno desc--select cno,count(bno) from borrow group by cnoselect * from borrow where bno in (select bno from t_Books where bname='计算机方法') and cno in(select cno from borrow where bno in (select bno from t_Books where bname='组合数学'))order by cno desc--- 14、用事务实现如下功能:一个借书卡号借走某书号的书,则该书的库存量减少1,---当某书的库存量不够1本的时候,该卡号不能借该书alter procedure proBorrowBook(@cno int ,@bno int,@rdate date)asbeginbegin transactiondeclare @quantity int select @quantity=quantity from t_Books where bno=@bno;insert into borrow values(@cno,@bno, dateadd(day,30, @rdate));update t_Books set quantity=@quantity-1 where bno=@bno;if(@quantity>0 and @@error<=0)begincommit transactionprint '借书成功'endelsebeginrollback transactionprint '无库存'endendselect GETDATE()exec proBorrowBook 2,1,'2013-01-08 17:46:01.160'--15、用游标实现将书号为‘80’的书本的价格提高10元declare @bno intdeclare @bname varchar(30)declare @author varchar(30)declare @price numeric(10,2)declare @quantity int declare myCursor cursor for select * from t_Booksopen myCursorfetch next from myCursor into @bno,@bname,@author,@price,@quantitywhile(@@FETCH_STATUS=0)beginif(@bno=2)beginupdate t_Books set price=@price+100 where current of myCursorendfetch next from myCursor into @bno,@bname,@author,@price,@quantityendclose myCursordeallocate myCursor
、
转载于:https://www.cnblogs.com/mxxblog/archive/2013/01/09/2853535.html
Sql Server 学习2相关推荐
- SQL Server 学习系列之五
SQL Server 学习系列之五 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...
- 【SQL Server 学习系列】-- sql 随机生成中文名字
[SQL Server 学习系列]-- sql 随机生成中文名字 原文:[SQL Server 学习系列]-- sql 随机生成中文名字 1 DECLARE @fName TABLE(Id INT I ...
- SQL SERVER学习记录
SQL SERVER学习记录 //创建数据库,请先在D盘手动建立一个 backup的文件夹 create database sl on (name = 'sl',filename = 'd:\back ...
- sql server 学习教程
sql server 学习教程 SQL Server 系统数据库 master model msdb tempdb 索引 定义 分类 唯一索引 主键索引 聚集索引(Clustered) 非聚集索引(N ...
- sql server学习路径地址
联机丛书2005:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2005/ms130214(v=sql.90) 联 ...
- SQL server学习_两表对照
SQL server学习--两表对照 自己闲来无事的时候就写了一个存储过程,用来对比两张表的相同性. 1.这个存储过程主要是用来查看数据量大的前提下,在不知道删除了什么数据,想要恢复. 2.这个存储过 ...
- SQL Server学习之路:建立数据库、建立表
SQL Server学习之路:建立数据库.建立表 1.前言 配置是win10+SQL Server 2012,使用的GUI管理工具是SQL Server 2012自带的SQL Server Manag ...
- [转]推荐国外SQL Server学习网站
由于SQL Server在国外的应用比较成熟,因此国外的SQL Server的优秀学习站点很多,下面几个是自己长期关注的,里面的文章原创性高.知识性强,实在是学习SQL Server "居家 ...
- SQL Server学习笔记
<SQL Server从入门到精通>学习笔记 1 数据管理技术的三个阶段:人工管理.文件系统.数据库系统. 2 数据库的组成:数据库.数据库管理系统.数据库管理员.硬件平台.软件平台5部分 ...
- SQL server学习日志(二)创建表!手把手教你创建表,修改表,了解数据类型!超详细!
一.简单了解表(创建表之前一定要先了解数据类型与约束哦,这样我们才能创建正确的表!) 1.定义:基本表是数据库中组织和管理数据的基本单位,数据库的数据保存在一个个基本表中. 对于关系型数据库系统而言, ...
最新文章
- java 简单万年历_JAVA实现的简单万年历代码
- DevExpress 动态换肤
- 用 Go 构建一个区块链 ---- Part 1: 基本原型
- canal mysql重置_canal: 首先装完阿里的canal,然后数据库同步,仅供学习参考
- EMNLP 2021 | ST-ToD:小样本场景下的任务型对话预训练
- 闭包,sync使用细节
- IOS6 新特性之UIRefreshControl
- 猎豹浏览器禁止跟踪怎么开启 禁止跟踪功能开启方法
- 信息学奥赛一本通 2059:【例3.11】买笔
- python获取局域网在线主机_pythond的icmp广播报获取局域网主机IP
- 苹果无人车裁员200人,收购特斯拉呼声再起
- Windows 7安装到虚拟磁盘VHD文件中
- latex中输入matlab代码,Latex插入matlab代码
- 还不懂数据库模糊查询?总结7种窍门技巧!
- 【个人学习记录】RoboWare Studio安装使用
- 模电数电高频电路综合实验成套设备QY-MS535G
- 大数据分析-第九章 知识图谱
- 支付与对账业务的流程
- 武大博士后出站后应聘在社区做社工引热议,内卷还是人各有志?
- CMOS图像传感器 - 原理介绍