当前位置:文档之家› 数据库原理与应用知识总结

数据库原理与应用知识总结

关系范式:1.设有关系模式:学生修课管理(学号,姓名,所在系,性别,课程号,课程名,学分,成绩)。

设一名学生可以选修多门课程号,一门课程号可以被多名学生选修;一名学生有唯一的所在系,每门课程号有唯-的课程名和学分。

回答以下问题:(1)根据上述规定写出关系模式R的基本函数依赖;(2)找出关系模式R的候选码;(3)试问关系模式R最高已经达到第几范式?为什么?(4)将R分解成3NF模式集。

答: (1)学号> (姓名,所在系,性别) F课程号> (课程名,学分) F(学号,课程号) >成绩F(学号,课程号) > (姓名,所在系,性别) P(2)候选码:学号,课程号(3)存在部分函数依赖,R达到第一范式(4) Student (学号,姓名,所在系,性别)sc (学号,课程号,成绩)Course (课程号,课程名,学分)2.t-sql语句:(1)删除数据库drop database(2)修改数据库alter database(3)使用SOL语句创建读者信息表,并设置读书编号的主键,读者姓名取值唯一。

Create table 读者信息表(读者编号varchar(13)primary key,读者姓名varchar(10)unique,性别varchar(2)not null ,年龄int ,证件号码varchar (30)not null );(4)使用SOL语句创建图书信息表、图书馆借阅表。

Create table 图书信息表(图书编号varchar(13)primary key,图书名称varchar(40)not null,作者varchar(21)not null,译者varchar(30),出版社varchar(50)not null,出版日期date not null,图书价格money not null);Create table 图书借阅信息表(图书编号varchar(13),读书编号varchar(13),操作员编号varchar(13),借阅日期datetime not null,归还日期datetime ,Primary key (图书编号,读者编号,借阅日期))数据查询:查询所有图书的书名和价格Select 图书名称,图书价格From 图书信息表;查询所有读者的读者编号和姓名Select 读者编号,读者姓名From 读者信息表;查询所有图书的信息:Select *From 图书信息表查询全体读者的姓名及出生年份Select 读者姓名,2018 -年龄From 读书信息表;查询借阅了图书的读者的读者编号:Select 读者编号From 图书借阅信息表;显示图书信息表中前5条记录Select top 5 *From 图书信息表;查询年龄在30岁以下的读者的读者姓名及年龄。

Select 读者姓名,年龄From读者信息表Where 年龄<30;查询清华大学出版社出版的图书信息Select *From 图书信息表Where 出版社=‘清华出版社’;查询年龄在20岁到29岁(包括20岁和29岁)的读者的姓名和年龄Select 读者姓名,年龄From 读者信息表Where 年龄>=20 and年龄<=29;查询清华大学出版社和人民邮电出版社出版的图书的图书编号和图书名称。

Select 图书编号,图书名称From 图书信息表Where 出版社=‘清华大学出版社’or 出版社=‘人民邮电出版社’;查询清华大学出版社和人民邮电出版社出版的图书的图书编号和图书名称Select 图书编号,图书名称Where 出版社in (‘清华大学出版社’,‘人民邮电出版社’);查询既不是清华大学出版社,也不是人民邮电出版社出版的图书的图书编号和图书名称。

Select 图书编号,图书名称From 图书信息表Where 出版社not in (‘清华出版社’,‘人民邮电出版社’);查找读者编号为20170001读者信息Select *From 读者信息表Where 读者编号like ‘20170001’;查询所有姓张的读者的姓名和性别Select 读者姓名,性别From 读者信息表Where 读者姓名like ‘张%’;产讯图书名称含有“软件”的所有图书的编号、名称、出版社。

Select 图书编号,图书名称,出版社From 图书信息表Where 图书名称like ‘%软件%’;查询读者全名为两个汉字的读者的信息Select *Where 读者姓名like ‘--’;查询读者姓名第二个字为小字的读者的信息。

Select *From 读者信息表Where 读者姓名like ‘-小%’;查询所有不姓张的读者的信息Select *From 读者信息表Where 读者姓名not like ‘张%’;查询图书信息表中,图书名字以“efgh”4个字母之一开头的图书名称Select 图书名称From 图书信息表Where图书名称like ‘【efgh】%’;查询图书信息表中,图书名字不以“efgh”4个字母之一开头的图书名称Select 图书名称From 图书信息表Where 图书名称like ‘【^efgh】%’;查询年龄在20岁到29岁(包括20岁和29岁)的读者的姓名和年龄Select 读者姓名,年龄From 读者信息表Where 年龄between 20 and 29;查询年龄不在20岁到29岁(包括20岁和29岁)的读者的姓名和年龄Select 读者姓名,年龄From 读者信息表Where 年龄not between 20 and 29;查询25岁以下读者的姓名和年龄,查询结果按年龄降序排列Select 读者姓名,年龄From读者信息表Where 年龄<25Order by 年龄desc;查询读者的最大年龄、最小年龄、平均年龄。

Select max(年龄)最大年龄,min(年龄)最小年龄,avg(年龄)平均年龄From读者信息表;查询读者人数Select count(*)读者人数From 读者信息表;统计类别编号为1的图书的价格总和Select sum(图书价格)价格总和From 图书信息表Where 类别编号=‘1’;统计每类图书价格总和,并列出类型编号、图书价格总和。

Select 类别编号,sum(图书价格)图书价格总和From 图书信息表Group by 类别编号查阅借阅图书数量多于一本的读者的读者编号Select 读者编号From 图书借阅信息表Group by 读者编号Having count(*)>1;查询与《Java程序设计》同一个出版社的图书的图书编号、图书名称、出版社。

Select 图书编号,图书名称,出版社From图书信息表Where 出版社in (Select 出版社From图书信息表Where 图书名称=‘Java程序设计’);查询借阅了图书《软件测试》的读者的读者编号、读者姓名Select 读者编号,读者姓名From 读者信息表Where 读者编号in(Select 读者编号From图书借阅信息表Where 图书编号in (Select 图书编号From图书信息表Where 图书名称=‘软件测试’));查询每位读者及其借书情况Select 图书借阅信息表.*,读者信息表.*From图书借阅信息表join读者信息表on 图书借阅信息表.读者编号=读者信息表.读者编号查询已经外借的图书中读者张明已归还的图书信息Select 图书借阅信息表.*,读者信息表.*From 图书借阅信息表inner join读者信息表On 图书借阅信息表.读者编号< >读者信息表.读者编号Where 读者姓名=‘xx’;查询读者的借书情况,包括借了图书的读者和没有借图书的读者。

Select 图书借阅信息表.读者编号,图书编号,读者姓名,性别,年龄From 读者信息表left join 图书借阅信息表On 图书借阅情况.读者编号=读者信息表.读者编号;查询借了图书的读者信息Select 图书借阅信息表.读者编号,图书编号,读者姓名,性别,年龄From 图书借阅信息表left join 读者信息表On图书借阅信息表.读者编号=读者信息表.读者编号;查询图书价格至少比读者20161818所借某一本图书价格要搞得图书的图书编号Select 图书编号From 图书信息表Where 图书价格>any(Select 图书价格From 图书信息表Where 图书编号in(select图书编号From 图书借阅信息表Where 读者编号=‘20161818’))And 图书编号not in (select 图书编号From 图书借阅信息表Where 读者编号=‘20161818’);查询图书价格比读者20170001所借任意一本图书价格都要高的图书的图书编号Select 图书编号From 图书信息表Where 图书价格>all(select 图书价格From 图书信息表Where 图书编号in (select 图书编号From 图书借阅信息表Where 读者编号=‘20170001’))And 图书编号not in (select 图书编号From 图书借阅信息表Where 读者编号=‘20170001’);查询借阅了9787111185260图书的读者的姓名Select 读者姓名From 读者信息表Where exists(select *From 图书借阅信息表Where 读者编号=读者信息表.读者编号and 图书编号=‘9787111185260’);查询没有借阅9787111185260图书的读者的姓名Select 读者姓名From 读者信息表Where not exists(select *From 图书借阅信息表Where 读者编号+读者信息表.读者编号and 图书编号=‘9787111185260’);查询人民邮电出版社出版的、价格高于50元的图书的名称和对应价格Select 图书名称,图书价格Where 出版社=‘人民邮电出版社’UnionSelect 图书名称,图书价格From图书信息表Where 图书价格>50;查询借阅了图书编号为9787111185260的图书而没有借阅图书编号为9787030481900的图书的读者的编号Select 读者编号From 图书借阅信息表Where 图书编号=‘9787111185260’ExceptSelect 读者编号From图书借阅信息表Where 图书编号=‘9787030481900’;查询人民邮电出版社出版的、价格高于50元的图书的名称和对应的价格。

相关主题