当前位置:首页 » 编程语言 » 笔试sql语句

笔试sql语句

发布时间: 2022-08-06 23:31:19

Ⅰ 谁有sql 笔试题,要多的不要选择填空。

javaeye里面转的,十几个问题覆盖多个方面,含答案

目前在职场中很难找到非常合格的数据库开发人员。我的一个同事曾经说过:“SQL开发是一门语言,它很容易学,但是很难掌握。”

在面试应聘的SQL Server数据库开发人员时,我运用了一套标准的基准技术问题。下面这些问题是我觉得能够真正有助于淘汰不合格应聘者的问题。它们按照从易到难的顺序排列。当您问到关于主键和外键的问题时,后面的问题都十分有难度,因为答案可能会更难解释和说明,尤其是在面试的情形下。

您能向我简要叙述一下SQL Server 2000中使用的一些数据库对象吗?

您希望听到的答案包括这样一些对象:表格、视图、用户定义的函数,以及存储过程;如果他们还能够提到像触发器这样的对象就更好了。如果应聘者不能回答这个基本的问题,那么这不是一个好兆头。

什么是索引?SQL Server 2000里有什么类型的索引?

任何有经验的数据库开发人员都应该能够很轻易地回答这个问题。一些经验不太多的开发人员能够回答这个问题,但是有些地方会说不清楚。

简单地说,索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。在SQL Server里,它们有两种形式:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据。这意味着不论聚集索引里有表格的哪个(或哪些)字段,这些字段都会按顺序被保存在表格。由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。这个行标识符是一个指向磁盘上数据的指针。它允许每个表格有多个非聚集索引。

NULL是什么意思?

NULL(空)这个值是数据库世界里一个非常难缠的东西,所以有不少应聘者会在这个问题上跌跟头您也不要觉得意外。

NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。假设您的SQL Server数据库里有ANSI_NULLS,当然在默认情况下会有,对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 UNKNOWN值进行比较,并在逻辑上希望获得一个答案。您必须使用IS NULL操作符。

什么是主键?什么是外键?

主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。

什么是触发器?SQL Server 2000有什么不同类型的触发器?

让未来的数据库开发人员知道可用的触发器类型以及如何实现它们是非常有益的。

触发器是一种专用类型的存储过程,它被捆绑到SQL Server 2000的表格或者视图上。在SQL Server 2000里,有INSTEAD-OF和AFTER两种触发器。INSTEAD-OF触发器是替代数据操控语言(Data Manipulation Language,DML)语句对表格执行语句的存储过程。例如,如果我有一个用于TableA的INSTEAD-OF-UPDATE触发器,同时对这个表格执行一个更新语句,那么INSTEAD-OF-UPDATE触发器里的代码会执行,而不是我执行的更新语句则不会执行操作。

AFTER触发器要在DML语句在数据库里使用之后才执行。这些类型的触发器对于监视发生在数据库表格里的数据变化十分好用。

您如何确一个带有名为Fld1字段的TableB表格里只具有Fld1字段里的那些值,而这些值同时在名为TableA的表格的Fld1字段里?

这个与关系相关的问题有两个可能的答案。第一个答案(而且是您希望听到的答案)是使用外键限制。外键限制用来维护引用的完整性。它被用来确保表格里的字段只保存有已经在不同的(或者相同的)表格里的另一个字段里定义了的值。这个字段就是候选键(通常是另外一个表格的主键)。

另外一种答案是触发器。触发器可以被用来保证以另外一种方式实现与限制相同的作用,但是它非常难设置与维护,而且性能一般都很糟糕。由于这个原因,微软建议开发人员使用外键限制而不是触发器来维护引用的完整性。

对一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑?

您正在寻找进行与数据操控有关的应聘人员。对一个表格的索引越多,数据库引擎用来更新、插入或者删除数据所需要的时间就越多,因为在数据操控发生的时候索引也必须要维护。

您可以用什么来确保表格里的字段只接受特定范围里的值?

这个问题可以用多种方式来回答,但是只有一个答案是“好”答案。您希望听到的回答是Check限制,它在数据库表格里被定义,用来限制输入该列的值。

触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。因此,微软建议使用Check限制而不是其他的方式来限制域的完整性。

返回参数和OUTPUT参数之间的区别是什么?

如果应聘者能够正确地回答这个问题,那么他的机会就非常大了,因为这表明他们具有使用存储过程的经验。

返回参数总是由存储过程返回,它用来表示存储过程是成功还是失败。返回参数总是INT数据类型。

OUTPUT参数明确要求由开发人员来指定,它可以返回其他类型的数据,例如字符型和数值型的值。(可以用作输出参数的数据类型是有一些限制的。)您可以在一个存储过程里使用多个OUTPUT参数,而您只能够使用一个返回参数。

什么是相关子查询?如何使用这些查询?

经验更加丰富的开发人员将能够准确地描述这种类型的查询。

相关子查询是一种包含子查询的特殊类型的查询。查询里包含的子查询会真正请求外部查询的值,从而形成一个类似于循环的状况。

关于面试过程的思考

这些问题只不过是确定一个SQL Server数据库开发人员是否合格的起点。根据应聘者对上面这些问题的回答情况,我可能会要求他们参加我的TSQL编程考试,这一般是一套根据不同情况进行的10到12个数据库查询。

您需要自己决定将要雇用的开发人员具有什么样的专业技能。然后,需要通过自己的经验、判断以及在面试时对应聘者的感受(来做最终决定)。

您在面试数据库开发人员时一般会问哪些问题呢?让我们一起来讨论一下吧。

Tim Chapman是肯塔基州路易维尔市一家银行的SQL Server数据库管理员,他有超过7年的行业经验。他还通过了微软SQL Server 2000和SQL Server 2005的认证。

Ⅱ 数据库SQL语句考试

insert into A values('010102','张静',‘’,‘’,‘机电’)

update C set GRADE='59' where GRADE>=60

delete from A where SN like '李%'

select S#,SEX,AGE from A where SN='刘华'

select A.S#,CN from A,B,C where A.S#=C.S# and C.C#=B.C# and A.DEPT not in ('计算机系','法律系')

select C.S#,sum(GRADE) from C where C.S# in (select C.S# from B,C where B.CN='大学语文' and B.C#=C.C#) order by sum(GRADE) desc

update A set SEX='',AGE=''

drop table A
drop table B
drop table C

Ⅲ 急!考试要考SQL语句!!不难!会写的帮忙写一下!加分!!!!!

1、select 成绩 from 表 where 成绩>60 order by 成绩 asc;
2、
SqlServer:
select top 10 成绩 from 表 where 成绩>60 order by 成绩 desc;
oracle:
select * from (select 成绩,row_number()over(order by 成绩 desc) id from 表 where 成绩>60) where id <=10;
3、insert into table(字段1,字段2,字段3,字段4) values(5,'rrr','1984-6-7',89);
4、delete from 表名 where 编号=3;
5、update 表名 set 成绩=90 where 编号=90;

说明:因为你没说明表结构,只能写成这样的了。
---
以上,希望对你有所帮助。

Ⅳ SQL语句分组查询笔试题

select match_date,
sum(case when match_result ='win' then 1 else 0 end) as amount_win,
sum(case when match_result='lose' then 1 else 0 end) as amount_lose

from t_match
group by match_date

Ⅳ 关于SQL一些常用语句

(1) 数据记录筛选:

sql="select * from 数据表 where 字段名=字段值 order by 字段名 "
sql="select * from 数据表 where 字段名 like ‘%字段值%‘ order by 字段名 "
sql="select top 10 * from 数据表 where 字段名 order by 字段名 "
sql="select * from 数据表 where 字段名 in (‘值1‘,‘值2‘,‘值3‘)"
sql="select * from 数据表 where 字段名 between 值1 and 值2"

(2) 更新数据记录:

sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

(3) 删除数据记录:

sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)

(4) 添加数据记录:

sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)

(5) 数据记录统计函数:

AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加

引用以上函数的方法:

sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)

用 rs("别名") 获取统的计值,其它函数运用同上。

(5) 数据表的建立和删除:

CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 数据表名称 (永久性删除一个数据表)

(6) 记录集对象的方法:
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录

判断所填数据是数字型

if not isNumeric(request("字段名称")) then
response.write "不是数字"
else
response.write "数字"
end if

Ⅵ 求数据库SQl笔试答案

在oracle数据库中

--建表
create table student(
sno varchar2(10),
sname varchar2(10),
ssex char(4),
sage number(3),
sdept varchar2(20)
);

--先随便插入两条数据
insert into student values('01','stone','男','23','math');
insert into student values('02','hippocampus','女','20','math');

--为学生-课程数据库中的Student表建立索引,按学号升序建索引。
create index studentIndex on student(sno asc);

--查询所有女同学信息
select * from student where ssex='女';

--显示年龄在20岁以下的学生姓名及性别
select sname,ssex from student where sage<20;

--将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中
insert into student values('95020','陈冬','男',18,'IS');

--查询全体学生的姓名及其年龄
select sname,sage from student;

Ⅶ 高分求sql语句

1、select id from [Dept] group by id having count(*)>1
2、
select distinct * into #Tmp from [Dept]
drop table [Dept]
select * into [Dept] from #Tmp
drop table #Tmp
或者(一条语句),没测试注意备份:
delete from [Dept] where id not in(select min(id) from [Dept] group by id having count(*)>=2) and id not in(select min(id) from [Dept] group by id having count(*)<2)

一时大意,把
select distinct * into #Tmp from [Dept]
改成select distinct id into #Tmp from [Dept] 不就行了,关键是方法和思路

Ⅷ 求救一条笔试SQL查询语句

DECLARE @Course varchar(20), --课程
@ETime datetime(20), --考试日期
@PResult decimal(5,2) --及格分数线
SET @Course = '英语'
SET @ETime = '2008-08-08'
SET @PResult = 60

SELECT C.Cid AS 班级编号,COUNT(S.Sid) AS 总人数,
COUNT(R.Sid) AS 实考人数,MAX(R.Results) AS 最高分,
MIN(R.Results) AS 最低分,
SUM(CASE WHEN R.Results<@PResult THEN 1 ELSE 0 END) AS 不及格人数,
SUM(CASE WHEN R.Results>=@PResult THEN 1 ELSE 0 END)/COUNT(R.SId) AS 及格率
FROM T_Class C INNER JOIN T_Student S ON C.CIid = S.Cid
INNER JOIN T_Results R ON S.Sid = R.Sid
WHERE R.Course = @Course
AND R.ETime = @ETime
GROUP BY C.Cid

Ⅸ sql简单查询语句

1、首先打开数据库,建立好表。

Ⅹ sql 语句

方法一:

-- 建立学生成绩的临时表 SC001 SC002 两列分别为学生的 001 002 两门成绩
SELECT S#,NULL AS SC001, NULL AS SC002 INTO #SC_TMP
FROM STUDENT

UPDATE A
SET A.SC001=B.SCORE
FROM #SC_TMP A, SC B
WHERE A.S#=SC.S# AND B.C#='001'

UPDATE A
SET A.SC002=B.SCORE
FROM #SC_TMP A, SC B
WHERE A.S#=SC.S# AND B.C#='002'

-- 查询 002 成绩大于 001 的学生

SELECT ST.S#, ST.NAME
FROM #SC_TMP TMP
INNER JOIN STUDENT ST ON TMP.S#=ST.S#
WHERE ISNULL(TMP.SC001, 0) > ISNULL(TMP.SC002, 0)

方法二:

在 SC 表分别作 001 和 002 的同一学生的关联,自然就得出 001 》 002 的学生了
SELECT C.S#, C.NAME
FROM SC A
INNER JOIN SC B ON A.S#=B.S# AND A.SCORE > B.SCORE
INNER JOIN STUDENT C ON A.S#=C.S#
WHERE A.C#=‘001’ AND B.C#='002'

适用于 MS SQL,MYSQL ORACLE 修改下 ISNULL 之类的函数就行了,思路一样的

热点内容
编程中怎么 发布:2024-05-06 01:43:32 浏览:628
如何访问远程数据库 发布:2024-05-06 01:39:20 浏览:447
刷算法的网站 发布:2024-05-06 01:30:39 浏览:269
少儿编程徐州 发布:2024-05-06 01:20:42 浏览:462
sqlserver连接驱动 发布:2024-05-06 00:33:34 浏览:646
存储开销 发布:2024-05-06 00:13:38 浏览:954
服务器怎么盈利 发布:2024-05-05 23:56:16 浏览:942
java网站培训学校 发布:2024-05-05 23:43:11 浏览:41
淘宝搜索算法 发布:2024-05-05 23:37:07 浏览:999
sqlwhencasethen 发布:2024-05-05 23:27:51 浏览:641