山东大学经济学院数据库与程序设计复习材料.docx

上传人:b****3 文档编号:4680003 上传时间:2023-05-07 格式:DOCX 页数:73 大小:36.49KB
下载 相关 举报
山东大学经济学院数据库与程序设计复习材料.docx_第1页
第1页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第2页
第2页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第3页
第3页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第4页
第4页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第5页
第5页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第6页
第6页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第7页
第7页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第8页
第8页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第9页
第9页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第10页
第10页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第11页
第11页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第12页
第12页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第13页
第13页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第14页
第14页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第15页
第15页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第16页
第16页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第17页
第17页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第18页
第18页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第19页
第19页 / 共73页
山东大学经济学院数据库与程序设计复习材料.docx_第20页
第20页 / 共73页
亲,该文档总共73页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

山东大学经济学院数据库与程序设计复习材料.docx

《山东大学经济学院数据库与程序设计复习材料.docx》由会员分享,可在线阅读,更多相关《山东大学经济学院数据库与程序设计复习材料.docx(73页珍藏版)》请在冰点文库上搜索。

山东大学经济学院数据库与程序设计复习材料.docx

山东大学经济学院数据库与程序设计复习材料

程序设计的一般步骤

第一步,定义需要用到的局部变量

第二步,给局部变量赋初值

第三步,while语句,设置循环的条件

第四步,循环体(循环体begin开始,end结束)

第五步,输出结果

程序设计中需要注意的问题

1、while语句也可以多次使用,分别是二重和三种循环

2、begin和end语句可以嵌套使用,不能交叉,要成对出现

3、内循环的初始值的赋值一般要在外循环的内侧和内循环whiile语句的外侧

4、数字运算时,特别要考虑一下除法(/)运算的结果是否是整数

5、上述一般步骤的第四步和第五步不是完全分割的,如果程序有多个(多组)结果的话,一般第五步就放在第四步中了。

6、程序执行的结果如果局部变量有多个,要在同一行输出,注意使用select语句,不要使用print语句。

7、数字的结果要和字符串放在一起时,注意使用类型转换函数(str和cast,两种函数的具体格式一定要清楚)。

 

控制语句

计算1到100的和。

declare@iint,@sint

set@i=1

set@s=0

while@i<=100

begin

set@s=@s+@i

set@i=@i+1

end

print@s

--看看是否有问题

print'1到的和为:

'+@S

邮件的邮资问题:

如果邮件的重量100克以下(包括100克),费率为0.12元/克,超出部分按0.05元/克,输入一个重量,计算相关的邮费。

注意:

SQL2005没有从键盘接收输入的值的功能。

declare@yzint,@wint

set@w=120

if@w<=100

set@yz=@w*0.12

else

set@yz=100*0.12+(@w-100)*0.05

print'邮件的重量是:

'+cast(@wasvarchar(20))+'克'

print'邮费是:

'+cast(@yzasvarchar(20))+'元'

输入x的值,x>=1时,输出1,否则输出-1

declare@xint

set@x=-0.5

if@x>=1

print'1'

else

print'-1'

输入x的值,x>=1时,输出1,0<=x<1时,输出0,否则输出-1.

declare@xfloat

set@x=2

if@x>=1

print'1'

else

if@x>=0

print'0'

else

print'-1'

break和continue例题

declare@aint,@bint

SELECT@a=1,@b=34

while@a<10

begin

SELECT@b=@b+1

print('a='+convert(varchar(10),@a)+',b='+convert(varchar(10),@b))

SELECT@a=@a+1

/*

if@b>38

break

else

continue

*/

print('test')

end

在查询里面执行上面的语句和把注释去再运行对比就知道了有continue时print('test')不会执行

第四周函数例题

printlen(4+2)

printlen('4+2')

printlen('I''maboy')

printlen('')

printlen('')

printlen('a')

printlen('山大')

printdatalength('')

printdatalength('a')

prtintdatalength('山大')

declare@tnochar(10)

set@tno='01234567'

printdatalength(@tno)

printlen(@tno)

declare@tnovarchar(10)

set@tno='01234567'

printdatalength(@tno)

printlen(@tno)

declare@tnonchar(10)

set@tno='01234567'

printdatalength(@tno)

printlen(@tno)

declare@tnonvarchar(10)

set@tno='01234567'

printdatalength(@tno)

printlen(@tno)

例2-1

DECLARE@tnonchar(10),@tnamenvarchar(20),@tdeptnvarchar(30);

SELECT@tno=N'012567',@tname=N'ZhangHua',@tdept=N'Management'

PRINT'No.:

'+@tno

PRINT'Name:

'+@tname

PRINT'Deptment:

'+@tdept+'School'

例2位运算符及表达式举例

32进制00000011

92进制00001001

select3&9and运算最后一位都是1结果为1

select3|9or运算倒数1、2、4位都是1结果为11

select3^9两者不相同(1与0)结果才是1,相同结果为0,所以结果为1010,也就是10

字符串函数

select'a'+space

(2)+'b'

selectreplicate('8',3),replicate('P',4)888pppp

DECLARE@nINT

SET@n=1

WHILE@n<=6

BEGIN

PRINTSPACE(11-@n)+REPLICATE('*',@N)

SET@n=@n+1

END

*

**

***

****

*****

******

第五周函数例题

printabs(4)

selectacos(0),acos

(1)

selectasin(0),asin

(1)

printatan(0)

selectceiling(2.2),ceiling(-2.2)

selectsin(0),sin(pi()/2),cos(pi()/2)注意函数pi()

selectfloor(2.2),floor(-2.2)

printexp

(2)

printlog(2.2)

printlog10(10)

printpower(3,2)

selectradians(70),radians(110),radians(120)注意取整数,不四舍五入

printrand()此函数为不确定函数

printround(3.1246,3)注意小数取位,对小数点后第四位四舍五入,第三位后的数全部变为0

printround(3.1246,2)注意小数取位

printround(3.1,2)小数位不足,数值保持不变

printsquare

(2)

printsqrt(4)

printsquare(3)

字符串函数

printascii('asd')97

printchar(66)B

printcharindex('as','bbasd')3

printleft('ab山东大学',4)ab山东

printreplace('abcdefg','cd','kkkk')abkkkkefg

selectreplicate('8',3),replicate('P',4)888pppp

printright('ab山东大学',4)山东大学

print'q'+ltrim('abc')qabc

printrtrim('abc')+'q'abcq

printspace(4)

printstr(3.123567,8,3)3.124

printsubstring('山东大学经济学院',3,2)结果为:

大学不是:

printunicode('ASD')A的ASCII码值65

printupper('abcd'),lower('ACD')

第六周函数例题

1、计算1!

+2!

+3!

+……+10!

declare@iint,@sint,@pint

set@i=1

set@s=0

set@p=1

while@i<=10

begin

set@p=@p*@i

set@s=@s+@p

set@i=@i+1

end

print@s

4037913

2、计算m和n两个正整数的最大公约数和最小公倍数(分m>=n、m和n大小不确定两种情况)

当m>n时,编程结果

declare@mint,@nint,@rint,@m1int,@n1int

set@m=216

set@n=14

set@m1=@m

set@n1=@n

set@r=@m1%@n1

while@r!

=0

begin

set@m1=@n1

set@n1=@r

set@r=@m1%@n1

end

printstr(@m)+'和'+str(@n)+'的最大公约数为:

'+str(@n1)

printstr(@m)+'和'+str(@n)+'的最小公倍数为:

'+str(@m*@n/@n1)

216和16的最大公约数为:

8

216和16的最小公倍数为:

432

当m和n大小不确定时,编程结果。

declare@mint,@nint,@tint,@rint,@m1int,@n1int

set@m=16

set@n=216

if@m<@n

begin

set@t=@m

set@m=@n

set@n=@t

end

set@m1=@m

set@n1=@n

set@r=@m1%@n1

while@r!

=0

begin

set@m1=@n1

set@n1=@r

set@r=@m1%@n1

end

printstr(@m)+'和'+str(@n)+'的最大公约数为:

'+str(@n1)

printstr(@m)+'和'+str(@n)+'的最小公倍数为:

'+str(@m*@n/@n1)

3、找出0~999之间所有的等于其各位数字立方和的数。

declare@nint,@aint,@bint,@cint

set@n=0

while@n<=999

begin

set@a=@n/100

set@b=(@n-100*@a)/10

set@c=@n-100*@a-10*@b

ifpower(@a,3)+power(@b,3)+power(@c,3)=@n

print@n

set@n=@n+1

end

0

1

153

370

371

407

4、二重循环举例

公鸡5元一只,母鸡3元一只,小鸡1元3只,百元买百鸡,问公鸡、母鸡、小鸡各多少只?

Declare@xint,@yint

Set@x=1

While@x<=20

Begin

Set@y=1

While@y<=33

Begin

If5*@x+3*@y+(100-@x-@y)/3=100

Select@x,@y,100-@x-@y

Set@y=@y+1

End

Set@x=@x+1

End

本题中结果有不符合实际的情况。

改进

Declare@xint,@yint

Set@x=1

While@x<=20

Begin

Set@y=1

While@y<=33

Begin

If5*@x+3*@y+(100-@x-@y)/3=100and(100-@x-@y)%3=0

Select@xas公鸡,@yas母鸡,100-@x-@yas小鸡

Set@y=@y+1

End

Set@x=@x+1

end

 

第七周函数例题

printdateadd(yy,5,getdate())

printdateadd(qq,5,getdate())加一个季度

printdateadd(mm,5,getdate())

printdateadd(ww,5,getdate())

printdateadd(dd,5,getdate())

printdatediff(dd,'20110903',getdate())

printdatediff(ww,'20100917',getdate())

printdatediff(mm,'20100917',getdate())

printdatediff(yy,'20100917',getdate())

其中2010年9月17日的有效格式为:

'20100917'、'09/17/2010'、'0917,2010'、'09,172010'

'09172010'

根据上面的函数,假设2012年7月1日放暑假,计算还有多少天放暑假

printdatename(dd,'20110501')

printdatename(mm,'20110501')

printdatename(yy,'20110501')

比较以下的区别

printdatename(dd,'20110501')+3前一个是字符串+数字字符串+数字为数字型

printdatename(dd,'20110501')+'3'后一个是字符串+字符串

printdatepart(dd,'20110501')

printdatepart(mm,'20110501')

printdatepart(yy,'20110501')

printdatepart(dy,'20110501')一年的第几天

比较以下的区别

printdatepart(dd,'20110501')+3运算结果为数字型

printdatepart(dd,'20110501')+'3'运算结果为数字型

printday(getedate())

printmonth(getedate())

printyear(getedate())

printyear(getedate())

printcast('20110501'asnchar(10))+'q'20110501q

printcast('20110501'asnvarchar(10))+'q'20110501q

printcast(3asnchar

(2))+'q'3q

printconvert(varchar(20),getdate(),21)

printconvert(varchar(20),getdate())

printconvert(varchar(20),3)

printdateadd(yy,5,getdate())

printdateadd(qq,5,getdate())加一个季度

printdateadd(mm,5,getdate())

printdateadd(ww,5,getdate())

printdateadd(dd,5,getdate())

printdatediff(dd,'20110903',getdate())

printdatediff(ww,'20100917',getdate())

printdatediff(mm,'20100917',getdate())

printdatediff(yy,'20100917',getdate())

其中2010年9月17日的有效格式为:

'20100917'、'09/17/2010'、'0917,2010'、'09,172010'

'09172010'

根据上面的函数,假设2012年7月1日放暑假,计算还有多少天放暑假

printdatename(dd,'20110501')

printdatename(mm,'20110501')

printdatename(yy,'20110501')

比较以下的区别

printdatename(dd,'20110501')+3前一个是字符串+数字字符串+数字为数字型

printdatename(dd,'20110501')+'3'后一个是字符串+字符串

printdatepart(dd,'20110501')

printdatepart(mm,'20110501')

printdatepart(yy,'20110501')

printdatepart(dy,'20110501')一年的第几天

比较以下的区别

printdatepart(dd,'20110501')+3运算结果为数字型

printdatepart(dd,'20110501')+'3'运算结果为数字型

printday(getdate())

printmonth(getdate())

printyear(getdate())

看看下列的命令执行结果是多少,要会分析

printday(getdate()+3)

printmonth(getdate()+3)

printyear(getdate()))+3

 

printcast('20110501'asnchar(10))+'q'20110501q

printcast('20110501'asnvarchar(10))+'q'20110501q

printcast(3asnchar

(2))+'q'3q

printconvert(varchar(20),getdate(),21)

printconvert(varchar(20),getdate())

printconvert(varchar(20),3)

 

第7—9周课本例题及补充

例1

Createdatabasestudentonprimary(name=student,filename='d:

\1234\student.mdf',size=3,maxsize=unlimited,filegrowth=10%)

Logon(name=student_log,filename='d:

\1234\student_log.ldf',size=4,maxsize=unlimited,filegrowth=10%)

注意扩展名不能省略

例2

alterdatabasestudentaddfile(name=student_1,filename='d:

\1234\student_1.ndf',size=5MB,maxsize=100MB,filegrowth=5MB)

go

alterdatabasestudentaddlogfile(name=student_1_log,filename='d:

\1234\student_1_log.ldf',size=5MB,maxsize=100MB,filegrowth=5MB)

go

注意扩展名不能省略,go可以去掉

例3

Usestudent

Go

Alterdatabasestudentmodifyfile(name=student_1,size=20MB)

注意必须使用逻辑名称name

例4

Alterdatabasestudentremovefilestudent_1.ndf

Go

应该去掉.ndf才对,如果是删除日志文件,文件名称为student_1_log

例5

Execsp_renamedb'student','studentls'

例6

Alterdatabasestudentlsmodifyname=student

 

删除数据库(注意一般不要删除)

Dropdatabasestudent

例10

Executesp_helpstudent

例12

Usestudent

Go

Altertablecoursealtercolumncnamenvarchar(50)

例13

Usestudent

Go

Altertablecourseaddpre_cnonvarchar(3)null

例14

Usestudent

Go

Altertablestudentdropcolumnls

例16

Usestudent

Go

Droptablesclyls

Go

例18

Usestudent

Go

Insertintocoursevalues('c01',N'大学计算机基础','1',3,null)

例19

Usestudent

Go

Insertintocourse(cname,pre_cno,ccredit,cno,csemester)values(N'C语言','c01',4,'c02','2')

建立student数据库

Createdatabasestudentonprimary(name=student,filename='d:

\1234\student.mdf',size=3,maxsize=unlimited,filegrowth=10%)

Logon(name=student_log,filename='d:

\1234\student_log.ldf',size=4,maxsize=unlimited,filegrowth=10%)

Student表命令建立法

Usestudent

Go

Createtablestudent(snonvarchar(7)notnullprimarykey,snamenvarchar(10)notnull,ssexnvarchar

(1),sdeptnvarchar(20)notnull,shifobit,sresumetext,sbirthdaydatetime)

 

使用t-sql语句创建course表结构

Usestudent

Go

Createtablecourse(cnonvarchar(3)notnullprimarykey,cnamenvarchar(30)notnullunique,csemesternvarchar

(1),ccreditintnotnull,pre_cnonvarchar(3))

有关SC表的建立办法

例9:

方法一

Usestudent

Go

Createtablesc6(snonvarchar(7)notnullforeignkeyreferencesstudent(sno),cnonvarchar(3)notnullforeignkeyreferencescourse(cno),gradedecimal(4,1)notnullcheck(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2