您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > mysql---练习题
BOOK数据库中共有三个表,如下:图书表:图书编号char(5)主键,书名VARCHAR(20),作者VARCHAR(10),售价FLOAT,在库CHAR(1)默认值为“1”借阅表:证件号CHAR(4)主键,图书编号CHAR(5),借阅日期DATE,还书日期DATE;读者:证件号CHAR(4)主键,姓名VARCHAR(10),学院VARCHAR(20);1:建立数据库,建立表;2:显示出BOOK数据库中全部的表;3:显示出图书表的表结构;4:往图书表中插入新纪录,内容如下:图书编号:GS116,书名:上下五千年,售价:46.30;5:往借阅表中插入一条纪录,内容分别是:1080GS1162014-3-22014-4-246:将图书表中编号为GS116的纪录的作者改为“张三”;7:查询图书表中售价在10元到30元之间的图书编号和书名。8:查询图书表中张三所著的在库的图书信息。9:查询读者表中李姓读者的信息。10:查询读者表全部信息,要求按学院升序排序。11:查询李四借书的书名,归还日期。(连接查询)12:哪些人没有借过书。1.createdatabasebook;usebook;createtable图书(图书编号char(5)primarykey,书名varchar(20),作者varchar(10),售价float,在库char(1)default1);createtable借阅(证件号char(4)primarykey,图书编号char(5),借阅日期date,还书日期date);createtable读者(证件号char(4)primarykey,姓名varchar(10),学院varchar(20));2.showtables;3.desc图书;4.insertinto图书(图书编号,书名,售价)values(GS116,上下五千年,46.30);5.insertinto借阅values(1080,GS116,2014-3-2,2014-4-14);6.update图书set作者=张三where图书编号=GS116;7.select图书编号,书名from图书where售价=10and售价=30;8.select*from图书where作者=张三and在库=1;9.select*from读者where姓名like李%;10.select*from读者orderby学院ASC;11.select书名,还书日期from图书,借阅,读者where姓名=李四and图书.图书编号=借阅.图书编号and借阅.证件号=读者.证件号;12.select*from读者where证件号notin(select证件号from借阅);1、确认book表使用的存储引擎。2、修改book表使用的存储引擎为InnoDB。3、开始事务处理。4、在book表中,作者列的后面添加一列:出版社,varchar(20)5、查询book表中,每个出版社的图书数目。6、查询book表中,售价最高的三本书的书名和出版社。7、将borrow表中,2013年5月14号这一天借书的所有列信息复制为一个新表文件borrow_20130514。8、将borrow表中的还书日期类型修改为datetime.9、定义保存点sp1。10、在表book中插入一条记录:书名为《天龙八部》,售价为32。11、回滚到保存点sp1。12、设置当前分离水平为readcommitted1.showcreatetablebook;2.altertablebookengineinnoDB;3.starttransaction;commit;rollback;4.altertablebookadd出版社varchar(20)after作者;5.selectcount(图书)as图书数目frombookgroupby出版社;6.select书名,出版社frombookorderby售价desclimit3;7.createtableborrow-20130514likeborrow;insertintoborrow-20130514(select*frombookwhere借书日期=20130514);8.altertablebookchange还书日期还书日期datetime;9.savepointsp1;10.insertintobook(书名,售价)values(《天龙八部》,32);11.rollbacktosavepointsp1;12.setsessiontransactionisolationlevelreadcommitted;1:在图书表中按书名字段创建名为index_book的索引。2:在图书表中按书名和作者创建index_bookauthor的多列索引。3:删除借阅表上的主索引。4:为读者表按姓名字段建立唯一索引(假设学生都不重名)。5:创建视图名为borrow,要求视图中包含的信息是:哪些人没有借过书。6:创建视图名为academy,要求视图中包含计算机学院的读者的信息。7:在视图academy中插入一条记录,数据为(“10010”,“张三丰”,“计算机学院”)8:将视图academy中的张三丰的学院改为“武当山”。9:将名为academy的视图删除。1.createindexindex_bookon图书(书名);2.createindexindex_bookauthoron图书(书名,作者);3.altertable借阅dropprimarykey;4.altertable读者addunique(姓名);5.createviewvborrowasselect*from读者where证件号notin(select证件号from借阅);6.createviewvacademyasselect*from读者where学院=计算机学院;7.insertintovacademy(证件号,姓名,学院)values(10010,张三丰,计算机学院);8.updatevacademyset学院=武当山where姓名=张三丰;9.dropviewvacademy;现有库存表为goods,表内容如下:idNameSum100001自行车20100002电脑15100003打印机9100004扫描仪23有订单表order,表结构如下:OIDGIDMUCH客户在订单表order中添加订单,例如插入一订单:(104330001,100004,4)表示定了goods表中id为100004的商品,订的数量为4台,这样就要从goods表中把编号为100004的商品的sum数量减少4台;同样如果从订单表order中删除一条记录,就要把该商品的库存数量相应的增加。要求编写四个触发器,分别让mysql自动完成下面要求的功能:1:在order表中插入一条记录(即增加一个订单),goods表中该商品的sum字段(库存数量)要相应的减少。例如:在order表中加入这样的记录(20001,100001,10),则goods表中自行车的数量相应的减少10辆。2:在order表中删除一条记录(即撤销一个订单),goods表中该商品的sum字段(库存数量)要相应的增加。例如:讲order表中的记录(20001,100001,10)删除,则goods表中自行车的数量相应的减加10辆。3:在order表中修改某个商品的much值(即修改预定的某个商品的数量值),goods表中该商品的sum字段(库存数量)要相应的改变。例如:将order表中的记录(20001,100001,10)修改为(20001,100001,15)则goods表中自行车的数量相应的变化。4:不同商品的退订,在定点表order中,将order表中的记录(20001,100001,10)修改为(20001,100003,12)则goods表中相应商品的相应数量发生变化。1.delimiter//createtriggertrigger1afterinsertonorderforeachrowbeginupdategoodssetsum=sum-10whereid=100004;end//2.delimiter//createtriggertrigger2afterdeleteonorderforeachrowbeginupdategoodssetsum=sum+10whereid=100004;end//3.delimiter//createtriggertrigger3afterupdateonorderforeachrowbeginupdategoodssetsum=sum+10-15whereid=100001;end//4.delimiter//createtriggertrigger4afterdeleteandinsertonorderforeachrowbeginupdategoodssetsum=sum+10whereid=100001;updategoodssetsum=sum-12whereid=100003;end//
本文标题:mysql---练习题
链接地址:https://www.777doc.com/doc-4450981 .html