1、一张表,3个字段name、kecheng、fenshu。用一条SQL语句查出每门课都大于80分的学生姓名
如: name kecheng fenshu
张三 语文 81
张三 数学 75
...
王五 数学 90
2、自动编号 学号 姓名 课程 分数
1 001 张三 数学 69
2 002 王五 语文 89
3 001 张三 数学 69
删除除自动编号不同外,其他都相同的重复信息
3、year month amount
1991 1 1.1
1991 2 1.2
1991 3 1.3
1992 1 2.1
...
1992 3 2.3
如何将上表查询出如下结果
year m1 m2 m3
1991 1.1 1.2 1.3
1992 2.1 ... 2.3
.
..
4、两张关联表,删除主表中已经在副表中没有的信息
5、查询a表中第31到40条记录。ID作为主键可能不是连续增长的列
6、查询表a中存在ID重复3次以上的记录
7、表a
id kecheng fenshu
1 java 70
2 60
3 xml 30
要求查询结果(增加一列,60分为及格)
id kecheng fenshu mark
1 java 70 pass
2 60 pass
3 xml 30 fail
...
8、数据表
name code
张三 语文;数学;英语
李四 语文;物理
王五 数学
要求输出为:
name code
张三 3
李四 2
王五 1
9、数据表tope
id name code
1 张三 语文
2 张三 数学
3 李四 物理
4 王五 数学
5 张三 英语
6 李四 语文
要求输出为:
name code
张三 语文;数学;英语
李四 物理;语文
王五 数学
10、索引的作用,及其优缺点
索引是一种特殊的查询表,数据库的搜索引擎可利用它加速对数据的检索。它类似于书中的目录。
缺点是减慢了数据的录入速度,增加了数据库的大小
11、内存泄露
一般指堆内存泄露。堆内存时从堆中为其分配的,大小任意,使用完要显式释放的内存。用new创建对象
时,就从堆中为其分配内存,如使用完未释放该内存,该内存就不能被使用。就说该内存泄露了。
增加字段的sql语句12、维护数据库完整性和一致性
尽可能使用约束:check、主外键、非空字段等,方便效率高;其次使用触发器。最后是自写业务逻辑
13、事务和锁
事务是绑定到一起作为一个逻辑工作单元的sql语句分组,如任一个语句操作失败就视作整个操作失败
。操作将回滚到操作前状态。
锁: 实现事务的关键。可以保证事务的完整性和并发性。可以使某些数据的拥有者在某段时间内不能
使用某些数据或数据结构。
14、视图和游标
视图时一种虚拟表,具有与物理表相同的功能,可对视图增删改查。视图通常是一个或多个表的行或
列的子集。对视图的修改不影响基本表。使获取数据更容易,相比多表查询。
游标: 对查询出来的结果集做一个单元来有效处理。游标可定在该单元中的特定行,从结果集的当前
行检索一行或多行。可对结果集当前行做修改。
一般不使用游标,但当需逐条处理数据时,游标显得很重要。
15、存储过程的概念、优点(或特点),写一个简单的存储过程
存储过程: 是一组为了完成特定功能的SQL语句集,利用SQL Server所提供的T-SQL语言所编写的程序,经
编译后存储在数据库中。
优点: 1.执行速度快。存储过程只在创造时进行编译,以后每次执行不需再重新编译,,一般SQL语句每执
行一次就编译一次
2.存储过程可重复使用
3.安全性高。(可设定只有某些用户才具有对指定存储过程的使用权)
4.当对数据库进行复杂操作时,可完成复杂的判断和较复杂的运算,可用存储过程封装起来
5.易于维护和集中控制。当企业规则变化时在服务器中改变存储过程即可,无须修改应用程序
简单的存储过程:
create proc select_query @year int
as
select * from tmp where year=@year
16、内联、外联的概念及区别;左联右联的区别
左联接是在左边表和右边表不匹配的记录也显示出已NULL填充
17、索引类型
主索引: 确保字段中输入的是唯一值并确定记录的处理顺序,每个表只能由一个主索引。具有唯一性
、非空值性
候选索引: 也强调唯一性、非空值性,但一个表可有多个候选索引。无主索引时可成为主索引
唯一索引: 强调唯一性,但可为空值
普通索引: 可以有重复值,表中可有多个普通索引
18、触发器(Trigger)
是一种特殊的存储过程,是在执行某些特定的T-SQL语句时自动执行的一种存储过程
SQLServer2005中,根据SQL语句的不同,分为:DML触发器、DLL触发器
DML触发器: 当数据库服务器中发生数据操作语言事件时执行的存储过程。
分为:After触发器和Instead Of触发器
DDL触发器
特殊的触发器,在响应数据定义语言(DDL)语句时触发。一般用于数据库中执行管理任务
DDL触发器是响应Create、 Alter或Drop开头的语句而激活
答案:
1、select distinct name from table where name not in (select distinct name from table where
fenshu<=80)或
select name from table group by name having min(fenshu)>80
2、delect table where 自动编号 not in (sele
ct min(自动编号) from table group by 学号,姓名,课
程,分数)
3、select year,(select amount from a m where month=1 ar) as m1,
(select amount from a m where month=2 ar) as m2,
... month=3 ... m3
from a group by year
4、delete from a where not exists(select * from b where a.id=b.id)
5、select top 10 * from a where id not in (select top 30 id from a order by id) order by id
6、select * from (select count(id) as count from a group by id)T unt>3
7、select id,kecheng,fenshu,(case when fenshu<60 then 'fail' else 'pass' end)as mark from a
8、以下使用游标来做--保存在存储过程中,结果已经过验证
use stu
go
declare @name nchar(20),@index int,@code nchar(50),@result int
declare tope_cursor CURSOR for select [name],[code] from [prop-tope]
print 'name code'
open tope_cursor
fetch from tope_cursor into @name,@code
while @@fetch_status=0
begin
set @result=1
set @index=charindex(';',@code)
while @index>0
begin
set @result=@result+1
set @index=charindex(';',@code,@index+1)
end
print @name+' '+cast(@result as nchar(50))
-select [name]=@name,[code]=cast(@result as nchar(50))
fetch from tope_cursor into @name,@code
end
close tope_cursor
deallocate tope_cursor
go
9、本题用嵌套游标来实现--结果已经过验证
use stu
go
declare @name nchar(20),@code nvarchar(100),@result nvarchar(100)
declare t1_cursor CURSOR for select [name] from [tope] group by [name]
open t1_cursor
fetch from t1_cursor into @name
while @@fetch_status=0
begin
declare t2_cursor CURSOR for select [code] from [tope] where [name]=@name
open t2_cursor
fetch from t2_cursor into @code
set @result=''
while @@fetch_status=0
begin
if @result=''
set @result=ltrim(rtrim(@code))
else
set @result=@result+';'+ltrim(rtrim(@code))
fetch from t2_cursor into @code
end
close t2_cursor
deallocate t2_cursor
print @name+@result
fetch from t1_cursor into @name
end
close t1_cursor
deallocate t1_cursor
go
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论