山东大学经济学院数据库与程序设计复习材料Word格式文档下载.docx
《山东大学经济学院数据库与程序设计复习材料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《山东大学经济学院数据库与程序设计复习材料Word格式文档下载.docx(73页珍藏版)》请在冰点文库上搜索。
set@yz=100*0.12+(@w-100)*0.05
print'
邮件的重量是:
+cast(@wasvarchar(20))+'
克'
邮费是:
+cast(@yzasvarchar(20))+'
元'
输入x的值,x>
=1时,输出1,否则输出-1
declare@xint
set@x=-0.5
if@x>
=1
print'
1'
-1'
=1时,输出1,0<
=x<
1时,输出0,否则输出-1.
declare@xfloat
set@x=2
else
=0
0'
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
continue
*/
test'
)
end
在查询里面执行上面的语句和把注释去再运行对比就知道了有continue时print('
)不会执行
第四周函数例题
printlen(4+2)
printlen('
4+2'
I'
maboy'
'
a'
山大'
printdatalength('
prtintdatalength('
declare@tnochar(10)
set@tno='
01234567'
printdatalength(@tno)
printlen(@tno)
declare@tnovarchar(10)
declare@tnonchar(10)
declare@tnonvarchar(10)
例2-1
DECLARE@tnonchar(10),@tnamenvarchar(20),@tdeptnvarchar(30);
SELECT@tno=N'
012567'
@tname=N'
ZhangHua'
@tdept=N'
Management'
PRINT'
No.:
+@tno
Name:
+@tname
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
printright('
4)山东大学
q'
+ltrim('
abc'
)qabc
printrtrim('
abc'
)+'
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@p=1
=10
set@p=@p*@i
set@s=@s+@p
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!
set@m1=@n1
set@n1=@r
set@r=@m1%@n1
printstr(@m)+'
和'
+str(@n)+'
的最大公约数为:
+str(@n1)
的最小公倍数为:
+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
set@t=@m
set@m=@n
set@n=@t
3、找出0~999之间所有的等于其各位数字立方和的数。
declare@nint,@aint,@bint,@cint
set@n=0
while@n<
=999
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
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
本题中结果有不符合实际的情况。
改进
If5*@x+3*@y+(100-@x-@y)/3=100and(100-@x-@y)%3=0
Select@xas公鸡,@yas母鸡,100-@x-@yas小鸡
第七周函数例题
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'
printdatediff(mm,'
printdatediff(yy,'
其中2010年9月17日的有效格式为:
、'
09/17/2010'
0917,2010'
、'
09,172010'
09172010'
根据上面的函数,假设2012年7月1日放暑假,计算还有多少天放暑假
printdatename(dd,'
20110501'
printdatename(mm,'
printdatename(yy,'
比较以下的区别
)+3前一个是字符串+数字字符串+数字为数字型
3'
后一个是字符串+字符串
printdatepart(dd,'
printdatepart(mm,'
printdatepart(yy,'
printdatepart(dy,'
)一年的第几天
)+3运算结果为数字型
运算结果为数字型
printday(getedate())
printmonth(getedate())
printyear(getedate())
printcast('
asnchar(10))+'
20110501q
asnvarchar(10))+'
20110501q
printcast(3asnchar
(2))+'
3q
printconvert(varchar(20),getdate(),21)
printconvert(varchar(20),getdate())
printconvert(varchar(20),3)
printday(getdate())
printmonth(getdate())
printyear(getdate())
看看下列的命令执行结果是多少,要会分析
printday(getdate()+3)
printmonth(getdate()+3)
printyear(getdate()))+3
第7—9周课本例题及补充
例1
Createdatabasestudentonprimary(name=student,filename='
d:
\1234\student.mdf'
size=3,maxsize=unlimited,filegrowth=10%)
Logon(name=student_log,filename='
\1234\student_log.ldf'
size=4,maxsize=unlimited,filegrowth=10%)
注意扩展名不能省略
例2
alterdatabasestudentaddfile(name=student_1,filename='
\1234\student_1.ndf'
size=5MB,maxsize=100MB,filegrowth=5MB)
go
alterdatabasestudentaddlogfile(name=student_1_log,filename='
\1234\student_1_log.ldf'
注意扩展名不能省略,go可以去掉
例3
Usestudent
Go
Alterdatabasestudentmodifyfile(name=student_1,size=20MB)
注意必须使用逻辑名称name
例4
Alterdatabasestudentremovefilestudent_1.ndf
应该去掉.ndf才对,如果是删除日志文件,文件名称为student_1_log
例5
Execsp_renamedb'
student'
studentls'
例6
Alterdatabasestudentlsmodifyname=student
删除数据库(注意一般不要删除)
Dropdatabasestudent
例10
Executesp_helpstudent
例12
Altertablecoursealtercolumncnamenvarchar(50)
例13
Altertablecourseaddpre_cnonvarchar(3)null
例14
Altertablestudentdropcolumnls
例16
Droptablesclyls
例18
Insertintocoursevalues('
c01'
N'
大学计算机基础'
3,null)
例19
Insertintocourse(cname,pre_cno,ccredit,cno,csemester)values(N'
C语言'
4,'
c02'
2'
建立student数据库
Student表命令建立法
Createtablestudent(snonvarchar(7)notnullprimarykey,snamenvarchar(10)notnull,ssexnvarchar
(1),sdeptnvarchar(20)notnull,shifobit,sresumetext,sbirthdaydatetime)
使用t-sql语句创建course表结构
Createtablecourse(cnonvarchar(3)notnullprimarykey,cnamenvarchar(30)notnullunique,csemesternvarchar
(1),ccreditintnotnull,pre_cnonvarchar(3))
有关SC表的建立办法
例9:
方法一
Createtablesc6(snonvarchar(7)notnullforeignkeyreferencesstudent(sno),cnonvarchar(3)notnullforeignkeyreferencescourse(cno),gradedecimal(4,1)notnullcheck(