1. sql语句分析。(名牌大学考试题)
首先要说,这些语法都是基于SQLSERVER数据库的语法,DATEDIFF TOP等,在ORACLE等其他数据库是没有的。
1. 主要是datediff函数的用法,获取两个日期之间的时间差,可以得到年月日小时分秒等等,可以参看这个函数的说明。
这里第一个参数表示获取时间差的类型,minute表示获取两个日期的时间差是分钟。
第二个参数是起始时间,第二个是截止时间,都是datetime类型。
getdate(),获取当前时间的函数。
我觉得你这个语句写的有问题。第一,参数minute,不需要使用单引号,如果使用了单引号,参数就错误了,因为datediff第一个参数不是字符型的。
第二,datediff的函数第二个日期是开始时间,第二个是结束时间,你这个正好反了。
SQL: select * from 日程安排 where datediff(minute,f开始时间,getdate())>5
这个的意思是当前时间已经超过了开始时间5分钟的,会显示出来,而不是提前5分钟提醒。
提前五分钟提醒:SQL: select * from 日程安排 where datediff(minute,getdate(), f开始时间) < 5
距离当前时间小于5分钟的记录,才是提前5分钟提醒。
2.
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段= a.主键字段 order by a.排序字段
先看from括号内的语句:select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc,按照排序字段降序排列取出前20行数据。
然后再整体看,把表和这个20行数据关联,那么能取到的最大范围也就是这20行了。
然后取出前10行,我不知道这个为什么叫做分页查询,因为根本没有每页多少行以及第几页的参数在。这个语句就是按照排序字段倒叙排列的前20行,然后在按照排序字段正序排列从这前20行中取出前10行。实际上就是取出了按照排序字段倒叙排列的第11-20行的数据并正序排列。
3.内连接:实际上就是两表直接连接,取出连接成立的所有数据。语法使用Inner join
距离:有学生表:student : student_id , student_name
001 张三
002 李四
003 王五
成绩表: score : course_id student_id score
课程1 001 85
课程2 001 85
课程1 002 80
课程2 002 90
查询学生选课成绩,显示 student_name, course_id, score
select a.student_name, b.course_id, b.score
from student a inner join score b on a.student_id = b.student_id
查询结果 student_name, course_id, score
张三 课程1 85
张三 课程2 85
李四 课程1 80
李四 课程2 90
可以看到,直接符合连接条件的数据,都会被选择出来,而王五,因为在成绩表没有成绩,所以查询结果并没有王五的数据。
4.外连接,left join, right join,分别是左外连接和右外连接。
就是以一个表为主,而另一个表为辅。主表的数据都会被查询出来,而符合两表连接条件,那么辅表的数据就会显示,否则,为空(NULL)
还以上表和上述语句为例,查询所有学生的成绩清单,没有成绩显示空,但是学生要显示。
select a.student_name, b.course_id, b.score
from student a left join score b on a.student_id = b.student_id
查询结果:
student_name course_id score
张三 课程1 85
张三 课程2 85
李四 课程1 80
李四 课程2 90
王五 NULL NULL
可以看到,虽然连接条件王五这条并不成立,但是王五的数据一样会被显示出来,只是成绩表的相关数据位空。
有连接和左连接一样,把上面的顺序换过来,效果相同
select a.student_name, b.course_id, b.score
from score b right join student a on a.student_id = b.student_id
2. 数据库SQL题目,求解答
详细写到纸上了,有不清楚的可以继续问。
E-R图
逻辑模型及部分查询
查询及更新
触发器
以上是全部回答。
3. 帮忙做下这些SQL题目
判断题:错对错错错
填空题:1tempdb 2sp_helpdb 3distinct 4DBMS
选择题:CBACDDBACD
操作题:1、select 学号,姓名,年龄 from 学生 where 学号='S!'
2、select distinct S.学号,count(SC.课程号) from 学生 S ,学生选课表 SC where S.学号 = SC.学号 group by S.学号
3、(1)create table 教师表(
编号 char(6)primary key,
姓名 varchar(20)not null ,
性别 char(2),
民族 varchar(20)default('汉'),
职称 varchar(20),
身份证号 char(18)unique nonclustered)
alter table 任课表 add
constraintT 教师表_任课表 foreign key 教师编号
references 教师表(编号)
(2)insert table 课程表 values(‘100001’,‘SQL SERVER 数据库’);
insert table 课程表 values(‘100002’,‘数据结构’)
(3) update 课程表 set 名称 = ‘Visual Basic 程序设计’
(4)delete from 课程表 where 课程号='100003'
(5) select 教师表.姓名 ,count(任课表.学时数) from 任课表, 教师表 where 任课表.教师编号=教师表.编号 and 教师表.姓名='郭老师' group by 教师表.姓名
4. 求SQL答案
1. ( C )是被长期存放在计算机内的、有组织的、统一管理的相关数据的集合。
A.DATA B.INFORMATION C.DB D.DBS
2. 需求分析的主要方法是( A )。
A.自顶向下 B.自底向上 C.从左到右 D.混合策略
3. 在关系运算中,选取符合条件的元组是( D )运算。
A.除法 B.投影 C.连接 D.选择
4. 关系数据库的规范化理论指出,关系数据库中的关系应满足一定的要求,最起码的要求是达到1NF,既满足( D )。
A.主关键字唯一标识表中的每一行
B.关系中的行不允许重复
C.每个非关键字列都完全依赖于主关键字
D.每个属性都有是不可再分的基本数据项
5. SQL Server 2005中表查询的命令是( B )。
A. USE B.SELECT C.UPDATE D.DROP
6. 表达式 ‘123’+’456' 的结果是(C )。
A . '579' B . 579 C . '123456' D . '234567'
7. 在SQL Server 2005中,下列变量名正确的是( A )。
A.@sum B.j C.sum D.4kk
8. 建立索引的目的是( D )。
A.降低SQL Server数据检索的速度
B.与SQL Server数据检索的速度无关
C.加快数据库的打开速度
D.提高SQL Server数据检索的速度
9. 用于求系统日期的函数是( B )。
A.YEAR() B.GETDATE() C.COUNT() D.SUM()
10. 向用户授予操作权限的SQL语句是( D )。
A.CTEATE B.REVOKE C.SELECT D.GRANT
11SQL Server 2005用的身份验证模式有Windows身份验证模式和____混合验证_____模式。
12在查询语句中,应在_select____子句中指定输出字段。
13____视图____是由一个或多个数据表(基本表)或视图导出的虚拟表。
14从 Windows“ 开始 ” 菜单启动查询分析器后,默认数据库为_____master_____。
15表的 CHECK 约束是对___数据合法性_______的有效性检验规则。
16_____存储过程____是已经存储在SQL Server服务器中的一组预编译过的Transact-SQL语句。
17关系完整性包括实体完整性、 域完整性 、参照完整性和用户自定义完整性。
18数据库管理系统的安全性通常包括两个方面,一是指数据访问的安全性,二是指数据_管理______的安全性。
19触发器定义在一个表中,当在表中执行insert、___update_____或delete操作时被触发自动执行。
20数据文件的自动增长方式有:按百分比和按___文件大小_________两种方式。
5. sql 数据库习题谢谢
1. select '类别为:'+tushuleibie 图书分类 from T_Book
2. select shuming 书名,zuozhe 作者,jiage*0.7 价格 from T_Book where chubanshe ='机械工业出版社'
3. select shuming 书名,zuozhe 作者,jiage 价格, chubanshe 出版社 from T_Book where jiage between 30 and 60
4. select top 3 shuming 书名,zuozhe 作者,chubanshe 出版社, jiage 价格 from T_Book order by jiage desc
6.select chubanshe 出版社,AVG(jaige) 平均价,MAX(jiage) 最高价 ,MIN(jaige) 最低价 from T_Book group by chubanshe order by SUM(jiage) desc
10.select top 1 chubanshe 出版社, count(*) 出版图书个数 from T_Book group by chubanshe order by COUNT(*) desc
book表的做好了 reader的自己做吧 字段名我用拼音做代替的 你自己替换成你表中的字段
6. SQL数据库题目,求助
1、select * from 学生信息 where 年龄=18;
2、select 学号,姓名,班级 from 学生信息 where 班级='08电商1';
3、select 姓名,班级 from 学生信息 where 姓名 like '李%';
4、select * from 老师信息 where 姓名 like '_丽%';
5、select 班级,姓名,年龄 from 学生信息 where 班级='08电商1' or 班级='08物流2';
6、select 工号,姓名,部门 from 教师信息 where 工资>2500;
7、select 班级,count(*) as 人数 from 学生信息 group by 班级;
8、select top 10 学号,姓名 from 学生信息 order by 年龄 desc;
9、select * from 学生信息 where 班级='08电商2' order by 学号 asc;
10、select 性别,sum(年龄)/count(年龄) as 平均年龄 from 学生信息 group by 性别;或者select 性别,avg(年龄) as 平均年龄 from 学生信息 group by 性别
7. 各位高手,帮一下忙,这是一道考试试题,要用SQL语句写出基本表,如下
这几题的SQL语句如下:
1.
select 姓名 from 职工 where 年龄>45
2.
select 参加.职工号 from 社会团体,参加 where 社会团体.编号=参加.编号 and 社会团体.名称='蓝球队'
3.
select 职工号 from 职工 where not exists(select 1 from 参加 where 参加.职工号=职工.职工号)
4.
select 名称 from 社会团体 order by 名称
5.
select 名称,count(1) as 人数 from 社会团体 group by 名称
8. SQL题目,求高手帮忙100分。
这个设计很简单,需要三张表,即学生表(S),课程表(C),选课表(SC)。因为学生与课程是相对独立的两个对象,不会因为增删某个学生而影响课程,也不会因为增删某个课程而删除学生。
三张表的关系如下:
1.学生表保存学生信息,课程表保存课程信息,选课表保存学生与课程的对应关系。
2.增删学生表,不会改变课程表,反过来也一样。
3.删除某个学生时,同时删除选课表中相应的学生信息。
4.删除某个课程时,同时删除选课表中相应的课程信息。
三张表的设计如下
学生表(S)
SNO 学号
SNAME 姓名
.....(以下略,可根据需要增加字段)
课程表(C)
CNO 课程编号
CNAME 课程名
.....(以下略,可根据需要增加字段)
选课表(SC)
SNO 学号
CNO 课程编号
SCORE 分数
.....(以下略,可根据需要增加字段)
查学号为123的学生选择了什么课程及成绩:
SELECT S.SNAME AS 姓名,C.CNAME AS 课程名,SC.SCORE AS 分数 FROM S,C,SC WHERE S.SNO=SC.SNO AND C.CNO=SC.CNO AND S.SNO='123'
查课程号为abc的课程的学生及成绩(从高到低排序):
SELECT C.CNAME AS 课程名,S.SNAME AS 姓名,SC.SCORE AS 分数 FROM S,C,SC WHERE S.SNO=SC.SNO AND C.CNO=SC.CNO AND C.CNO='abc' ORDER BY SC.SCORE DESC