SQL规范化练习

合集下载

sql 练习题

sql 练习题

sql 练习题SQL练习题SQL(Structured Query Language)是一种用于管理关系数据库系统的标准化语言。

它可以用于创建、修改和查询数据库中的数据。

对于想要提高SQL技能的人来说,练习是非常重要的。

在本文中,我将提供一些SQL练习题,帮助读者加深对SQL的理解和应用。

练习题一:查询数据假设有一个名为"employees"的表,包含以下字段:id、name、age、salary。

请编写一条SQL语句,查询所有员工的姓名和薪水。

练习题二:条件查询在上述"employees"表的基础上,请编写一条SQL语句,查询所有薪水大于5000的员工的姓名和薪水。

练习题三:排序查询继续使用上述"employees"表,请编写一条SQL语句,查询所有员工的姓名和薪水,并按照薪水降序排列。

练习题四:聚合函数假设有一个名为"orders"的表,包含以下字段:id、customer_id、order_date、total_amount。

请编写一条SQL语句,查询每个客户的总订单金额。

练习题五:连接查询在上述"employees"和"orders"表的基础上,请编写一条SQL语句,查询每个员工的姓名、薪水和总订单金额,并按照薪水降序排列。

练习题六:子查询在上述"employees"表的基础上,请编写一条SQL语句,查询薪水高于平均薪水的员工的姓名和薪水。

练习题七:更新数据假设有一个名为"products"的表,包含以下字段:id、name、price。

请编写一条SQL语句,将所有价格低于10的产品的价格增加10%。

练习题八:删除数据在上述"products"表的基础上,请编写一条SQL语句,删除所有价格高于100的产品。

练习题九:创建表请编写一条SQL语句,创建一个名为"students"的表,包含以下字段:id、name、age、gender。

sql练习题及答案

sql练习题及答案

sql练习题及答案SQL练习题及答案SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。

在数据库管理系统中,SQL被广泛应用于数据的查询、插入、更新和删除等操作。

掌握SQL语言对于数据库开发和数据分析非常重要。

在这篇文章中,我们将提供一些SQL练习题及其答案,帮助读者巩固和提升SQL的应用能力。

1. 查询员工表中所有员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表;```2. 查询员工表中工资大于5000的员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 工资 > 5000;```3. 查询员工表中工资在3000到5000之间的员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 工资 BETWEEN 3000 AND 5000;```4. 查询员工表中姓"张"的员工的姓名和工资。

```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 姓名 LIKE '张%';```5. 查询员工表中工资最高的员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 工资 = (SELECT MAX(工资) FROM 员工表);```6. 查询员工表中每个部门的员工数量。

答案:```sqlSELECT 部门, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门;```7. 查询员工表中每个部门的平均工资。

答案:```sqlSELECT 部门, AVG(工资) AS 平均工资 FROM 员工表 GROUP BY 部门;```8. 查询员工表中工资高于部门平均工资的员工的姓名和工资。

答案:SELECT 姓名, 工资 FROM 员工表 WHERE 工资 > (SELECT AVG(工资) FROM 员工表 GROUP BY 部门);```9. 查询员工表中没有分配部门的员工的姓名和工资。

sql命令练习题

sql命令练习题

sql命令练习题SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。

掌握SQL命令对于数据库管理和开发至关重要。

本文将提供一些SQL命令练习题,帮助读者提升对SQL语言的理解和应用能力。

练习一:创建数据库和表格1. 创建一个名为"company"的数据库。

2. 在"company"数据库中创建一个名为"employees"的表格,包含以下字段:- "id":整数类型,作为唯一标识员工的主键。

- "name":字符串类型,存储员工姓名。

- "age":整数类型,存储员工年龄。

- "position":字符串类型,存储员工职位。

练习二:插入数据1. 向"employees"表格中插入一条员工记录,包含以下信息:- id:1- name:John- age:30- position:Manager2. 向"employees"表格中插入多条员工记录,包含以下信息:- id:2,name:Lisa,age:25,position:Engineer- id:3,name:Mike,age:35,position:Senior Manager- id:4,name:Sarah,age:28,position:Analyst练习三:查询数据1. 查询"employees"表格中所有员工的信息。

2. 查询"employees"表格中年龄大于等于30的员工姓名和职位。

3. 查询"employees"表格中职位为"Manager"的员工数量。

练习四:更新数据1. 将id为1的员工的职位更新为"Senior Manager"。

最全的SQL练习题(做完你就是高手)

最全的SQL练习题(做完你就是高手)

最全的SQL练习题(做完你就是⾼⼿)最全的SQL练习题(做完你就是⾼⼿)补充作业⼀设有三个关系:S(SNO, SNAME, AGE, SEX,Sdept)SC(SNO, CNO, GRADE)C(CNO, CNAME, TEACHER)试⽤关系代数表达式表⽰下列查询:-- 1、查询学号为S3学⽣所学课程的课程名与任课教师名。

SELECT c.`name`, c.teacher FROM student_class sc LEFT JOIN `class` c ON o = c.NO WHERE sc.sno = 's3';-- 2、查询⾄少选修LIU⽼师所教课程中⼀门课的⼥⽣姓名。

select s.sname from student as s where s.sno in(select DISTINCT sc.sno from student_class as sc left join class as c on o=o where c.teacher='LIU')and s.sex=2;-- 3、查询WANG同学不学的课程的课程号。

select o from class as c where o not in(select DISTINCT o from student as s inner join student_class as sc on s.sno=sc.sno where s.sname='WANG');-- 4、查询⾄少选修两门课程的学⽣学号。

select sno, count(*) as cou from student_class group by sno having cou>=2;-- 5、查询选修课程中包含LIU⽼师所教全部课程的学⽣学号。

select sc.sno from student_class as sc INNER JOIN class as c on o=o where c.teacher='LIU';补充作业⼆三个关系同上,试⽤SQL语⾔表⽰下列查询:1、查询门门课程都及格的学⽣的学号⽅法1:提⽰:根据学号分组,就得到每个学⽣所有的课程成绩,在某个学⽣这⼀组成绩⾥,如果他所有的课程成绩都⼤于60分则输出该组学⽣的学号Select sno frome sc group by sno having min(grade)>=60;2、查询既有课程⼤于90分⼜有课程不及格的学⽣的学号⾃⾝连接:Select sno from sc where grade >90 and sno in (select sno from sc where grade<60)3、查询平均分不及格的课程号和平均成绩Select cno , avg(GRADE) from sc group by cno having avg(grade)<60查询平均分及格的课程号和课程名Select o , Cname from SC,C where o=o group by o having avg(grade)>=604、找出⾄少选修了2号学⽣选修过的全部课程的学⽣提⽰:不存在这样的课程y,学⽣2选修了y,⽽学⽣x没有选。

sql练习题

sql练习题

sql练习题SQL练习题在现代信息化社会中,数据的处理和管理变得愈发重要。

而SQL(Structured Query Language)作为一种用于管理和处理关系型数据库的语言,也成为了各行各业从事数据分析和管理的必备技能之一。

为了提高自己的SQL技能,我们可以通过练习题来不断巩固和提升。

练习题一:查询商品信息假设有一个商品表(Product)和一个供应商表(Supplier),其中商品表包含了商品的ID、名称、价格和供应商ID等信息,供应商表包含了供应商的ID和名称等信息。

请写出一条SQL语句,查询出所有商品的名称、价格和供应商名称。

解答一:```sqlSELECT , Product.Price, FROM ProductJOIN Supplier ON Product.SupplierID = Supplier.ID;```练习题二:统计销售额假设有一个订单表(Orders)和一个订单详情表(OrderDetails),其中订单表包含了订单的ID、日期和客户ID等信息,订单详情表包含了订单详情的ID、订单ID、商品ID和数量等信息。

请写出一条SQL语句,统计每个客户的总销售额,并按销售额降序排序。

解答二:```sqlSELECT Orders.CustomerID, SUM(Product.Price * OrderDetails.Quantity) AS TotalSalesFROM OrdersJOIN OrderDetails ON Orders.ID = OrderDetails.OrderIDJOIN Product ON OrderDetails.ProductID = Product.IDGROUP BY Orders.CustomerIDORDER BY TotalSales DESC;```练习题三:查询员工信息假设有一个员工表(Employee)和一个部门表(Department),其中员工表包含了员工的ID、姓名和部门ID等信息,部门表包含了部门的ID和名称等信息。

SQL经典50题练习

SQL经典50题练习

创建表及插⼊数据学⽣表Studentcreate table SC(SId varchar(10),CId varchar(10),score decimal(18,1));insert into SC values('01' , '01' , 80);insert into SC values('01' , '02' , 90);insert into SC values('01' , '03' , 99);insert into SC values('02' , '01' , 70);insert into SC values('02' , '02' , 60);insert into SC values('02' , '03' , 80);insert into SC values('03' , '01' , 80);insert into SC values('03' , '02' , 80);insert into SC values('03' , '03' , 80);insert into SC values('04' , '01' , 50);insert into SC values('04' , '02' , 30);insert into SC values('04' , '03' , 20);insert into SC values('05' , '01' , 76);insert into SC values('05' , '02' , 87);insert into SC values('06' , '01' , 31);insert into SC values('06' , '03' , 34);insert into SC values('07' , '02' , 89);insert into SC values('07' , '03' , 98);练习题⽬1. 查询" 01 "课程⽐" 02 "课程成绩⾼的学⽣的信息及课程分数1.1 查询同时存在" 01 "课程和" 02 "课程的情况1.2 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显⽰为 null )1.3 查询不存在" 01 "课程但存在" 02 "课程的情况2. 查询平均成绩⼤于等于 60 分的同学的学⽣编号和学⽣姓名和平均成绩3. 查询在 SC 表存在成绩的学⽣信息4. 查询所有同学的学⽣编号、学⽣姓名、选课总数、所有课程的总成绩(没成绩的显⽰为 null )4.1 查有成绩的学⽣信息5. 查询「李」姓⽼师的数量6. 查询学过「张三」⽼师授课的同学的信息7. 查询没有学全所有课程的同学的信息8. 查询⾄少有⼀门课与学号为" 01 "的同学所学相同的同学的信息9. 查询和" 01 "号的同学学习的课程 完全相同的其他同学的信息10. 查询没学过"张三"⽼师讲授的任⼀门课程的学⽣姓名11. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩12. 检索" 01 "课程分数⼩于 60,按分数降序排列的学⽣信息13. 按平均成绩从⾼到低显⽰所有学⽣的所有课程的成绩以及平均成绩14. 查询各科成绩最⾼分、最低分和平均分:以如下形式显⽰:课程 ID,课程 name,最⾼分,最低分,平均分,及格率,中等率,优良率,优秀率及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90要求输出课程号和选修⼈数,查询结果按⼈数降序排列,若⼈数相同,按课程号升序排列15. 按各科成绩进⾏排序,并显⽰排名, Score 重复时保留名次空缺15. 按各科成绩进⾏排序,并显⽰排名, Score 重复时保留名次空缺15.1 按各科成绩进⾏排序,并显⽰排名, Score 重复时合并名次16. 查询学⽣的总成绩,并进⾏排名,总分重复时保留名次空缺16.1 查询学⽣的总成绩,并进⾏排名,总分重复时不保留名次空缺17. 统计各科成绩各分数段⼈数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分⽐18. 查询各科成绩前三名的记录19. 查询每门课程被选修的学⽣数20. 查询出只选修两门课程的学⽣学号和姓名21. 查询男⽣、⼥⽣⼈数22. 查询名字中含有「风」字的学⽣信息23. 查询同名同性学⽣名单,并统计同名⼈数24. 查询 1990 年出⽣的学⽣名单25. 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列26. 查询平均成绩⼤于等于 85 的所有学⽣的学号、姓名和平均成绩27. 查询课程名称为「数学」,且分数低于 60 的学⽣姓名和分数28. 查询所有学⽣的课程及分数情况(存在学⽣没成绩,没选课的情况)29. 查询任何⼀门课程成绩在 70 分以上的姓名、课程名称和分数30. 查询不及格的课程31. 查询课程编号为 01 且课程成绩在 80 分以上的学⽣的学号和姓名32. 求每门课程的学⽣⼈数33. 成绩不重复,查询选修「张三」⽼师所授课程的学⽣中,成绩最⾼的学⽣信息及其成绩34. 成绩有重复的情况下,查询选修「张三」⽼师所授课程的学⽣中,成绩最⾼的学⽣信息及其成 绩35. 查询不同课程成绩相同的学⽣的学⽣编号、课程编号、学⽣成绩36. 查询每门功成绩最好的前两名37. 统计每门课程的学⽣选修⼈数(超过 5 ⼈的课程才统计)。

sql语句练习50题

sql语句练习50题

sql语句练习50题Student(Sid,Sname,Sage,Ssex) 学⽣表Course(Cid,Cname,Tid) 课程表SC(Sid,Cid,score) 成绩表Teacher(Tid,Tname) 教师表练习内容:1.查询“某1”课程⽐“某2”课程成绩⾼的所有学⽣的学号;SELECT a.sid FROM (SELECT sid,score FROM SC WHERE cid=1) a,(SELECT sid,score FROM SC WHERE cid=3) b WHEREa.score>b.score AND a.sid=b.sid;此题知识点,嵌套查询和给查出来的表起别名2.查询平均成绩⼤于60分的同学的学号和平均成绩;SELECT sid,avg(score) FROM sc GROUP BY sid having avg(score) >60;此题知识点,GROUP BY 语句⽤于结合合计函数,根据⼀个或多个列对结果集进⾏分组。

group by后⾯不能接where,having代替了where3.查询所有同学的学号、姓名、选课数、总成绩SELECT Student.sid,Student.Sname,count(SC.cid),sum(score)FROM Student left Outer JOIN SC on Student.sid=SC.cid GROUP BY Student.sid,Sname4.查询姓“李”的⽼师的个数;select count(teacher.tid)from teacher where teacher.tname like'李%'5.查询没学过“叶平”⽼师课的同学的学号、姓名;SELECT Student.sid,Student.Sname FROM Student WHERE sid not in (SELECT distinct( SC.sid) FROM SC,Course,Teacher WHERE SC.cid=Course.cid AND Teacher.id=Course.tid AND Teacher.Tname='叶平');此题知识点,distinct是去重的作⽤6.查询学过“```”并且也学过编号“```”课程的同学的学号、姓名;select a.SID,a.SNAME from (select student.SNAME,student.SID from student,course,sc where cname='c++'and sc.sid=student.sid and sc.cid=course.cid) a,(select student.SNAME,student.SID from student,course,sc where cname='english'and sc.sid=student.sid and sc.cid=course.cid) b where a.sid=b.sid;标准答案(但是好像不好使)SELECT Student.S#,Student.Sname FROM Student,SC WHERE Student.S#=SC.S# ANDSC.C#='001'and exists( SELECT * FROM SC as SC_2 WHERE SC_2.S#=SC.S# AND SC_2.C#='002');此题知识点,exists是在集合⾥找数据,as就是起别名7.查询学过“叶平”⽼师所教的所有课的同学的学号、姓名;select a.sid,a.sname from (select student.sid,student.sname from student,teacher,course,scwhere teacher.TNAME='杨巍巍' and teacher.tid=course.tid and course.cid=sc.cid and student.sid=sc.sid) a标准答案:SELECT sid,Sname FROM Student WHERE sid in (SELECT sid FROM SC ,Course ,Teacher WHERE SC.cid=Course.cid AND Teacher.tid=Course.tid AND Teacher.Tname='杨巍巍' GROUP BY sid having count(SC.cid)=(SELECT count(cid) FROM Course,Teacher WHERE Teacher.tid=Course.tid AND Tname='杨巍巍'))8.查询课程编号“”的成绩⽐课程编号“”课程低的所有同学的学号、姓名;select a.sid,a.sname from(select student.SID,student.sname,sc.SCORE from student,sc where student.sid=sc.sid and sc.cid=1) a, (select student.SID,student.sname,sc.score from student,sc where student.sid=sc.sid and sc.cid=2) b where a.score<b.score anda.sid=b.sid标准答案:SELECT sid,Sname FROM (SELECT Student.sid,Student.Sname,score ,(SELECT score FROM SC SC_2 WHERE SC_2.sid=Student.sid AND SC_2.cid=1) score2 FROM Student,SCWHERE Student.sid=SC.sid AND cid=1) S_2 WHERE score2 <score;9.查询所有课程成绩⼩于分的同学的学号、姓名;SELECT sid,Sname FROM Student WHERE sid not in (SELECT Student.sid FROM Student,SC WHERE Student.sid=SC.sid AND score>60);此题知识点,先查出⼤于60分的,然后not in 就是⼩于60分的了10.查询没有学全所有课的同学的学号、姓名;SELECT Student.sid,Student.Sname FROM Student,SCWHERE Student.sid=SC.sid GROUP BY Student.sid,Student.Sname having count(cid) <(SELECT count(cid) FROM Course);11.查询⾄少有⼀门课与学号为“”的同学所学相同的同学的学号和姓名;12.查询⾄少学过学号为“”同学所有⼀门课的其他同学学号和姓名;SELECT student.sid,student.Sname FROM Student,SC WHERE Student.sid=SC.sid AND cid in (SELECT cid FROM SC WHERE sid=1)此题知识点,SELECT sid,Sname FROM Student,SC WHERE Student.sid=SC.sid AND cid in (SELECT cid FROM SC WHEREsid=1)这样写是错误的,因为from后⾯是两个表,不能明确是哪个表⾥⾯的sid和sname所以错误提⽰是“未明确定义列”13.把“SC”表中“叶平”⽼师教的课的成绩都更改为此课程的平均成绩;update sc set score=(select avg(score) from sc,course,teacher where course.cid=sc.cid and course.tid=teacher.tid andteacher.tname='杨巍巍')14.查询和“”号的同学学习的课程完全相同的其他同学学号和姓名;SELECT sid FROM SC WHERE cid in (SELECT cid FROM SC WHERE sid=6) GROUP BY sid having count(*)=(SELECT count(*) FROM SC WHERE sid=6);此题知识点,⽤数量来判断15.删除学习“叶平”⽼师课的SC表记录;delete from sc s where s.cid in (select c.cid from teacher t,course c where t.tid = c.tid and tname='李⼦')此题知识点,嵌套查询可以分布考虑,先查出李⼦⽼师都交了什么课的id,然后再删除那些id的值16.向SC表中插⼊⼀些记录,这些记录要求符合以下条件:没有上过编号“”课程的同学学号、课程的平均成绩;Insert into SC SELECT sid,2,(SELECT avg(score) FROM SC WHERE cid=2) FROM Student WHERE sid not in (SELECT sid FROM SC WHERE cid=2);17.按平均成绩从⾼到低显⽰所有学⽣的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显⽰:学⽣ID,,数据库,企业管理,英语,有效课程数,有效平均分;(没做出来)18.查询各科成绩最⾼和最低的分:以如下形式显⽰:课程ID,最⾼分,最低分;select cid as 课程号,max(score)as 最⾼分,min(score) as 最低分 from sc group by cid标准答案(但是运⾏不好使)SELECT L.cid As 课程ID,L.score AS 最⾼分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.cid = R.cid ANDL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.cid = IL.cid AND IM.sid=IL.sidGROUP BY IL.cid)AND R.Score = (SELECT MIN(IR.score) FROM SC AS IR WHERE R.cid = IR.cid GROUP BY IR.cid );19.按各科平均成绩从低到⾼和及格率的百分数从⾼到低顺序26.查询每门课程被选修的学⽣数select sc.cid,count(sc.sid) from sc,course where sc.cid=course.cid group by sc.cid27.查询出只选修了⼀门课程的全部学⽣的学号和姓名SELECT SC.sid,Student.Sname,count(cid) AS 选课数 FROM SC ,StudentWHERE SC.sid=Student.sid GROUP BY SC.sid ,Student.Sname having count(cid)=1;32.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列SELECT Cid,Avg(score) FROM SC GROUP BY cid ORDER BY Avg(score),cid DESC ;37.查询不及格的课程,并按课程号从⼤到⼩排列SELECT cid,sid FROM sc WHERE score <60 ORDER BY cid38.查询课程编号为且课程成绩在分以上的学⽣的学号和姓名;select student.sid,student.sname from sc,student where sc.cid=1 and sc.score>60 and sc.sid=student.sid40.查询选修“叶平”⽼师所授课程的学⽣中,成绩最⾼的学⽣姓名及其成绩select student.sname,sc.score from sc,student,teacher,course c where teacher.tname='李⼦'and teacher.tid=c.tid and c.cid=sc.cid and sc.sid=student.sid and sc.score=(select max(score)from sc where sc.cid=c.cid)41.查询各个课程及相应的选修⼈数select sc.cid ,count(sc.sid)from sc,student where sc.sid=student.sid group by sc.cid43.查询每门功成绩最好的前两名44.统计每门课程的学⽣选修⼈数(超过⼈的课程才统计)。

SQL练习及答案

SQL练习及答案

SQL练习及答案问题描述:为管理岗位业务培训信息,建立3个表:S (S#,SN,SD,SA) S#,SN,SD,SA分别代表学号、学员姓名、所属单位、学员年龄C (C#,CN ) C#,CN分别代表课程编号、课程名称SC ( S#,C#,G ) S#,C#,G分别代表学号、所选修的课程编号、学习成绩1.使用标准SQL嵌套语句查询选修课程名称为?税收基础?的学员学号和姓名Select SN,SD FROM SWhere [S#]IN( Select [S#] FROM C,SCWhere C.[C#]=SC.[C#]AND CN=N'税收基础')2.使用标准SQL嵌套语句查询选修课程编号为?C2?的学员姓名和所属单位Select SN,SD FROM SWhere [S#]IN (Select [S#] FROM SCWhere [C#]='C2')3.使用标准SQL嵌套语句查询不选修课程编号为?C5?的学员姓名和所属单位Select SN,SD FROM SWhere [S#] NOT IN(Select [S#] FROM SCWhere [C#]='C5')4.使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位Select SN,SD FROM SWhere [S#] IN(Select [S#] From SCGROUP BY [S#]HAVING Count (Distinct C#)5.查询选修了课程的学员人数Select学员人数=COUNT(DISTINCT [S#]) FROM SC6.查询选修课程超过5门的学员学号和所属单位Select SN,SD FROM SWhere [S#] IN(Select [S#] FROM SCGROUP BY [S#]HAVING COUNT(DISTINCT [C#])>5)题目2问题描述:已知关系模式:S (SNO,SNAME)学生关系。

SQL语句练习操作

SQL语句练习操作

实验一 SQL语言的使用一相关知识SQL语言由4部分组成:数据定义语言DDL、数据操纵语言DML、数据控制语言DCL 和其他,其功能如下:(1)数据定义语言DDL:主要用于定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引等,扩展的DDL还包括存储过程、函数、对象、触发器等的定义。

(2)数据操纵语言DML:主要用于对数据库中的数据进行检索和更新两大类操作,其中更新操作包括插入、删除和更新数据。

(3)数据控制语言DCL:主要用于对数据库中的对象进行授权、用户维护(包括创建、修改和删除)、完整性规则定义和事务定义等。

(4)其他:主要是嵌入式SQL语言和动态SQL语言的定义,规定了SQL语言在宿主语言中使用的规则。

扩展的SQL还包括数据库数据的重新组织、备份和回复等。

二数据操纵语言练习2.1 订单管理数据库订单管理数据库由5张表组成,分别为员工表、客户表、商品表、订单主表和订单明细表。

员工表中记录当前销售公司所有的员工详细信息,客户表中记录与当前销售公司有业务往来的客户单位信息,商品表中记录当前销售公司可销售的商品,客户每次的购买活动形成一条订单记录,并指定一名销售公司员工对其进行负责,一个订单可能同时购买多种商品,所以订单主表中只记录以订单为单位的相关信息,而订单明细中再记录具体商品的销售情况。

2.2 实验内容2.2.1 查询操作2.2.1.1 单表查询(1)查询全部职工的基本信息(2)查询所有职工的部门、职工号、姓名和薪水(3)查询全体职工的姓名、年龄、所属部门,并用汉语显示表头信息(4)查询1973年出生且为职员的员工信息(5)查询业务科或财务科的职工姓名、性别和所在部门,仅显示前面5位职工(6)查询薪水为2000或4000的职工编号、姓名、所在部门和薪水(7)查询薪水在3000~4000的职工姓名和薪水(8)查询薪水不在3000~4000的职工姓名和薪水(9)查询所有姓张的职工姓名、所属部门和性别(10)查询所有姓张且全名为三个汉字的职工姓名(11)查询既不在业务科也不在财务科的职工姓名、性别和所在部门(12)查询1991年被雇佣的职工号、姓名、性别、电话号码、出生日期以及年龄(13)查询6月出生的员工编码、姓名、出生日期,并按出生日期的降序输出(14)查询职工工资最高的前10%的职工编号、职工姓名和工资(15)查询每个业务员的订单数量(16)统计在业务科工作且在1973年或1967年出生的员工人数和平均工资(17)统计每种商品的销售数量和金额,并按销售金额的升序排序输出(18)查询订单中至少包含3种(含3种)以上商品的订单编号及订购次数,且订购的商品数量在3件(含3件)以上。

数据库的sql语句练习题

数据库的sql语句练习题

数据库的sql语句练习题1. 练习题一:查询语句基础在学生表(students)中,包含以下字段:学号(id)、姓名(name)、年龄(age)、性别(gender)、班级(class)、成绩(score)。

请编写SQL语句实现以下需求:a) 查询学生表中所有学生的信息。

b) 查询学生表中的男性学生信息。

c) 查询学生表中年龄为18岁的学生信息。

d) 查询学生表中成绩大于等于90分的学生信息。

e) 查询学生表中姓“张”的学生信息。

2. 练习题二:修改语句练习在学生表(students)中,某个学生的学号为1001,需要将该学生的年龄修改为20岁,请编写相应的SQL语句实现此操作。

3. 练习题三:插入语句练习在学生表(students)中添加一条新纪录,学号为1002,姓名为李明,年龄为19岁,性别为男,班级为三年级,成绩为87分,请编写相应的SQL语句实现此操作。

4. 练习题四:删除语句练习在学生表(students)中,某个学生的学号为1003,需要将该学生的信息从表中删除,请编写相应的SQL语句实现此操作。

5. 练习题五:使用多表查询存在两张表,学生表(students)和课程表(courses)。

学生表包含字段:学号(id)、姓名(name)、班级(class);课程表包含字段:课程编号(course_id)、课程名称(course_name)。

已知约德尔学院中,学号为1001的学生参加了编号为1的课程,请编写SQL语句查询学号为1001的学生所选的课程及课程名称。

6. 练习题六:排序查询练习在学生表(students)中,查询所有学生的信息,并按照成绩从高到低进行排序。

以上是数据库的SQL语句练习题,请按照上述要求编写相应的SQL语句进行解答。

祝你练习愉快,取得好成绩!。

SQL查询语句练习作业

SQL查询语句练习作业

一、创建名为“student”的表,结构见表1,内容见表2表1 student表结构字段名类型宽度学号字符型10姓名字符型10性别字符型 4出生日期日期型8专业字符型20年级数值型10表2 student表二、练习SQL查询语句——基础的select格式: select 字段名 from 表名1、写出查找student表中所有字段的语句,并在命令窗口测试2、写出查找student表中学号的语句,并在命令窗口测试3、写出查找student表中姓名的语句,并在命令窗口测试4、写出查找student表中性别的语句,并在命令窗口测试5、写出查找student表中出生日期的语句,并在命令窗口测试6、写出查找student表中专业的语句,并在命令窗口测试7、写出查找student表中年级的语句,并在命令窗口测试8、写出查找student表中学号和姓名的语句,并在命令窗口测试(注意逗号是英文状态)9、写出查找student表中学号、姓名和性别的语句,并在命令窗口测试10、写出查找student表中学号、姓名、性别和出生日期的语句,并在命令窗口测试11、写出查找student表中学号、姓名、性别、出生日期和专业的语句,并在命令窗口测试12、写出查找student表中学号、姓名、性别、出生日期、专业和年级的语句,并在命令窗口测试三、练习SQL查询语句——where条件查询格式: select 字段名 from 表名 where 条件1、查找student表中学号是101001的学生,写出语句,并在命令窗口测试2、查找student表中李玲的个人信息,写出语句,并在命令窗口测试3、查找student表中所有的男学生,写出语句,并在命令窗口测试4、查找student表中的在1992年3月1日(含)之后出生的学生,写出语句,并在命令窗口测试5、查找student表中信息管理专业的学生,写出语句,并在命令窗口测试6、查找student表中2012级的学生,写出语句,并在命令窗口测试四、练习SQL查询语句——where条件查询AND OR格式: select 字段名 from 表名 where 条件1 and/or 条件21、查找student表中学号为121001和131005的学生信息,写出语句,并在命令窗口测试2、查找student表中李泽田和王海东的个人信息,写出语句,并在命令窗口测试3、查找student表中工商管理专业的男生信息,写出语句,并在命令窗口测试4、查找student表中在1992年和1993年出生的学生,写出语句,并在命令窗口测试5、查找student表中信息管理专业和工商管理专业的女学生,写出语句,并在命令窗口测试6、查找student表中2012级和2013级中1993年出生的学生,写出语句,并在命令窗口测试五、练习SQL查询语句——where条件查询like格式: select 字段名 from 表名 where 字段名like 套式1、查找student表中姓王的学生信息,写出语句,并在命令窗口测试2、查找student表中姓王和姓贾的学生信息,写出语句,并在命令窗口测试3、查找student表中姓王、姓贾和姓李的学生信息,写出语句,并在命令窗口测试4、查找student表中姓名中含“泽”的学生信息,写出语句,并在命令窗口测试5、查找student表中姓名中含“文”的学生信息,写出语句,并在命令窗口测试6、查找student表中姓名中最后1个字是“玲”的学生信息,写出语句,并在命令窗口测试7、查找student表中姓名中最后1个字是“文”的学生信息,写出语句,并在命令窗口测试8、查找student表中姓名有3个字,中间的字是“文”的学生,写出语句,并在命令窗口测试9、查找student表中姓王的男生信息,写出语句,并在命令窗口测试10、查找student表中姓王和姓李的女生信息,写出语句,并在命令窗口测试11、查找student表中姓名中含“文”的女生信息,写出语句,并在命令窗口测试六、练习SQL查询语句——where条件查询between格式: select 字段名 from 表名 where 字段名between 值1 and 值2 1、查找student表中在1992年出生的学生,写出语句,并在命令窗口测试2、查找student表中在1992年和1993年出生的学生,写出语句,并在命令窗口测试3、查找student表中在2010级、2011级、2012级的学生,写出语句,并在命令窗口测试七、练习SQL查询语句——where条件查询order by格式: select 字段名 from 表名 where 条件 order by 字段名 asc/desc 1、把student表中的学生信息按学号降序排列显示,写出语句,并在命令窗口测试2、把student表中的学生信息按姓名降序排列显示,写出语句,并在命令窗口测试3、把student表中的学生信息按姓名升序排列显示,写出语句,并在命令窗口测试4、把student表中的学生信息按年龄升序排列显示,写出语句,并在命令窗口测试5、把student表中的学生信息按年龄降序排列显示,写出语句,并在命令窗口测试6、查找student表中所有的男生,并按学号降序排列,写出语句,并在命令窗口测试6、查找student表中所有的女生,并按姓名升序排列,写出语句,并在命令窗口测试7、查找student表中的在1992年出生的学生,并按年龄降序排列,写出语句,并在命令窗口测试8、查找student表中信息管理专业的学生,并按照姓名降序排列,写出语句,并在命令窗口测试9、把student表中的学生信息按性别分类显示,男生在前,女生在后,男生和女生,各自按照姓名升序排列,写出语句,并在命令窗口测试八、练习SQL查询语句——where条件查询count格式: select count(*) from 表名 where 条件1、统计student表中的学生总人数,写出语句,并在命令窗口测试2、统计student表中男生人数,写出语句,并在命令窗口测试3、统计student表中姓王的人数,写出语句,并在命令窗口测试。

强化-SQL语句强化训练(史上最全最经典,呕血推荐)sql语句练习

强化-SQL语句强化训练(史上最全最经典,呕血推荐)sql语句练习

强化-SQL语句强化训练(史上最全最经典,呕血推荐)sql语句练习2010/71. 有4个关系模式如下:出版社(出版社编号,出版社名称);图书(图书编号,书名,出版社编号,定价);作者(作者编号,姓名);著书(图书编号,作者编号,作者排序)注:作者排序=1表示第一作者,依此类推。

用SQL语句,完成第36~39题。

(1).检索所有定价超过20元的书名。

答案:SELECT书名(1分)FROM图书(1分)WHERE定价>20(2分)(2).统计每个出版社图书的平均定价。

答案:SELECT出版社编号,A VG(定价)(2分)FROM图书(1分)GROUP BY出版社编号(1分)(3).将科学出版社的所有图书定价下调5%。

答案:UPDATE图书SET定价=定价*0.95(1分)WHERE出版社编号IN(1分)(SELECT出版社编号FROM出版社(1分)WHERE出版社名称="科学")(1分)【说明】WHERE出版社名称LIKE"科学"也正确。

(4).列出所有图书的书名、第一作者姓名和出版社名称。

答案:SELECT书名,姓名,出版社名称(1分)FROM出版社A,图书B,作者C,著书D(1分)WHEREA.出版社编号=B.出版社编号ANDB.图书编号=D.图书编号(1分)ANDC.作者编号=D.作者编号AND作者排序=1。

(1分)S(SNO,SNAME,AGE,SEX,SDEPT)SC(SNO,CNO,GRADE)C(CNO,CNAME,CDEPT,TNAME)1.试用SQL的查询语句表达下列查询:①检索LIU老师所授课程的课程号和课程名。

②检索年龄大于23岁的男学生的学号和姓名。

③检索至少选修LIU老师所授课程中一门课程的女学生姓名。

④检索W ANG同学不学的课程的课程号。

⑤检索至少选修两门课程的学生学号。

⑥检索全部学生都选修的课程的课程号与课程名。

⑦检索选修课程包含LIU老师所授课程的学生学号。

专升本sql语句练习题

专升本sql语句练习题

专升本sql语句练习题专升本SQL语句练习题一、选择题1. 在SQL中,用于查询数据的命令是:A. SELECTB. UPDATEC. INSERT INTOD. DELETE2. 如果需要从数据库中删除表中的所有数据,应该使用以下哪个命令?A. DROP TABLEB. DELETE FROMC. REMOVED. CLEAR3. 在SQL查询中,用于对结果进行排序的关键字是:A. ORDER BYB. SORTC. ARRANGED. RANK4. 以下哪个语句可以添加新的列到已存在的表中?A. INSERT INTOB. ADD COLUMNC. MODIFYD. ALTER TABLE5. 在SQL中,用于更新表中数据的命令是:A. UPDATEB. MODIFYC. CHANGED. ALTER二、填空题6. 使用SQL语句查询表中所有记录时,可以使用________语句。

7. 当需要查询表中特定列的数据时,可以使用SELECT语句后跟列名,如:SELECT ________ FROM table_name。

8. 要删除表中的一条记录,可以使用DELETE FROM ________ WHERE condition。

9. 要向表中插入新的记录,可以使用________语句。

10. 要修改表中的数据,可以使用________语句,并指定条件。

三、简答题11. 请简述SQL中的JOIN语句的作用,并给出一个使用JOIN语句的示例。

12. 解释什么是子查询,并给出一个使用子查询的SQL查询语句的例子。

13. 描述如何使用GROUP BY和HAVING关键字进行数据分组和过滤分组结果。

四、操作题14. 假设有一个名为“Employees”的表,包含列:EmployeeID, FirstName, LastName, DepartmentID, Salary。

请编写SQL语句来:- 查询所有员工的姓名和部门ID。

(完整版)sql语句练习题及答案

(完整版)sql语句练习题及答案

一在数据库 school 中建立student , sc, course 表。

学生表、课程表、选课表属于数据库School ,其各自的数据结构如下:学生Student (Sno,Sname,Ssex,Sage,Sdept)课程表course(Cno,Cname,Cpno,Ccredit)学生选课SC(Sno,Cno,Grade)二设定主码1 Student表的主码:sno2 Course表的主码:cno3 Sc表的主码:sno,cno1写出使用 Create Table 语句创建表 student , sc, course 的SQL语句23 删除student表中的元组4在数据库school中删除关系student5在student表添加属性sbirthdate 类型datetimeDelete1 删除所有JSJ 系的男生delete from Student where Sdept=’JSJ’ and Ssex=’男’;2 删除“数据库原理”的课的选课纪录delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);Update1 修改0001 学生的系科为: JSJ2 把陈小明的年龄加1岁,性别改为女。

2 修改李文庆的1001课程的成绩为93 分3 把“数据库原理”课的成绩减去1分Select 查询语句一单表1查询年龄在19至21岁之间的女生的学号,姓名,年龄,按年龄从大到小排列。

2查询姓名中第2个字为“明”字的学生学号、性别。

3查询 1001课程没有成绩的学生学号、课程号4查询JSJ 、SX、WL 系的年龄大于25岁的学生学号,姓名,结果按系排列5按10分制查询学生的sno,cno,10分制成绩(1-10分为1 ,11-20分为2 ,30-39分为3,。

90-100为10)6查询 student 表中的学生共分布在那几个系中。

SQL 习题

SQL 习题

1、在SELECT语句中用_________关键字能消除重复行,用_________关键字返回前面一定数量的数据。

2、CAST函数和___________函数能将一个表达式从一种数据类型转换成另一种数据类型。

3、SQL语言虽然是结构化查询语言,但其实它的功能包括了___________、___________和_____________。

4、Primary Key约束的中文意思是___________约束,Foreign Key约束的中文意思是____________约束。

5、SQL Server 2000的事务处理控制语句有BEGIN TRAN、SAVE TRAN、_____________和______________。

6、在企业管理器更改某数据库的名称需要执行的系统存储过程名是____________。

7、在完全数据库备份、差异备份和日志备份三者中,还原速度最快的是____________;能将数据库还原到指定时间点的是____________;在还原中不可缺少的是____________。

8、在定义数据表时,定义某列为标识列的关键字是_______________。

9、在对表记录的插入操作中,Insert语句允许省略列清单,但这种格式需符合的前提条件是___________________________________________________。

10、某字段记录中的数据是NULL,表示该字段中的数据为_________________。

11、在使用触发器过程中,SQL Server使用到了两张特殊的临时表分别是__________和__________。

12、用__________________命令删除表的操作不进行日志的记录,可以提高删除表的速度。

13、一个表和其自身进行内连接称为____________________。

在进行这种联结查询时,必须对表____________________。

(完整版)sql练习题+答案

(完整版)sql练习题+答案

(一)新建以下几个表student(学生表):其中约束如下:(1)学号不能存在相同的(2)名字为非空(3)性别的值只能是'男'或'女'(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系(5)出生日期为日期格式(6)年龄为数值型,且在0~100 之间create table student (age smallint constraint d check ( age between 0cs(成绩表):其中约束如下:1)sno 和cno 分别参照student 和course 表中的sno,cno 的字段2)cj(成绩)只能在0~100之间,可以不输入值create table cs (sno smallint not null referencesstudent( sno ),- 定义成外键cno smallint not null referencescourse ( cno ), -定义成外键cj smallint constraint e check ( cj between 0 and100 ), 检查约束——cj( 成绩) 只能在~100 之间,可以不输入值constraint f primary key ( sno , cno ) ----- 定义学生学号和课程号为sc 表的主键)course 课程表)其约束如下:1)课程号( cno)不能有重复的2)课程名( cname)非空三)针对学生课程数据库查询(1)查询全体学生的学号与姓名。

(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。

(3)查询全体学生的详细记录。

select * from student(4)查全体学生的姓名及其出生年份。

select sname , birth from student(5)查询学校中有哪些系。

select distinct dept from student(6)查询选修了课程的学生学号。

MysqlSql语句练习题(50道)

MysqlSql语句练习题(50道)

MysqlSql语句练习题(50道)表名和字段–1.学⽣表Student(s_id,s_name,s_birth,s_sex) –学⽣编号,学⽣姓名, 出⽣年⽉,学⽣性别–2.课程表Course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号–3.教师表Teacher(t_id,t_name) –教师编号,教师姓名–4.成绩表Score(s_id,c_id,s_score) –学⽣编号,课程编号,分数测试数据--建表--学⽣表CREATE TABLE `Student`(`s_id` VARCHAR(20),`s_name` VARCHAR(20) NOT NULL DEFAULT '',`s_birth` VARCHAR(20) NOT NULL DEFAULT '',`s_sex` VARCHAR(10) NOT NULL DEFAULT '',PRIMARY KEY(`s_id`));--课程表CREATE TABLE `Course`(`c_id` VARCHAR(20),`c_name` VARCHAR(20) NOT NULL DEFAULT '',`t_id` VARCHAR(20) NOT NULL,PRIMARY KEY(`c_id`));--教师表CREATE TABLE `Teacher`(`t_id` VARCHAR(20),`t_name` VARCHAR(20) NOT NULL DEFAULT '',PRIMARY KEY(`t_id`));--成绩表CREATE TABLE `Score`(`s_id` VARCHAR(20),`c_id` VARCHAR(20),`s_score` INT(3),PRIMARY KEY(`s_id`,`c_id`));--插⼊学⽣表测试数据insert into Student values('01' , '赵雷' , '1990-01-01' , '男');insert into Student values('02' , '钱电' , '1990-12-21' , '男');insert into Student values('03' , '孙风' , '1990-05-20' , '男');insert into Student values('04' , '李云' , '1990-08-06' , '男');insert into Student values('05' , '周梅' , '1991-12-01' , '⼥');insert into Student values('06' , '吴兰' , '1992-03-01' , '⼥');insert into Student values('07' , '郑⽵' , '1989-07-01' , '⼥');insert into Student values('08' , '王菊' , '1990-01-20' , '⼥');--课程表测试数据insert into Course values('01' , '语⽂' , '02');insert into Course values('02' , '数学' , '01');insert into Course values('03' , '英语' , '03');--教师表测试数据insert into Teacher values('01' , '张三');insert into Teacher values('02' , '李四');insert into Teacher values('03' , '王五');--成绩表测试数据insert into Score values('01' , '01' , 80);insert into Score values('01' , '02' , 90);insert into Score values('01' , '03' , 99);insert into Score values('02' , '01' , 70);insert into Score values('02' , '02' , 60);insert into Score values('02' , '03' , 80);insert into Score values('03' , '01' , 80);insert into Score values('03' , '02' , 80);insert into Score values('03' , '03' , 80);insert into Score values('04' , '01' , 50);insert into Score values('04' , '02' , 30);insert into Score values('04' , '03' , 20);insert into Score values('05' , '01' , 76);insert into Score values('05' , '02' , 87);insert into Score values('06' , '01' , 31);insert into Score values('06' , '03' , 34);insert into Score values('07' , '02' , 89);insert into Score values('07' , '03' , 98);表数据如下student 学⽣表:s_id s_name s_birth s_sex01赵雷1990-01-01男02钱电1990-12-21男03孙凤1990-05-20男04李云1990-08-06男05周梅1991-12-12⼥06吴兰2017-12-13⼥07郑⽵1989-07-01⼥08王菊1990-01-20⼥09赵雷1990-01-21⼥10赵雷1990-01-22男score 分数表:s_id c_id s_score010180010290010399020170020260020380030180030280030380040150040230040320050176050387060131060334070389070198course 课程表c_id c_name t_id01语⽂0202数学0103英语03teacher ⽼师表:t_id t_name01张三02李四03王五-- 准备条件,去掉 sql_mode 的 ONLY_FULL_GROUP_BY 否则此种情况下会报错:-- Expression #1 of select list is not in group by clause and contains nonaggregated column 'userinfo.-- 原因:-- MySQL 5.7.5和up实现了对功能依赖的检测。

简单的SQL语句练习大全

简单的SQL语句练习大全

简单的SQL语句练习大全一:本题用到下面三个关系表:CARD借书卡。

CNO 卡号,NAME姓名,CLASS 班级BOOKS图书。

BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY库存册数BORROW借书记录。

CNO 借书卡号,BNO 书号,RDA TE 还书日期备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。

要求实现如下15个处理:1.写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。

//表名borrow2.找出借书超过5本的读者,输出借书卡号及所借图书册数。

3.查询借阅了"水浒"一书的读者,输出姓名及班级。

4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。

5.查询书名包括"网络"关键词的图书,输出书号、书名、作者。

6.查询现有图书中价格最高的图书,输出书名及作者。

7.查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。

8.将"C01"班同学所借图书的还期都延长一周。

9.从BOOKS表中删除当前无人借阅的图书记录。

10.如果经常按书名查询图书信息,请建立合适的索引。

11.在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SA VE表中(注ORROW_SA VE表结构同BORROW表)。

12.建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)。

13.查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出。

14.假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句。

标准SQL练习

标准SQL练习

题目一:在SQL Server上,创建如下各表, 相应语句以及必要的结果放入.doc文档中:1.创建两个表mutual_ref_tb1, mutual_ref_tb2,它们互相参照。

create table mutual_ref_tb1(E# int,ENAME CHAR(8),primary key(E#))create table mutual_ref_tb2(D# int,DNAME CHAR(5),MGR INT,PRIMARY KEY(D#),FOREIGN KEY(MGR)REFERENCES mutual_ref_tb1(E#))ALTER TABLE mutual_ref_tb1 add D# INT REFERENCES mutual_ref_tb2(D#)2.创建表self_ref_tb,该表包括一个外码,参照自身的主码。

create table self_ref_tb(ref1 int,ref2 int,primary key(ref1),foreign key(ref2)references self_ref_tb(ref1))3.创建表data_type_tb,包括定长和变长字符串,两个bit类型,各种整数类型,时间和日期类型;用sp_addtype添加一个用户数据类型,并用它定义属性数据类型。

create table data_type_tb(data1 int,data2 smallint,data3 tinyint,data4 bigint,data5 bit,data6 char(5),data7 varchar(5),data8 binary(10),data9 varbinary(10),data10 datetime,data11 smalldatetime)Exec sp_addtype dataextra,'Varchar(11)','Not Null'alter table data_type_tb add data12 dataextra4.创建表cons_tb,包括default, unique, not null, check约束。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

规范化习题
1、涉及到学生、教师和课程关系模式STC(SNO,SN,SA,TN,CN,G),其中6个属性分别为学生
的学号、姓名、年龄、教师的姓名、课程名以及学生的成绩。

假设学生有重名,课程名也可能有重名。

又假设教师无重名,且每个教师只教一门课程,但一门课程可有几个教师同时开设。

某个学生选定某门课后,其上课教师就固定了。

要求:
(1)写出键码和函数依赖
(2)分解关系模式使之属于BC范式
(3)判断上述分解是否是无损连接分解
2、有关系模式:Student(学号,姓名,所在系,班号,班主任,系主任),其语义为:一个
学生只在一个系的一个班学习,一个系只有一个系主任,一个班只有一名班主任。

指出此关系模式的候选码。

判断此关系模式是第几范式,若不是三范式,将其规范为三范式。

3、假设某商业集团数据库中有关系模式如下:
R(商店编号,商品编号,商品库存数量,部门编号,负责人)
如果规定:
每个商店的每中商品只在该商店的一个部门中销售。

每个商店的每个部门只有一位负责人。

每个商店的每种商品只有一个库存数量。

试回答下列问题:
(1)根据上述规定,写出关系模式R的基本函数依赖。

(2)找出关系模式R的候选码。

(3)试问关系模式R最高已经达到第几范式,为什么?
(4)如果关系模式不属于3NF,试将R分解成3NF。

(5)判断上述分解是否是无损连接分解
4、假设我们有关系模式:管理(仓库号,设备号,职工号),它所包含的语义是:一个仓
库可以有多个职工;一名职工仅在一个仓库工作;在每个仓库一种设备仅由一名职工保管,但每名职工可以保管多种设备。

请根据语义写出函数依赖,求出候选码。

判断此关系模式是否属于3NF,是否属于BC范式。

5、假设你有一个名为TRANSACTION的关系模式如下,用來记载读者买书的交易:
TRANSACTION (isbn, title, publisherId, publisherName, readerId, name, dateTime, unitPrice,
number)
函数依赖如下:
isbn →{ title, publisherId }
publisherId →{ publisherName }
readerId→ name
{ isbn, readerId, dateTime }→{unitPrice, number}
(1)请问关系的候选码为?
(2)请分解满足2NF的关系模式
(3)请分解满足3NF的关系模式
6、已知R<U,F>U={A,B,C,D,E,F},F={AB->C, C->D, D->E,D-> F}
(1)请找出R的候选关键码。

(2)判断此关系属于第几范式,将R分解成3NF。

(3)将R分解成BC范式
7、已知关系模式R中,U={A,B,C,D, E, G},
F={AB→C, C→A, BC→D, ACD→B, D→EG, BE→C, CG→BD, CE→AG},
求(BD)+,判断BD→AC是否属于F+,并判断BD是否为候选码
8、已知关系模式R中
U={A,B,C,E, H, P, G},
F={AC→PE, PG→A, B→CE, A→P, GA→B,GC→A, PAB→G, AE→GB, ABCP→H},证明BG→HE属于F+
1。

相关文档
最新文档