二 SQLSERVER的实现部分
1 有订单表,需要实现它的编号,格式如下:200211030001……200222039999等
2 有表T1,T2,现有一事务,在向表T1添加数据时,同时也必须向T2也添加数据,如何实现该事务
3 如何向T1中的编号字段(code varchar(20))添加一万条记录,不充许重复,规则如下:编号的数据必须从小写的a-z之间取值
4 如何删除表中的重复数据,请使用游标与分组的办法
5 如何求表中相邻的两条记录的某字段的值之差
6 如何统计数据库中所有用户表的数据,显示格式如下:
表名 记录数
sales 23
7 如何删除数据库中的所有用户表(表与表之间有外键关系)
8 表A editor_id lb2_id
123 000
123 003
123 003
456 007
456 006
表B lb2_id lb2_name
<chmetcnv w:st="on" unitname="a" sourcevalue="0" hasspace="True" negative="False" numbertype="1" tcsc="0"></chmetcnv>000 a
003 b
<chmetcnv w:st="on" unitname="C" sourcevalue="6" hasspace="True" negative="False" numbertype="1" tcsc="0"></chmetcnv>006 c
007 d
显示 a 共1条 (表A内lb2_id为000的条数)
b 共2条(表A内lb2_id为003的条数)
9 人员情况表(employee):里面有一字段文化程度(wh):包括四种情况(本科以上,大专,高中,初中以下),现在我要根据年龄字段查询统计出:表中文化程度为本科以上,大专,高中,初中以下,各有多少人,占总人数多少。
SELECT wh AS 学历,age as 年龄, Count(*) AS 人数,
Count(*) * 100 /(SELECT Count(*) FROM employee) AS 百分比
FROM employee GROUP BY wh,age
学历 年龄 人数 百分比
本科以上 20 34 14
大专 20 33 13
高中 20 33 13
初中以下 20 100 40
本科以上 21 50 20
10 现在有三个表student:(FID 学生号,FName 姓名),
subject:(FSubID 课程号,FSubName 课程名),
Score(FScoreId 成绩记录号,FSubID 课程号,FStdID 学生号,FScore 成绩)
怎么能实现这个表:
姓名 英语 数学 语文 历史
张萨 78 67 89 76
王强 89 67 84 96
SELECT a.FName AS 姓名,
英语 = SUM(CASE b.FSubName WHEN '英语' THEN c.FScore END),
数学 = SUM(CASE b.FSubName WHEN '数学' THEN c.FScore END),
语文 = SUM(CASE b.FSubName WHEN '语文' THEN c.FScore END),
历史 = SUM(CASE b.FSubName WHEN '历史' THEN c.FScore END)
FROM Student a, Subject b, Score c
WHERE a.FID = c.FStdId AND b.FSubID = c.FsubID GROUP BY a.FName
11 原始表的数据如下:
PID PTime PNo
111111 2003-01-28 04:30:09
111111 2003-01-28 18:30:00
222222 2003-01-28 04:31:09
333333 2003-01-28 04:32:09
111111 2003-02-09 03:35:25
222222 2003-02-09 03:36:25
333333 2003-02-09 03:37:25
查询生成表
PDate 111111 222222 333333 ......
<chsdate w:st="on" year="2003" month="1" day="28" islunardate="False" isrocdate="False"></chsdate>2003-01-28 04:30:09 04:31:09 04:32:09 ......
<chsdate w:st="on" year="2003" month="1" day="28" islunardate="False" isrocdate="False"></chsdate>2003-01-28 18:30:00
<chsdate w:st="on" year="2003" month="2" day="9" islunardate="False" isrocdate="False"></chsdate>2003-02-09 03:35:25 03:36:25 03:37:25 ......
12 表一(AAA)
商品名称mc 商品总量sl
A 100
B 120
表二(BBB)
商品名称mc 出库数量sl
A 10
A 20
B 10
B 20
B 30
用一条SQL语句算出商品A,B目前还剩多少?
一
declare @AAA table (商品名称 varchar(10), 商品总量 int)
insert into @AAA values('A',100)
insert into @AAA values('B',120)
declare @BBB table (商品名称 varchar(10), 出库数量 int)
insert into @BBB values('A', 10)
insert into @BBB values('A', 20)
insert into @BBB values('B', 10)
insert into @BBB values('B', 20)
insert into @BBB values('B', 30)
select TA.商品名称,A-B AS 剩余数量 FROM
(select 商品名称,sum(商品总量) AS A
from @AAA
group by 商品名称)TA,
(select 商品名称,sum(出库数量) AS B
from @BBB
group by 商品名称)TB
where TA.商品名称=TB.商品名称
二
select 商品名称,sum(商品总量) 剩余数量 from (select * from @aaa union all select 商品名称,-出库数量 from @bbb) a group by 商品名称
13 优化这句SQL语句
UPDATE tblExlTempYear
SET tblExlTempYear.GDQC = tblExlTempMonth.GDQC
FROM tblExlTempYear,tblExlTempMonth
where tblExlTempMonth.GDXM=tblExlTempYear.GDXM and tblExlTempMonth.TXDZ=tblExlTempYear.TXDZ
(1)、加索引:
tblExlTempYear(GDXM,TXDZ)
tblExlTempMonth (GDXM,TXDZ)
(2)、删除无用数据
(3)、转移过时数据
(4)、加服务器内存,升级服务器
(5)、升级网络系统
UPDATE tblExlTempYear
SET tblExlTempYear.GDQC = tblExlTempMonth.GDQC
FROM tblExlTempYear (index indexY),tblExlTempMonth (index indexM)
where tblExlTempMonth.GDXM=tblExlTempYear.GDXM and tblExlTempMonth.TXDZ=tblExlTempYear.TXDZ
14 品种 日期 数量
P0001 2002-1-10 10
P0001 2002-1-10 11
P0001 2002-1-10 50
P0001 2002-1-12 9
P0001 2002-1-12 8
P0001 2002-1-12 7
P0002 2002-10-10 5
P0002 2002-10-10 7
P0002 2002-10-12 0.5
P0003 2002-10-10 5
P0003 2002-10-12 7
P0003 2002-10-12 9
结果要先按照品种汇总,再按照日期汇总,结果如下:
P0001 2002-1-10 71
P0001 2002-1-12 24
P0002 2002-10-10 12
P0002 2002-10-12 0.5
P0003 2002-10-10 5
P0003 2002-10-12 16
SQL SERVER能做出这样的汇总吗…
15 在分組查循中with{cube|rollup}的區別是什么?
如:
use pangu
select firm_id,p_id,sum(o_price_quantity)as sum_values
from orders
group by firm_id,p_id
with cube
與
use pangu
select firm_id,p_id,sum(o_price_quantity)as sum_values
from orders
group by firm_id,p_id
with rollup
的區別是什么?
CUBE 和 ROLLUP 之间的区别在于:
CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
例如,简单表 Inventory 中包含:
Item Color Quantity
-------------------- -------------------- --------------------------
Table Blue 124
Table Red 223
Chair Blue 101
Chair Red 210
下列查询将生成小计报表:
SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
ELSE ISNULL(Item, 'UNKNOWN')
END AS Item,
CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'
ELSE ISNULL(Color, 'UNKNOWN')
END AS Color,
SUM(Quantity) AS QtySum
FROM Inventory
GROUP BY Item, Color WITH ROLLUP
Item Color QtySum
-------------------- -------------------- --------------------------
Chair Blue 101.00
Chair Red 210.00
Chair ALL 311.00
Table Blue 124.00
Table Red 223.00
Table ALL 347.00
ALL ALL 658.00
(7 row(s) affected)
如果查询中的 ROLLUP 关键字更改为 CUBE,那么 CUBE 结果集与上述结果相同,只是在结果集的末尾还会返回下列两行:
ALL Blue 225.00
ALL Red 433.00
CUBE 操作为 Item 和 Color 中值的可能组合生成行。例如,CUBE 不仅报告与 Item 值 Chair 相组合的 Color 值的所有可能组合(Red、Blue 和 Red + Blue),而且报告与 Color 值 Red 相组合的 Item 值的所有可能组合(Chair、Table 和 Chair + Table)。对于 GROUP BY 子句中右边的列中的每个值,ROLLUP 操作并不报告左边一列(或左边各列)中值的所有可能组合。例如,ROLLUP 并不对每个 Color 值报告 Item 值的所有可能组合。ROLLUP 操作的结果集具有类似于 COMPUTE BY 所返回结果集的功能;然而,
ROLLUP 具有下列优点: ROLLUP 返回单个结果集;COMPUTE BY 返回多个结果集,而多个结果集会增加应用程序代码的复杂性。ROLLUP 可以在服务器游标中使用;COMPUTE BY 不可以。有时,查询优化器为 ROLLUP 生成的执行计划比为 COMPUTE BY 生成的更为高效。
16 假如我有两个表
表1(电话号码,是否存在)
表2(电话号码,是否拨打)
想查找表1中的电话号码是否在表2中存在,如果存在就更新表1中的是否存在字段为1。
UPDATE 表1 SET 是否存在=1
WHERE EXISTS(SELECT * FROM 表2 WHERE 表2.电话号码 = 表1.电话号码)
17 用存储过程调用外部程序.
不过要做成com控件
用sp_OACreate存储过程)
DECLARE @object int
DECLARE @hr int
DECLARE @src varchar(255), @desc varchar(255)
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
分享到:
相关推荐
SQL Server是一款由微软开发的关系型数据库管理系统,广泛应用于企业级数据存储、...通过这些测试题,考生可以全面评估自己在SQL Server 2005方面的知识和技能,为实际工作中的数据库管理、开发和维护奠定坚实的基础。
《sqlserver测试题及答案.pdf》这份文件,系统地归纳和总结了学习SQL Server过程中需要掌握的关键知识点,从数据库设计到查询优化,提供了一系列的测试题及答案,旨在帮助读者巩固和检验自己的学习成果。 首先,...
SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在IT领域中扮演着重要的角色,尤其是在数据存储、管理和分析方面。本题目汇编聚焦于SQL Server 2000的基础知识,旨在帮助学习者巩固和提升对这个系统的...
以上内容是北大青鸟S1 SQL Server 2005内部测试题可能涵盖的知识点,对于初学者来说,全面掌握这些内容将为后续的数据库管理和开发打下坚实基础。在实际学习过程中,结合具体案例和实践操作,可以更好地理解和应用...
SQL Server 2000 是一个关系型数据库管理系统,它提供了丰富的功能,包括安全性、事务...以上是对 SQL Server 2000 测试题中涉及的主要知识点的详细说明,涵盖了数据库的安全、管理、备份恢复和事务处理等多个方面。
在SQL Server领域,面试题通常会涵盖数据库设计、性能优化、安全性、备份恢复以及服务器管理等多个方面。"为SQL Server配置一个邮件配置文件"这一描述则着重指向了SQL Server的数据库邮件功能,这是用于发送电子邮件...
`sp_helpdb`可以列出SQL Server中的所有数据库信息,包括名称、大小、状态等。 2. **删除表的命令**:在SQL语言中,删除表的命令是`DROP`,选项B。例如,`DROP TABLE 表名`会删除指定的表及其所有数据。 3. **主键...
SQL Server 数据库试题及答案 本文档旨在总结 SQL Server 数据库试题及答案,涵盖关系数据库基本概念、SQL Server 安装和配置、数据表和索引、数据查询和操作、视图和存储过程等方面知识点。 一、关系数据库基本...
北大青鸟SQL_Server所有测试题,非常实用。
【SQL Server测试题详解】 1. E-R模型图构建: 在这个业务场景中,存在四个主要实体:职工(Employee)、职位(Job)、工程(Project)和职工工程(EmPro)。实体之间的联系如下: - 职工与职位之间是一对一关系...
- **问题**:如何在SQL Server中选择所有不同的产品类别? - **答案**:使用DISTINCT关键字,例如:`SELECT DISTINCT Category FROM Products;` 2. **表操作**: - **问题**:如何创建一个新表并从另一个表中...
在SQL Server中,还有其他高级查询技术,如自连接、子查询和窗口函数,这些都可能出现在链表查询的练习题中。自连接是将一个表与自身进行JOIN,用于处理具有层次结构或自我参照的数据。子查询可以在SELECT、FROM或...
SQL Server 测试题详解 1. 选择题分析: - 题目1:当执行T-SQL开始事务后,如果找到title_id为tc2的记录,会删除该记录并回滚事务,因此不会打印"OK"。正确答案是d) 不删除该记录行,也不打印任何信息。 - 题目2...
以上是SQL Server 2000-2005测试题中的部分知识点解析,这些知识点覆盖了SQL Server的基本理论,包括数据库架构、性能优化、数据完整性、版本差异等方面的内容。理解这些概念对于使用SQL Server进行有效的数据库管理...
* 选择题10:对于数据库的管理,对 SQL Server 中 guest 用户的描述错误的是安装系统时,guest 用户被加入到 master、pubs、tempdb、northwind 数据库中 * 选择题11:公司中有多个部门和多名职员,每个职员只能属于...
在SQL Server面试中,面试官通常会关注应聘者对数据库管理、查询优化、事务处理、安全性及性能调优等多方面的能力。以下是一些基于SQL Server的常见面试问题及其详细解答,这些问题对于.net、asp.net、c#、java以及...
这个压缩包“SQLServer内部测试题及复习要点.rar”包含了针对SQL Server的重要测试题目和复习材料,对于备考或提升SQL Server技能的人来说极具价值。 SQL Server的核心知识点包括以下几个方面: 1. **SQL语言基础*...
在SQL Server中,可以使用CREATE TABLE语句来创建数据库表,定义字段名、数据类型和约束条件。ALTER TABLE语句用于修改已有表的结构,而DROP TABLE则用于删除不再需要的表。表间关系可通过FOREIGN KEY约束实现。 四...
在文件提供的内容中,展示了创建四个测试表格的SQL语句,分别对应学生表(Student),课程表(Course),教师表(Teacher)和成绩表(SC)。在创建表时,需要定义数据类型,其中S#代表学生编号,Sname代表学生姓名,...
《SQLServer数据库基础教程及习题》是一份专为初学者设计的学习资料,涵盖了SQL Server数据库的基本概念、操作以及实践应用。本教程采用简洁明了的语言,并辅以丰富的实例,旨在帮助学习者快速掌握SQL Server数据库...