当前位置:首页 » 编程语言 » sql编程训练
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql编程训练

发布时间: 2022-09-18 02:18:14

数据库sql编程题

declare @j int,@o int,@i int
set @i=1
set @j=0
set @o=0
while @i<=40
begin
if(@i%2=1)
set @j=@j+@i*@i
else
set @o=@o+@i*@i
set @i=@i+1
end
print 'x='+convert(char(5),@j)+',y='+convert(char(5),@o)

② 用SQL语句编程

思路
写个查询单价在minPrice到maxPrice记录的函数func,函数返回的类型为记录Record类型

create function func(@minPrice int,@maxPrice int)
returns table
with encryption
as
return
select * from book where price>=(@minPrice and price<=(@maxPrice

调用的时候如下

select * from dbo.func(@minPrice,,@maxPrice)

ps:挺长时间没用SQLServer了,代码大概形式如上

③ 请问在网上可以学SQL数据库编程吗

SQL基础
本章内容

SQL介绍

使用SELECT 语句从表中取数据

创建新表

字段属性

向表中添加数据

删除和修改表

为了建立交互站点,你需要使用数据库来存储来自访问者的信息。例如,你要建立一个职业介绍服务的站点,你就需要存储诸如个人简历,所感兴趣的工作等等这样的信息。创建动态网叶也需要使用数据库,如果你想显示符合来访者要求的最好的工作,你就需要从数据库中取出这份工作的信息。你将会发现,在许多情况下需要使用数据库。

在这一章里,你将学会怎样使用“结构化查询语言”(SQL〕来操作数据库。SQL语言是数据库的标准语言。在Active Sever Pages 中,无论何时你要访问一个数据库,你就要使用SQL语言。因此,掌握好SQL对ASP编程是非常重要的。

注意:

你可以把“SQL”读作“sequel”,也可以按单个字母的读音读作S-Q-L。 两种发音都是正确的,每种发音各有大量的支持者。在本书里,认为“SQL”读作“sequel”。

通过这一章的学习,你将理解怎样用SQL实现数据库查询,你将学会怎样使用这种查询从数据表中取出信息,最后,你将学会怎样设计和建立自己的数据库。

注意:

通过下面几章对SQL的介绍,你将对SQL有足够的了解,从而可以有效地使用Active Sever Pages。但是,SQL是一种复杂的语言,本书不可能包括它的全部细节。要全面掌握SQL语言,你需要学习在Microsoft SQL Sever 中使用SQL。你可以到附近的书店去买一本Microsoft SQL Sever 6.5。

SQL介绍:

本书假设你是在SQL操作Microsoft SQL Sever 的数据库。你也可以用SQL操作许多其它类型的数据库。SQL是操作数据库的标准语言。(事实上,关于SQL语言有一个专门的ANSI标准〕

注意:

不要在你的站点上试图用Microsoft Access代替Microsoft SQL Sever。SQL Sever可以同时服务于许多用户,如果你希望你的站点有较高的访问率,MS Access是不能胜任的。

在学习SQL的细节之前,你需要理解它的两大特点。一个特点容易掌握,另一个掌握起来有点困难。

第一个特点是所有SQL数据库中的数据都存储在表中。一个表由行和列组成。例如,下面这个简单的表包括name 和e-mail address:

Name Email Address

................................................................

Bill Gates [email protected]

president Clinton [email protected]

Stephen Walther [email protected]

这个表有两列(列也称为字段,域〕:Name和Email Address。有三行,每一行包含一组数据。一行中的数据组合在一起称为一条记录。

无论何时你向表中添加新数据,你就添加了一条新记录。一个数据表可以有几十个记录,也可以有几千甚至几十亿个记录。虽然你也许永远不需要存储十亿个Email地址,但知道你能这样做总是好的,也许有一天你会有这样的需要。

你的数据库很有可能包含几十个表,所有存储在你数据库中的信息都被存储在这些表中。当你考虑怎样把信息存储在数据库中时,你应该考虑怎样把它们存储在表中。

SQL的第二个特点有些难于掌握。这种语言被设计为不允许你按照某种特定的顺序来取出记录,因为这样做会降低SQL Sever取记录的效率。使用SQL,你只能按查询条件来读取记录。

当考虑如何从表中取出记录时,自然会想到按记录的位置读取它们。例如,也许你会尝试通过一个循环,逐个记录地扫描,来选出特定的记录。在使用SQL时,你必须训练自己,不要有这种思路。

假如你想选出所有的名字是“Bill Gates”的记录,如果使用传统的编程语言,你也许会构造一个循环,逐个查看表中的记录,看名字域是否是“Bill Gates”。

这种选择记录的方法是可行的,但是效率不高。使用SQL,你只要说,“选择所有名字域等于Bill Gates的记录”,SQL就会为你选出所有符合条件的记录。SQL会确定实现查询的最佳方法。

建设你想取出表中的前十个记录。使用传统的编程语言,你可以做一个循环,取出前十个记录后结束循环。但使用标准的SQL查询,这是不可能实现的。从SQL的角度来说,在一个表中不存在前十个记录这种概念。

开始时,当你知道你不能用SQL实现某些你感觉应该能实现的功能,你会受到挫折。你也许会以头撞墙甚至想写恶毒的信件给SQL的设计者们。但后来你会认识到,SQL的这个特点不仅不是个限制,反而是其长处。因为SQL不根据位置来读取记录,它读取记录可以很快。

综上所述,SQL有两个特点:所有数据存储在表中,从SQL的角度来说,表中的记录没有顺序。在下一节,你将学会怎样用SQL从表中选择特殊的记录。

使用SQL从表中取记录。

SQL的主要功能之一是实现数据库查询。如果你熟悉Internet 引擎,那么你已经熟悉查询了。你使用查询来取得满足特定条件的信息。例如,如果你想找到有ASP信息的全部站点,你可以连接到 Yahoo!并执行一个对Active Sever Pages的搜索。在你输入这个查询后,你会收到一个列表,表中包括所有其描述中包含搜索表达式的站点。

多数Internet 引擎允许逻辑查询。在逻辑查询中,你可以包括特殊的运算符如AND、OR和NOT,你使用这些运算符来选择特定的记录。例如,你可以用AND来限制查询结果。如果你执行一个对Active Sever Pages AND SQL的搜索。你将得到其描述中同时包含Active Sever Pages 和SQL的记录。当你需要限制查询结果时,你可以使用AND。

如果你需要扩展查询的结果,你可以使用逻辑操作符OR。例如,如果你执行一个搜索,搜索所有的其描述中包含Active Sever Pages OR SQL的站点,你收到的列表中将包括所有其描述中同时包含两个表达式或其中任何一个表达式的站点。

如果你想从搜索结果中排除特定的站点,你可以使用NOT。例如,查询“Active Sever Pages ”AND NOT “SQL”将返回一个列表,列表中的站点包含Active Sever Pages,但不包含SQL。当必须排除特定的记录时,你可以使用NOT。

用SQL执行的查询与用Internet搜索引擎执行的搜索非常相似。当你执行一个SQL查询时,通过使用包括逻辑运算符的查询条件,你可以得到一个记录列表。此时查询结果是来自一个或多个表。

SQL查询的句法非常简单。假设有一个名为email_table 的表,包含名字和地址两个字段,要得到Bill Gates 的e_mail地址,你可以使用下面的查询:

SELECT email from email_table WHERE name="Bill Gates"

当这个查询执行时,就从名为email_table的表中读取Bill Gates的e_mail 地址。这个简单的语句包括三部分:

■ SELECT语句的第一部分指名要选取的列。在此例中,只有email列被选取。当执行时,只显示email列的值 [email protected]

■ SELECTT语句的第二部份指明要从哪个(些)表中查询数据。在此例中,要查询的表名为email_table 。

■ 最后,SELECT语句的WHERE子句指明要选择满足什么条件的记录。在此例中,查询条件为只有name列的值为Bill Gates 的记录才被选取。

Bill Gates很有可能拥有不止一个email地址。如果表中包含Bill Gates的多个email地址。用上述的SELECT语句可以读取他所有的email地址。SELECT语句从表中取出所有name字段值为Bill Gates 的记录的email 字段的值。

④ 使用T-SQL语句编程实现,对1到100中的奇数进行求和

declare @i tinyint,@sum int
set @sum=0
set @i=0
while @i>=0
begin
if(@i>=100)
begin
select'总和'=@sum
break
end
else
begin
set @i=@i+1
if(@i%2)=0
continue
else
set @sum=@sum+@i
end
end

⑤ 新手怎么快速学会sQL语言的编程

找一些学习文档来看,多动手实践。看文档要比教程省时间,多动手练习是学习电脑的有效方法。我是北大青鸟的一名学员,我们的学习方法就是多练习!

⑥ 我想练习SQL编程,家里电脑装SQL太慢了,大家谁能推荐一下小一点适合练习的SQL编程软件

vfp挺好的 ,还有你可以装sql 2000,这个不大,应该能行

⑦ SQL 编程题

1.
create table Student
(
id int not null identity(1,1),
Sno nvarchar(50) not null unique,
Sname nvarchar(20),
Ssex nvarchar(2),
Sage int,
Sdept nvarchar(100),
)

2.select * from Student where Sdept='计算机' order by Sno desc

3.select Sno,Sname,Ssex from Student where Sno in (select Sno from Course where Ccredit = 5 and Cno in (select Cno from SC where Grade > 60))

⑧ SQL数据库编程

一马当先 一身正气 万夫不当 无所畏惧 气冲牛斗 气冲霄汉 气壮山河 气宇轩昂 气吞山河 正气凛然 龙骧虎步 百战百胜 冲锋陷阵 英姿焕发 奋不顾身 奋勇当先 顶天立地 昂首挺胸 昂首阔步 赴汤蹈火 挺身而出 战无不胜 临危不惧 威震天下 面不改色 勇冠三军 骁勇善战 镇定自若 慷慨就义 大智大勇 仰不愧天 力挽狂澜 光明磊落 化险为夷 大显身手 大显神通 大获全胜 义无反顾 久经沙场 谈笑自若 身先士卒身经百战 智勇双全 闻鸡起舞 勇往直前 视死如归 单枪匹马 所向披靡 坚贞不屈 路见不平,拔刀相助 过关斩将 正气凛然、血气方刚、不屈不饶、舍身取义、一身正气、刚正不阿、无所畏惧、气冲牛斗、气冲霄汉、气壮山河、气宇轩昂、气吞山河、正气凛然、龙骧虎步、百战百胜、冲锋陷阵、英姿焕发、奋不顾身、奋勇当先、顶天立地、昂首挺胸、昂首阔步、赴汤蹈火、挺身而出、临危不惧、威震天下、勇冠三军、骁勇善战、镇定自若、慷慨就义、大智大勇、仰不愧天、力挽狂澜、光明磊落、义无反顾、久经沙场、身先士卒、身经百战、智勇双全、勇往直前、视死如归、所向披靡、坚贞不屈、有勇有谋、一身正气、羽扇纶巾

⑨ sql语句编程

大致上就是有一个dbo.mf_mm数据表
例如,现在数据库中的内容是:
mm_dd mrp_no prd_name qty dep
2006-03-01 NO1 衣物 1000 111
2006-03-01 NO2 纸张 2000 111
2006-03-02 NO3 鞋帽 3000 112
2006-03-03 NO1 衣物 2000 111
.........................................
以上no的数量有上千种,同种NO对应同种NAME,每一个dd都会对应有一笔qty.
我现在想要在数据导出后,成为一个统计数据,即所有的同种no的qty进行汇总,最后成为
mrp_no prd_name qty dep
no1
no2
...
大致上就是有一个dbo.mf_mm数据表
例如,现在数据库中的内容是:
mm_dd mrp_no prd_name qty dep
2006-03-01 NO1 衣物 1000 111
2006-03-01 NO2 纸张 2000 111
2006-03-02 NO3 鞋帽 3000 112
2006-03-03 NO1 衣物 2000 111
.........................................
以上no的数量有上千种,同种NO对应同种NAME,每一个dd都会对应有一笔qty.
我现在想要在数据导出后,成为一个统计数据,即所有的同种no的qty进行汇总,最后成为
mrp_no prd_name qty dep
no1
no2
...
大致上就是有一个dbo.mf_mm数据表
例如,现在数据库中的内容是:
mm_dd mrp_no prd_name qty dep
2006-03-01 NO1 衣物 1000 111
2006-03-01 NO2 纸张 2000 111
2006-03-02 NO3 鞋帽 3000 112
2006-03-03 NO1 衣物 2000 111
.........................................
以上no的数量有上千种,同种NO对应同种NAME,每一个dd都会对应有一笔qty.
我现在想要在数据导出后,成为一个统计数据,即所有的同种no的qty进行汇总,最后成为
mrp_no prd_name qty dep
no1
no2
...
大致上就是有一个dbo.mf_mm数据表
例如,现在数据库中的内容是:
mm_dd mrp_no prd_name qty dep
2006-03-01 NO1 衣物 1000 111
2006-03-01 NO2 纸张 2000 111
2006-03-02 NO3 鞋帽 3000 112
2006-03-03 NO1 衣物 2000 111
.........................................
以上no的数量有上千种,同种NO对应同种NAME,每一个dd都会对应有一笔qty.
我现在想要在数据导出后,成为一个统计数据,即所有的同种no的qty进行汇总,最后成为
mrp_no prd_name qty dep
no1
no2
...
大致上就是有一个dbo.mf_mm数据表
例如,现在数据库中的内容是:
mm_dd mrp_no prd_name qty dep
2006-03-01 NO1 衣物 1000 111
2006-03-01 NO2 纸张 2000 111
2006-03-02 NO3 鞋帽 3000 112
2006-03-03 NO1 衣物 2000 111
.........................................
以上no的数量有上千种,同种NO对应同种NAME,每一个dd都会对应有一笔qty.
我现在想要在数据导出后,成为一个统计数据,即所有的同种no的qty进行汇总,最后成为
mrp_no prd_name qty dep
no1
no2
...
大致上就是有一个dbo.mf_mm数据表
例如,现在数据库中的内容是:
mm_dd mrp_no prd_name qty dep
2006-03-01 NO1 衣物 1000 111
2006-03-01 NO2 纸张 2000 111
2006-03-02 NO3 鞋帽 3000 112
2006-03-03 NO1 衣物 2000 111
.........................................
以上no的数量有上千种,同种NO对应同种NAME,每一个dd都会对应有一笔qty.
我现在想要在数据导出后,成为一个统计数据,即所有的同种no的qty进行汇总,最后成为
mrp_no prd_name qty dep
no1
no2
...

⑩ 优化SQL有什么方法

在数据库应用系统中编写可执行的SQL语句可以有多种方式实现,但哪一条是最佳方案却难以确定。为了解决这一问题,有必要对SQL实施优化。简单地说,SQL语句的优化就是将性能低下的SQL语句转换成达到同样目的的性能更好的SQL语句。

优化SQL语句的原因

数据库系统的生命周期可以分成: 设计、开发和成品三个阶段。在设计阶段进行优化的成本最低,收益最大。在成品阶段进行优化的成本最高,收益最小。如果将一个数据库系统比喻成一座楼房,在楼房建好后进行矫正往往成本很高而收效很小(甚至可能根本无法矫正),而在楼房设计、生产阶段控制好每块砖瓦的质量就能达到花费小而见效高的目的。

为了获得最大效益,人们常需要对数据库进行优化。数据库的优化通常可以通过对网络、硬件、操作系统、数据库参数和应用程序的优化来进行。根据统计,对网络、硬件、操作系统、数据库参数进行优化所获得的性能提升全部加起来只占数据库应用系统性能提升的40%左右,其余60%的系统性能提升全部来自对应用程序的优化。许多优化专家甚至认为对应用程序的优化可以得到80%的系统性能提升。因此可以肯定,通过优化应用程序来对数据库系统进行优化能获得更大的收益。

对应用程序的优化通常可分为两个方面: 源代码的优化和SQL语句的优化。由于涉及到对程序逻辑的改变,源代码的优化在时间成本和风险上代价很高(尤其是对正在使用中的系统进行优化) 。另一方面,源代码的优化对数据库系统性能的提升收效有限,因为应用程序对数据库的操作最终要表现为SQL语句对数据库的操作。

对SQL语句进行优化有以下一些直接原因:

1. SQL语句是对数据库(数据) 进行操作的惟一途径,应用程序的执行最终要归结为SQL语句的执行,SQL语句的效率对数据库系统的性能起到了决定性的作用。

2. SQL语句消耗了70%~90%的数据库资源。

3. SQL语句独立于程序设计逻辑,对SQL语句进行优化不会影响程序逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低。

4. SQL语句可以有不同的写法,不同的写法在性能上的差异可能很大。

5. SQL语句易学,难精通。SQL语句的性能往往同实际运行系统的数据库结构、记录数量等有关,不存在普遍适用的规律来提升性能。

传统的优化方法

SQL程序人员在传统上采用手工重写来对SQL语句进行优化。这主要依靠DBA或资深程序员对SQL语句执行计划的分析,依靠经验,尝试重写SQL语句,然后对结果和性能进行比较以试图找到性能较佳的SQL语句。这种做法存在着以下不足:

1. 无法找出SQL语句的所有可能写法。很可能花费了大量的时间也无法找到性能较佳的SQL语句。即便找到了某个性能较佳的SQL语句也无法知道是否存在性能更好的写法。

2. 非常依赖于人的经验,经验的多寡往往决定了优化后SQL语句的性能。

3. 非常耗时间。重写-->校验正确性-->比较性能,这一循环过程需要大量的时间。

根据传统的SQL优化工具的功能,人们一般将优化工具分为以下三代产品:

第一代的SQL优化工具是执行计划分析工具。这类工具对输入的SQL语句从数据库提取执行计划,并解释执行计划中关键字的含义。

第二代的SQL优化工具只能提供增加索引的建议,它通过对输入的SQL语句的执行计划的分析来产生是否要增加索引的建议。这类工具存在着致命的缺点——只分析了一条SQL语句就得出增加某个索引的结论,根本不理会(实际上也无法评估到)增加的索引对整体数据库系统性能的影响。

第三代工具是利用人工智能实现自动SQL优化。

人工智能自动SQL优化

随着人工智能技术的发展和在数据库优化领域应用的深入,在20世纪90年代末优化技术取得了突破性的进展,出现了人工智能自动SQL优化。人工智能自动SQL优化的本质就是借助人工智能技术,自动对SQL语句进行重写,找到性能最好的等效SQL语句。LECCO SQL Expert就采用了这种人工智能技术,其SQL Expert支持Oracle、Sybase、MS SQL Server和IBM DB2数据库平台。其突出特点是自动优化SQL语句。除此以外,还可以以人工智能知识库“反馈式搜索引擎”来重写SQL语句,并找出所有等效的SQL语句及可能的执行计划,通过测试运行为应用程序和数据库自动找到性能最好的SQL语句,提供微秒级的计时; 能够优化Web应用程序和有大量用户的在线事务处理中运行时间很短的SQL语句; 能通过比较源SQL和待选SQL的不同之处,为开发人员提供“边做边学式训练”,迅速提高开发人员的SQL编程技能等等。

该工具针对数据库应用的开发和维护阶段提供了数个特别的模块:SQL语法优化器、PL/SQL集成化开发调试环境(IDE)、扫描器、数据库监视器等。其核心模块之一“SQL 语法优化器”的工作原理大致如下:输入一条源SQL语句,“人工智能反馈式搜索引擎”对输入的SQL语句结合检测到的数据库结构和索引进行重写,产生N条等效的SQL语句输出,产生的N条等效SQL语句再送入“人工智能反馈式搜索引擎”进行重写,直至无法产生新的输出或搜索限额满,接下来对输出的SQL语句进行过滤,选出具有不同执行计划的SQL语句(不同的执行计划意味着不同的执行效率),最后,对得到的SQL语句进行批量测试,找出性能最好的SQL语句(参见下图)。

图 人工智能自动SQL优化示意图

LECCO SQL Expert不仅能够找到最佳的SQL语句,它所提供的“边做边学式训练”还能够教会开发人员和数据库管理员如何写出性能最好的SQL语句。LECCO SQL Expert的SQL语句自动优化功能使SQL的优化变得极其简单,只要能够写出SQL语句,它就能帮开发人员找到最好性能的写法。

小 结

SQL语句是数据库应用中一个非常关键的部分,它执行性能的高低直接影响着应用程序的运行效率。正因为如此,人们在SQL语句的优化上投入了很大的精力,出现了许多SQL语句优化工具。随着人工智能等相关技术的日益成熟, 肯定还会有更多更好的工具出现,这将会给开发人员提供更多的帮助。