SQL题在线等速度dnf在线半小时领番薯

高手请进!帮我做一下SQL server的题!在线等-学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
高手请进!帮我做一下SQL server的题!在线等
来源:互联网 发表时间: 17:06:12 责任编辑:王亮字体:
为了帮助网友解决“高手请进!帮我做一下SQL server的题!在线等”相关的问题,学网通过互联网对“高手请进!帮我做一下SQL server的题!在线等”相关的解决方案进行了整理,用户详细问题包括:
1.现有关系数据库如下:
学生(学号,姓名,性别,专业,奖学金),课程(课程号,名称,学分),学习(学号,课程号,分数)
用关系代数表达式实现下列要求:
(1) 检索“英语”专业学生所学课程的信息,包括学号、姓名、课程名和分数;
(2) 检索“数据库...
包括学号;用SQL语言实现下列要求1,包括学号,专业,性别;(4) 检索没有任何一门课程成绩不及格的所有学生的信息,姓名SN,包括SNo,包括课程好CNo;从学生选课关系SC中.现有关系数据库如下、姓名:(5) 检索不学课程号为“C135”课程的学生信息,任课教室TN.用SQL的有关语句定义(1) 学生关系S,CNo和成绩G、课程名和分数;删除学号为的学生的所有有关数据,学习(学号,姓名和专业.结合上题的数据库:说明主键码和外键码,课程(课程号;在学生关系S的主码属性上建立索引;(3) 学生选课关系SC:学生(学号,名称;(2) 检索“数据库原理”课程成绩高于90分的所有学生的学号;(3) 检索不学课程号为“C135”课程的学生信息。3,姓名,奖学金),课程名CN,授予学生林凌查询查询权限以及对SNo和CNo的插入权限、专业和分数;(6) 检索至少学过课程号为“C135”和“C219”的学生信息,系列SD,学分),删除孙小林(学生关系中可能有重名)的所有选课。2,课程号:(1) 检索“英语”专业学生所学课程的信息,包括学号,包括学号,家庭电话TEL、姓名和专业,分数)用关系代数表达式实现下列要求,包括学号,姓名和专业、姓名、姓名和专业,包括SNo。注意;(2) 课程关系C、用SQL的有关语句实现对于学生选课SC
,具体解决方案如下:解决方案1:2(1)create table S(SNo char(9) primary key,学习where 学生, SD ch(20).学号=学习;;C135&#39,insert(SNo;孙小林&#39,专业from 学生.学号 AND 课程号&lt关系代数式因为符号比较特殊 还有下标 这上面不好打 就先解决以下问题了 希望对你有帮助(5)select 学生,CNo)on table SCto 林凌;intersectselect 学生.学号,专业from 学生, froeign key (CNo) references C(CNo));(3)create table SC(SNo char(9),姓名, TN char(5)),姓名.学号 AND 课程号=&#39, primary key (SNo;create unique index Ssno on S(SNo),CNo);(2)create table C(CNo char(4)3.学号 AND 课程号=''C219'deletefrom SCwhere SNo in (select SNo from S where SN='(6)select 学生.学号=学习;&;,学习where 学生, G SMALLINT,学习where 学生, SN char(10), CN char(20).学号;delete from Swhere SNo='),姓名;, froeign key (SNo) references S(SNo)C135&#39, CNo char(4).学号, TEL char(10)).学号=学习,专业from 学生.grant select
1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 学网 版权所有
京ICP备号-1 京公网安备02号SQL文的效率有关问题(在线急等) - Oracle开发当前位置:& &&&SQL文的效率有关问题(在线急等)SQL文的效率有关问题(在线急等)&&网友分享于:&&浏览:8次SQL文的效率问题(在线急等)有下边两个sql文,在数据量比较大的时候,哪个效率更高一点
& select & a.id, & a.code, & a.name, & b.addr, & b.price, & c.com, & c.count
& from & a & , & b, & c
& where & a.id & = &
'1234 '
& and & a.code & = &
'1000 '
& and & a.id= & b.id
& and & a.code & = & b.code
& and & a.id & = & c.id
& and & a.code & = & c.code
& select & a.id, & a.code, & a.name, & b.addr, & b.price, & c.com, & c.count
& (select & id,code,name & from & a & where & a.id= '1234 ' & and & a.code= &
'1000 ') & a, &
& where & a.id= & b.id
& and & a.code & = & b.code
& and & a.id & = & c.id
& and & a.code & = & c.code ------解决方案--------------------2
------解决方案--------------------选择最有效率的表名顺序(只在基于规则的优化器中有效)
ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们.首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二个表),最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并.
表 TAB1 16,384 条记录
表 TAB2 1 条记录
选择TAB2作为基础表 (最好的方法)
select count(*) from tab1,tab2 执行时间0.96秒
选择TAB2作为基础表 (不佳的方法)
select count(*) from tab2,tab1 执行时间26.09秒
如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.
EMP表描述了LOCATION表和CATEGORY表的交集.
FROM LOCATION L ,
CATEGORY C,
WHERE E.EMP_NO BETWEEN 1000 AND 2000
AND E.CAT_NO = C.CAT_NO
AND E.LOCN = L.LOCN
将比下列SQL更有效率
FROM EMP E ,
LOCATION L ,
CATEGORY C
WHERE E.CAT_NO = C.CAT_NO
AND E.LOCN = L.LOCN
AND E.EMP_NO BETWEEN 1000 AND 2000
5. WHERE子句中的连接顺序.
ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
(低效,执行时间156.3秒)
FROM EMP E
WHERE SAL &
AND JOB = ‘MANAGER '
& (SELECT COUNT(*) FROM EMP
WHERE MGR=E.EMPNO);
(高效,执行时间10.6秒)
FROM EMP E
& (SELECT COUNT(*) FROM EMP
WHERE MGR=E.EMPNO)
AND JOB = ‘MANAGER ';
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有【MS-SQL Server论坛问题】(53)
最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。
所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。
如何解决用户在线登陆时间——的小时和分钟计算问题。
我想得到用户在线时长,格式是:08:00和08:43这种格式的在线时长结果。
我自己尝试查了sql的文档,也百度了很多。但是没有这方面的应用。
我自己也尝试写了很多但是不行。
我只能得到在线的总分钟数,或者总秒数。无法弄成想要的格式。
这是我的代码:
select ta.[user],(DATEDIFF(mi,ta.time,tb.time)) from&
(select * from T1 where T1.operate='Login') as ta
inner join&
(select * from T1 where T1.operate='Logout') as tb
on ta.[user]=tb.[user]
------------------------------------
或者这样写:
select ta.[user], cast(datediff(hour, ta.time, tb.time) as varchar) + ':' + cast(DATEDIFF(MINUTE, ta.time, tb.time) as varchar)
(select [user], [time] from T1 where [operate] = 'login') as ta
inner join
(select [user], [time] from T1 where [operate] = 'logout') as tb
on ta.[user] = tb.[user];
两种写法都无法实现想要的结果。请求大神指导下,帮忙给出一种解决方法。
我测试完,发效果图。
我的解法:
drop table t1
create table T1
[user] varchar(30),
operate varchar(10),
time datetime
insert into T1
select 'LiMing','Login',' 8:03' union all
select 'WangYi','Login',' 8:14' union all
select 'WangYi','Logout',' 16:14' union all
select 'LiMing','Logout',' 16:14'
select [user],
cast(cast(round(interval * 1.0 / 60,0,1) as int) as varchar) + ':' +
case when interval * 1.0 % 60 && 0
then cast(cast(round(interval * 1.0 % 60,0,1) as int) as varchar)
else '00'
select T1.[user],
DATEDIFF(MINUTE,t1.time,t2.time)
as interval
inner join T1 t2
on t1.[user] = t2.[user]
and t1.operate = 'login'
and t2.operate = 'logout'
user (无列名)
LiMing 8:11
WangYi 8:00
select [user],
convert(varchar(5),DATEADD(MINUTE,interval,time),114)
select T1.[user],
convert(varchar(10),t1.time,120) as time,
DATEDIFF(MINUTE,t1.time,t2.time)
as interval
inner join T1 t2
on t1.[user] = t2.[user]
and t1.operate = 'login'
and t2.operate = 'logout'
user (无列名)
LiMing 08:11
WangYi 08:00
最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。
所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:285043次
积分:5789
积分:5789
排名:第3654名
原创:297篇
转载:10篇
评论:107条
阅读:13943
(6)(7)(32)(26)(6)(9)(2)(3)(6)(2)(9)(5)(1)(34)(2)(2)(1)(2)(1)(2)(1)(3)(1)(20)(3)(11)(4)(13)(18)(6)(5)(2)(1)(2)(5)(2)(6)(6)(18)(9)(3)(1)(1)(1)(1)(5)(8)}

我要回帖

更多关于 sql每半小时统计一次 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信