数据库SQL语言习题求助!

数据库SQL语言习题求助!,第1张

1select

ssno,ssname

from

s,c,sc

where

ssno=scsno

and

ccno=sccno

and

ccname="MS"

2select

ssno

from

s,sc

where

ssno=scsno

and

sccno="c1"

or

ssno=scsno

and

sccno="c2"

group

by

ssno

3select

ssno,scgrade

from

s,c,sc

where

ssno=scsno

and

ccno=sccno

and

ccname=" *** 作系统"

or

ccname="数据库课程"

4select

ssno,ssname,sage

from

s

where

ssex="女"

and

sage

>=18

and

sage

<=

20

5select

ssno,ssname,scgrade

from

s,c,sc

where

ssno=scsno

and

ccno=sccno

and

cteacher="刘平"

6select

ssname,sage,sSD

from

s

where

ssname="李%"

7select

ssname,sage,sSD,count()

as

统计

from

s,sc

where

ssno=scsno

and

统计

>3

group

by

ssno

打那么多不容易再追加点分吧

一、质量保证控制体系

在数据库建设过程中,各工作单位和计划项目综合组均制定了相应的质量保证体系和措施,从资料的来源、整理录入、检查汇总层层严格控制。质量保证控制体系内容包括:质量保证组织体系和质量保证制度体系,组织体系和制度体系又由承担单位和计划单位综合项目组两套体系组成。承担单位按照本单位全面质量管理制度和办法建立了以全面质量管理办公室、项目组和工作组为核心的质量保证组织体系以及完整的质量管理制度体系。以计划单位为核心的综合项目组的质量保证组织体系是由计划项目负责人、工作项目负责人和工作组构成。建立了三级质量检查监控体系:一是数据库工作人员的自检和互检;二是承担单位项目组组织的质量抽检;三是计划项目综合组组织的阶段性质量抽检和验收。在各级检查过程中,对发现的问题都做了详细的记录,并进行了认真修改,保证了录入资料的准确性。

二、质量保证措施

(一)属性数据的质量保证措施

属性数据就是要真实地反映原始资料,质量保证措施最主要的就是质量检查、核对,形成录入→检查→修改→补充→汇总五个步骤的工作流程。每一项内容录入完成以后,录入人员必须将录入数据与原始数据进行校对,自检率为100%,发现问题及时解决之后,再开始下一项数据的录入。工作每告一段落,要进行互检,互检率也是100%;同时承担单位项目组进行质量抽检,抽检率为30%~50%;计划项目综合组的阶段性质量抽检和验收,抽检率为20%~30%。数据库工作人员平时工作有记录,每次检查有记载,发现的问题修改情况也有记录,做到出问题有据可查,责任有人承担,确保数据录入的准确和可靠。同时,还制定了安全防范措施,即防计算机病毒破坏、防数据库数据误删除、防蓄意破坏。

(二)图形数据的质量保证措施

1地理底图质量保证措施

本次使用的数字地理底图是国家测绘局1∶25万地理要素图,利用Map GIS的裁剪功能以松嫩平原界线为范围边界裁剪而成,图层要素有外图廓、经纬网、境界线、水系、公路、铁路、等高线、高程点等,并依据2005年11月中国地质调查局颁发的《1∶25万地理底图编辑要求》和水环所提供的图库进行了修编。原地理底图自带图库与水环所提供的图库有很大差别,都按图层及图元参数一一替换图案号及更改参数,保证了更换图库前后地理底图所示内容的一致性。

2成果图件数字化质量保证措施

成果图件均由编图人员在喷绘的地理底图上绘制,然后采用300 dpi以上的分辨率进行扫描,提高了栅格文件的清晰度,减小了误差;制图人员利用Map GIS将图像配准到已矢量、修编好的地理底图上,所有经纬网交叉点都作为控制点采集对象,保证了图像配准的精度;矢量过程中窗口放大到40倍,鼠标跟踪输入;各类成果图件中松嫩平原边界在空间上严格重合,在面元建立拓扑时,不能作结点平差,分区线元与边界相交处分区线元用延长靠近母线、母线加点功能,在此基础上建立拓扑关系形成面元,保证了公共边界线元空间拓扑的一致性;对不同成果图件有相同要素的,要将其单独提取图层,根据图件要求予以增加,保证了不同图件中相同内容的一致性。通过上述工作方法,使图件数字化质量得到有效的控制。

矢量化后,喷出彩图检查图元信息,图元信息检查是保证图形数据质量的关键,这项检查工作以自检为主,检查都在两遍以上。图形属性数据通过MAPGIS属性管理系统输入完成,其属性字段按照《地下水资源调查评价数据库标准》要求填写。

3提高数据库工作人员的质量意识

人是保证质量的主动因素,提高数据库工作人员的质量意识是保证数据库质量的重要措施,因此在数据库建设过程中,无论是承担单位,还是综合项目综合组都开展了提高质量意识的重要性教育,使每一个工作人员在思想上重视数据库质量,在行动上保证数据库质量。

试验通过了。一点问题都没有。不过请您要多加点分喽

表名是AA,您可以改成自己的表名

select numnew,reynew,name,moneynew from (select distinct num,rey,name,money from aa) b left join

(

select numnew=num,reynew=rey,moneynew=min(money)/count(1) from (

select distinct num,rey,name,money from aa) a group by num,rey

) c on numnew=num and reynew=rey

一 ORACLE基本系统的安装 .创建一个数据库专用的用户组(dba)和用户名(Oracle)# scoadmin ) Accaunt Manager Groupe Add new Group Group Name : 输入dba quit ) Account Manager Users Add New userLogin : oracle(数据库用户名 可自定) Home Directon :把光标移到(change Home Direction ]回车 把Home Direction 改为/u/oracle(根据分区时所设) Login Group : 光标移到(change Group Membership ] 回车 把Login Group : 改为dba 在Set Password : 下选 Remove password(以后再设口令) .修改内核参数 为Oracle 作准备 #scoadmin Hardware / kernel Manager在Kernel界面下 选Tune parameters选择 项Semaphores在SEMMAP 输入 在SEMMNI 输入 余下全取缺省值 选择 项shutdown Data在SHMMAX 输入 余下全取缺省值 直至返回Kerel界面选择Relinking kernel 有Y/N选择 均选Y回车继续 .修改rootpre sh文件(oracle安装环境文件) )放入oracle安装光盘 ) 驱动光驱#mkdir cdrom(只须建立一次)#mount fHS defuid=root /dev/ cd /cdrom )拷文件#cd /u/oracle #cp /cdrom/orainst/rootpre sh (注意最后加点) )修改#vi rootpye sh输入/new(查找字符串 new )移动上下光标 用dd整行删除该处的if fi之间的所有代码输入 x(存盘退出) )执行# /rootpre_sh (按回车) 第一个N(不安装图标)第二次选Y输入oracle (用户) 输入dba(组)第三次选Y第四次选N(不从软盘安装) .修改用户工作环境配置文件profile以oracle 登录(按<Alt>+<F >) $vi profile (注意profile前加点) <Shift>+G(移动光标到文件末) 输入O 然后在输入以下内容 (注意大小写)ORACLE HOME=/u/oracle/app/oracle/product/ (回车)PATH=$PATH: $HOME/bin: $ORACLE HOME/bin: ORACLE SID=oracle ORACLE TERM=ansiTK DEV=ansiLINES= ULIMIT= NLS_LANG= AMERICAN AMERICA ZHS CGB MAIL=/usr/spool/mail/ logname export PATH MAIL ORACLE_HOME ORACLE__TERM ORACLE SID TK DEV NLS LANG ULIMIT DEVDIRstty ctsflow rtsflow: <ESC> x (存盘退出) 注 export 后面所接的两行 中间不能有回车键#shutdown y g (安全关机方式) .开始安装Oracle 以root登录 驱动光驱#mount fHS defuid=root /dev/ cd /cdrom 以oracle用户登录 $ cd /cdrom/orainst (回车) $ /orainsr (执行安装命令)选择Custom install (回车) (回车) 输入/u/oracle 选yes 在pre _installtion os preparation下选择 yes 在NLS下选Simplified Chinese在Relink All Executables下选yes ok选择安装组件 ) Oracle Distributed Databas ) Oralce parallel Query opti ) Oracle Server (RDBMS) ) PL/SQL V ) Proc ) SQLNet (V ) ) SQLPlus ) TCP/IP Protolol AdapaInstall (所选组件占容量 M);在 OS OPER Group下 取缺省值 : dbs (缺省值 否则增加用户出错) 在Create DB Object(F/S) Mount Point : 输入/u/oracle 三次;在character set表中选择(others);在character set输入ZHS CGB ;在System Password中输入manager(小写) 输入四次 在dba password中选择no 在 Configure MTS 下 选择no yes ok ok;在Default DB中选择no ok;在system Data File Size中输入 M ok 在Redo Log file Size中输入 M ok (重复三次 共有三个Redo Log ) 在 Rollback Segment File Size : M 在 Temporary Segment File Size : M 在user Date File Size中输入( M ) 其余回车取缺省值 注 以上表空间的容量设置 可根据硬盘容量的大小适当改动 在Default DB中选择yes OK OK 当正在拷贝时 !!!切换到另一界面(<Alt>+<F >) 用oracle登录 $ cd $ORACLE_HOME/lib $cp /usr/lib/libsocket a (注意加点)$cp /usr/lib/libnsl_s a (注意加点)( 这两个文件是安装开发系统时生成)切换回安装界面(<Alt>+<F >) 等待继续安装完毕 .执行root sh(设置合法的权限和环境) # cd /u/oracle/app/oracle/product/ /orainst # /root sh 输入Y(回车) 输入Y(回车) .修改oratab(产品认可) cd /etc vi oratab Oracle :/u/oracle/app/oracle/product/ :N 把N改为Y(大写) 存盘退出 .修改$vi initoracle ora(Oracle 启动参数) 以oracle 登录 切换到oracle用户<Alt>+<F > $cd $ORACLE_HOOME (回车) $cd dbs$vi initoracle ora在文件末增加两行 job_queue_processes= (回车)job_queue_interval= 存盘退出 至此安装完毕 切换到root用户<Alt>+<F >关闭系统#shutdown y g .试用用oracle登录 $ dbstart (启动 oracle数据库) $ sqlplus system/manager(登录数据库) 出现SQL>提示符 表示真正安装成功 二 网卡的安装 .如果有软盘驱动程序 启动custom安装 注意 custom 中 from : media image 指扩展名为 的文件 如 文件名为 VOL .如果没有软盘驱动程序 启动netconfig安装 Hardware / Addnew LAN Adapter选择网卡类型增加TCP/IP 协议IP暂时用 .测试(需重新启动)a) Ping 自己的IPb) Ping其它主机IP注意HUB与网卡速度的匹配 TUTO TP 三 附加设置 .修改SCO UNIX启动的参数 在/etc/default/boot中增加 nnect=no(禁止BIOS APM firmware的提示信息出现)timeout= (系统启动自动进入多用户方式) .设置dbstart在系统启动时自动启动 在/etc/rc中增加 su oracle c /u/oracle/app/oracle/product/ /bin/dbstart 服务器数据库及应用程序配置 (一) 服务器文件配置 . 在/etc/scrvices文件末尾添Isnrctl ftp/ . 把dbopen dbclose两个文件拷贝到/u/oracle/app/oracle/product/ /bin目录下 . 把boot文件拷贝到/etc/default目录下 . 在/etc/rc中加入以下两行 su oracle c $ORACLE_HOME/bin/dbstart su oracle c $ORACLE_HOME/bin/lsnrctl start . 将$ORACLE_HOME/neork/admin的Listener ora中的对应语句按如下修改 Host=localhostOracle home=/u/oracle/app/oracle/product/ SID_NAME=oracle 将$ORACLE_HOME/neork/admin的tnsnames ora中的对应语句按如下修改 Host=loealhost (二)服务器数据库配置(以oracle登录) . sqlpus system/manager . 建立表空间a)create tablespace mydabtab datafile /u/oracle/oradata/oracle /mydabtab dbf size M online;b)mit; . 建立数据库用户a) create user mydab identified by mydab default tablespace mydabtab;b)grant mect dba create database link to mydab;c)mit;d)conn mydab/mydab;e)quit; . 建立库结构a) 拷贝mydabdat dmp到/u/oracle b)imp mydab/mydab file=mydabdat dmp full=y ignore=y 说明 安装程序适用于UNIX ORACLE lishixinzhi/Article/program/SQLServer/201311/22016

看看我以前做过的经典例题

student(sno,sname,sex,age,deptno) --学生

department(dno,dname) --系院表

teacher(tno,tname) --教师表

course(cno,cname,teachno) --课程表

score(id,stuno,corsno,score) --成绩表

--一检索学习jsp这门课程的学生,列出学生的名字

select studentsname

from student

where sno in(select stuno from score where corsno =(select cno from course where cname='jsp'))

go

select studentsno

from student inner join score on studentsno=scorestuno

inner join course on corsno=coursecno

where coursecname='jsp'

select sname

from student

where sno in(select scorestuno

from score inner join course on scorecorsno=coursecno where coursecname='jsp')

--二检索java课程有多少学生学习

select COUNT(stuno) as 'JAVA学习人数'

from score

where corsno =(select cno from course where cname='java')

--三检索各科课程各有多少学生学习,

select coursecname,COUNT(scorestuno) as '学习人数'

from score inner join course on scorecorsno=coursecno

group by coursecname

--四检索学习了jsp和servlet两门课程的学生有多少

select COUNT(sno) as 'jsp和servlet课程的学生人数'

from student

where sno in(select scorestuno

from score inner join course on scorecorsno=coursecno

where coursecname='jsp') and

sno in(select scorestuno

from score inner join course on scorecorsno=coursecno

where coursecname='jsp')

--五检索学习了超过两门课程的学生有多少

select corsno,COUNT(stuno) as '学习超过两门课程的学生人数'

from score

group by corsno having COUNT(stuno)>2 order by corsno

--六检索重来没有学生学习过的课程,课程的名字

select cname

from course

where cno not in(select corsno from score )

--七检索老师A有多少学生

select COUNT(stuno) as '张老师的学生人数'

from score

where corsno in(select coursecno

from course inner join teacher on courseteachno=teachertno

where teachertname='张华' )

--九检索一共有多少老师,每一个老师所授课程是什么

select teachertno,coursecname

from course join teacher on courseteachno=teachertno

group by teachertno,coursecname

--十检索每个老师有多少个学生

select teachertno,teachertname ,COUNT(scorestuno) as '学生人数'

from teacher inner join course on teachertno=coursecno

inner join score on coursecno=scorecorsno

group by teachertno,teachertname order by teachertno

--十一检索授课超过两门的老师

select teachertno,COUNT(coursecno) as '授课超过两门的老师'

from teacher inner join course on teachertno=courseteachno

group by teachertno having(COUNT(coursecno)>2) order by teachertno

--十三检索A老师所授课程被学生全部学习的学生的名字

select sname

from student

where sno (select stuno from score inner join )

--查询选修人数超过人的课程的名字,以及每门课的选课总人数,并将结果按照人数的升序排序

select teachertno,COUNT(scorestuno) as '选课总人数'

from teacher inner join course on teachertno=courseteachno

inner join score on coursecno=scorecorsno

group by teachertno having(COUNT(scorestuno)>350) order by count(scorestuno) asc

--查询每门课的成绩都比这门课的其他同学高的学生的学号

select stuno

from score

where

group by corsno

--查询每个同学的学号和姓名以及这个同学成绩为优秀的课程的门数。

select studentsno,studentsname,max(scorescore)

from student inner join score on studentsno=scorestuno

group by studentsno,studentsname

--查询其他系的同学的年龄比‘软件工程系’的某个学生的年龄小的学生的学号,姓名和系别

--查询每个系中年龄高于这个系的平均年龄的学生的学号和姓名、年龄

select sno,sname,age

from student

group by deptno,sno,sname,age having(age>AVG(age))

--查询没有选课的学生的学号和姓名

select sno,sname

from student

where sno not in(select sno from score)

go

--查询每个同学成绩高于自己选修课程的平均分的学生的学号和选修课程的课号

select stuno,corsno

from score

group by stuno,corsno,score having(score>AVG(score))

--查询每个学生以及选修课程的情况(要求使用做外连接)

select studentsno,studentsname,coursecname

from student inner join score on studentsno=scorestuno

left outer join course on scorecorsno=coursecno

order by studentsno

go

--自己举例实现带有ANY和ALL谓词的例子,各举一个例子

--查询其他系中比天文系所有学生年龄都小的学生姓名及年龄。

select sname,age,deptno

from student

where age<any(select studentage

from student inner join department on studentdeptno=departmentdno

where departmentdname='天文系') and

deptno <>(select dno from department where dname='天文系')

go

--查询全体学生的信息,查询结果按所在系的系名升序排列,同一系的学生按年龄降序排列。

select studentsno,studentsname,departmentdname,studentsex,studentage

from student,department

where studentdeptno = departmentdno

order by departmentdname ASC,studentage DESC

go

--查询选修课门数等于或大于门的学生的平均成绩和选课门数。

select stuno,convert(numeric(8,2),AVG(score)) as '平均成绩',COUNT(corsno) as '选课门数'

from score

group by stuno having(COUNT(corsno)>2) order by stuno

go

--查询计算机系修数据结构课程的学生的修课成绩,要求列出学生姓名、课程名和成绩。

select studentsname,coursecname,scorescore

from student inner join score on studentsno=scorestuno

inner join course on scorecorsno=coursecno

where coursecname='c199' order by studentsname

go

--查询学生的选课状况,包括选了课程的学生和没有选课的学生。

select studentsname,count(scorecorsno) as '选课状况'

from student left join score on studentsno=scorestuno

group by studentsname

go

--查询选修了“C06”课程,且成绩高于此课程平均成绩的学生学号和成绩。

select stuno,corsno,score

from score

where corsno=(select cno from course where cname='c100') and

score >

--删除计算机系所有不及格学生的选课记录。

select id,stuno,corsno,score

from score

where score<10

go

--创建计算机系学生的选课视图view001,包括学生号、姓名、性别、年龄、系、课程号、课程名及选课成绩。

create view viewScore

as

select studentsno,studentsname,studentsex,studentage,departmentdname,coursecno,coursecname,scorescore

from student,department,score,course

where studentdeptno = departmentdno and studentsno=scorestuno and scorecorsno = coursecno order by studentsno

go

--在学生表的年龄列上建立一索引,索引名字为ix_age。

create index ix_age on student(age)

go

专家的写法是对的,我给你改改,加点解释

假如你的表叫t_table,你给出数的那列的字段名字叫id

select [ID],identity(int,1,1) as rowid into #t_table1 from t_table

就是给你的记录按原顺序给加上顺序号(记录号),从1开始的。这列顺序号(记录号)的名字就叫rowid,插入到一个临时表中,这个临时表就是#t_table1

你执行下面这条语句就得到结果了:

select top 1

((select min(rowid) from #t_table1 where [ID]=t[ID] and rowid>trowid)-rowid) as row

from #t_table1 t where [ID]=1

order by row desc

其中

(select min(rowid) from t_table where [ID]=t[ID] and rowid>trowid) 这部分是求到离当前纪录往后id是一样的,而且最近的记录的记录号

然后减去当前记录号就得到两条ID相同的,最近的记录号之差,如果你只要两条记录中间有多少条记录就把

((select min(rowid) from t_table where [ID]=t[ID] and rowid>trowid)-rowid)部分再减个1,就是:

((select min(rowid) from t_table where [ID]=t[ID] and rowid>trowid)-rowid)-1

isnull(min(rowid),0)是为了一个id的记录到了最后就没有记录号比它更大了,min(rowid)就会是空,用空去减一个数就还是空,他可能考虑到可能会出错所以用isnull()函数来替换成了0,其实没必要。

order by row desc 降序排列,top 1就得到最大的那个了。

专家的想法是正确的,只是写得太随意了,比如ID肯定要用[ID]才可以

建议啊:网上的答案只有参考价值,你直接拷过去就用就想得到你要的答案是不对的,自己怎么都要改改。希望对你有帮助。。。

以上就是关于数据库SQL语言习题求助!全部的内容,包括:数据库SQL语言习题求助!、数据库的质量控制、关于SQL查询的一个问题,哭求!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9876166.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存