[
3iltertablftStudentadd.Statur&nuifL&ric(4,2-check5ta,tiir-e<=3
*1
111
命令已成功完成&
check(Stature
<=3.0andStature>=0)
b.给Student表增加所在系Sdept列,字符型,长度2,不允许为空值。
altertableStudent
addSdeptchar
(2)notnull
c.给Student表增加邮政篇码Postcode列,字符型,长度为6,可以为空,若不为空时,则要求其值只能出现数字,不能是其它字符。
altertableStudentaddPostcodechar(6)check(PostcodeLike'[1-9][0-9][0-9][0-9][0-9][0-9]'
&QLQueryl.s<)l-(zqy-PC\zRy(弓為尸▼
EJtatleStud&nc
add.Pcsrcodechar6i
-check:
iarcadeLike*[1-9][0-9][0-9][0-9][0-9](0-9)1>
消息
命令已成切完成。
d.删除Student表中身高Stature列。
①、添加Stature列时就已知该列存在约束条件,若要删除该列,必须先删除约束条件,则
首先必须先找出约束条件的约束名称。
以下有两种方法:
1写入SQ语句找出
altertableStudent
dropcolumnStature
2、运用企业管理器找出
a、打开Student表
b、选择Stature行,单击右键,选择“CHEC约束”
-—
心二
F耳砂g£3ma〒亠眼肯|
tj&<•
•亠尊昌
>JB»田□Hart丑心Jr出ii息*畑•J山jif田m早THUjvn
jFf
c、约束名称显而易见
□關)
亲达式([Stature]<^(3,0]AMD[Stature]*^(0))
□表谕计器
遅制用于INSERT可UPDATE昙
捋制用于复制异
拄创建或重新启用时碍睁或昙
2、其次删除Stature约束
*I出
百消息
命令已成功気成。
3、最后删除Stature列,完成
altertableStudent
dropcolumnStature
SQLQueryXsql-ZQr»(jqy-PC\zqy(52)}*
Elalcerrable5匸;匸
1-|iropcolumn5匸atuie
*Irrr
斷肖息
命令已成功完成
(2)添加和删除约束
a.在Student表添加约束:
入学时间必须在出生年月之后
altertable
Student
《Entrancedate)
命令已成功完成口
SQLQueryLsql-Z^Czqy-PC\zqy(54]尸aftlcertableStmdenc
addcanstraint:
birrtil
-checfci
b.给SC表的成绩Grade列增加默认值约束,默认值为0
altertableSC
addconstraintgradel
default('O')forgrade
&QLQuerylrsql-ZQm(zqyPC\zqy(54))"曰altercebleSC
addconstrain匸gradeldefaulti1O'>forgrade|
扌1
irr
]消息
命令已成功完成7
c.删除Grade列的默认值约束锁定Grade列的约束名即可
altertableSC
dropconstraintgradel
fQLQueryl^ql-ZQ.„(jqy-PC\jqy(54))
□alc&rtable3匚
Ldropconstraint
4
1.IH
J消息
命令已成功完成。
(grade1为约束名)
4、通过SQ语句添加、修改、删除表中数据
(1)插入数据
a.Student表、Course表、SC表的记录见实验一的表5、表6、表7,其它数据可自行添加。
要求Student表和SC表中数据包括了每位同学自己的学号。
①、向Student表中添加数据
,‘1993-05-11','061',‘2011-09-01'
-3Q-.(aqy(MJ)*2Q\-PC.S-tudw^tj-Hbo血"E$QLG利『缜*1▼ZQ“;科尸兀^耳片〔51『<—、
EL
■unFtxxitE>stuoentvalun(b1f13DI1-0JcS8>23D4131);
LiiaeFtistgSruden匸val^e.9(•£口《■「**虹"*”左日."】會与1-1二一二2"rPD51",■2011-ga-Ql■P1'CS1rricroaiQ1:
i;
i^-sertxiit口^Undentvaluu("^01101031,电青*rd舅WfSB-B弓_:
il?
F.204!
1_口&-白九・子
i沽总
L1预宋响
L3侵盎响
L耳義嶷响
注意:
Sdep啲类型为char
(2),添加数据是不能写“计算机系”和“软件工程”,应改为“CS”
insert
into
Course
values
('001'
'高数’,’96','6');
insert
into
Course
values
('002'
'C语言程序设计’,’80','5');
insert
into
Course
values
('003'
'JAVA语言程序设计’,’48','3');
insert
into
Course
values
('004'
'VisualBasic','48','4');
②、向Course表中添加数据
和“MS”
SQLQueryS.s.ql-ZQ._(i<[y-PC\aqy(51))*|=
日=匸匚InCQ二吕U辛味丄“:
导(「0:
二'』'高敌F'含F';
insertintoboursevaluesC*002','C语言卡呈序设计','30','5'j;inser匸into二口口rseval口皂s7笛轴吾言程序设计JVJ护);
-insertinto匚ouzsevalues(r004Ff1VisualSasicrf*43r,14F:
|
1Irr,I
冷消息
(1行旻軫向)
门行受影响】
\1行受談向)
行受夥响)
③、向SC表中添加数据
insert
into
SC
values
('20050001'
'001'
89);
insert
into
SC
values
('20110001'
'001'
89);
insert
into
SC
values
('20110001'
'002'
78);
insert
into
SC
values
('20110001'
'003'
89);
insert
into
SC
values
('20110002'
'002'
60);
insert
into
SC
values
('20110103'
'001'
80);
(QLQutyJ-2Q.(aq/POjqy(51))'
iriF»Tt
St
-v4luB3b^C-C5口:
s
P-001b
蚀;
1113axz
SC
vglue塔■5G,15.JL■
F"
0^1:
inss-rt
1Zita
sc
vel-e-^CllCriDL
p"D32r
7S);
lugart;
IZLtS
sc
valuesf2C_l
P*DJ3r
rr
SJl:
inj-szt
inta
sc
nlued|*50L105028
r*DM・
州;
inseTr
120
sc
^aiveaip2Qiiaig3B
r*DOIP
J
「:
犒.
消目需別出慣壬。
.第1行—.-
二ELSmjOHHIQKZiT"ax_5C_S!
»_143C:
-E23*ja^o谨冲突麦生;址朴匚TuudonjLafo^y未FJbQ「勺二「Mluim'Eno3.
2^3&止*
i行寿沏
i升壹5皿
i行网淋
If亍欝加
i行貝術
上面截图所示的外键约束可不予考虑
b.执行如下语句:
insertintoStudent(Sno,Sname.Sex)values(20101101;'赵青','男'),
该语句能成功执行吗?
为什么?
答:
不能成功执行,因为不能将值NULL插入列'Sdept'中
c.
执行如下语句:
insertintoscvalues(20110103','005',80),该语句能成功执行吗?
为什么?
答:
不能成功执行,因为SC表中的学号“005”的同学在Course表中不存在。
而S(表中的Cno是作为Course表的外键存在的,所以不能成功执行。
SQLQwyltql-ZQ(B|X-pcW云時皿匚此ipto>=■valises011C10^'J'005V.0J[
(i
摘巨n寸、怨别g狀走—爭匚行
U1SXEII语切芦ZRXmKXX^]^,FK_B£_G,M_lS10BirK*冲字”瀛即零发尘干数]glX'r说0IW_A=fiT.表”3軋匚理砂屮-"・皿'Cea".,语旬已EhN
(2)修改数据
a.使用T-SQL语句,将Course表中的课程号为’002'的学分改为4,总学时改为64。
updateCourse
setCredit=4
whereCno='002'
SQLQuery2.sqI-2Q…(門丫-丁Bupdate匚
ser2:
zedit=4
-whereCnc=rC02'|
由消息
ii行受影响】
updateCourse
setTotal_perior=64
whereCno='002'
|i
;QLqu总ryA=ql-ZQ...(zqy-P
三upda匸亡Course
m色匸TotalDar^c*-64
-whereCnc=fG02"
cx^qy(ss)>*
*1
-J消息
U行受黔响)
结果:
□01
高数
5
□02
匚语言程厚役计
◎
003
^3
3
004
VisualBasic
斗
b.使用T-SQL语句,将SC表中的选修了002'课程的同学的成绩*80%。
updateSC
setGrade=Grade*0.8
whereCno='002'
[
<1
匚QLQueiy£sql-ZQ^Uq/-PC\ac
三updateSC
secGrade=Grade*D<8
where匚no-'002'|
]消息
£行受影响I
结果:
20110001
20110001
001
002
Q9
20110001
003
的
20110002
002
帶
20110103
001
83
MJLL
M.L
AU£
(3)删除数据
a.使用T-SQL语句,删除选修了C语言程序设计”的学生的选课记录。
-ZQr..(iqy-PC\zqySQLQu&ryl.cql■ZQ.,.(iqy-?
C\zqy(5
曰delet-efrom
wliere匚:
i0[异
iselect亡noCramCourse
-where^nair.e=TB■吾言程序设计T
彳E!
消息517,级别旳状态Q,第;L行.
QEIET2语句与HEFER'EtlCE约束"FKSG_Cnc_L920E詐匚";中突。
该冲突发注谱句已终止。
_
删除时,发现存在外键约束,且约束名为FK__SC__Cno__1920BF5C,则先删除约束
删除约束:
altertableSC
dropconstraintFK__SC__Cno__1920BF5C
SQLQuery2門
曰altertable5G
dropconstraintFKSC_Cno_15Z0BF5C
恰磊息
命令已成喉成。
删除记录:
deletefromCourse
whereCnoin
(selectCnofromCourse
whereCname='c语言程序设计')
E
;QLqueryZ=q"-ZQ.J.(zqy-PC\zqy
3deleteIron:
Course
where^noin
selectCnoEroir.Course
LwhereCname='c语台程序设计T
4
1
由消息]
厲行受影响】
结果:
Cno
Cname
Total_perior
Credit
001
刹
96
6
003
JAVAil言程瘙…
40
3
cm
VisualBasic
43
4
NU.L
NULL
MJIL
MJLL
b.使用T-SQL语句,删除所有的学生选课记录。
deletefromSC
SQLQueryl^qI-ZQ^fzqy-F
deleueframSC
弓
A消息|
(5行受影响)
结果:
5no
Cno
Grade
米
NLA1
M.L
说明:
删除后,请重新插入SC表中的记录。
同第4题③所示步骤相同,
insert
into
SC
values
('20050001'
'001'
89);
insert
into
SC
values
('20110001'
'001'
89);
insert
into
SC
values
('20110001'
'002'
78);
insert
into
SC
values
('20110001'
'003'
89);
insert
into
SC
values
('20110002'
'002'
60);
insert
into
SC
values
('20110103'
'001'
80);
ZQV-PC.Studentjn^a-dboS匚>tQLQueryl.sql-Z^..(jqy-PC\2qy(S:
曰insert
into
5C
valuesi
'2C'^500C01',89;
insert
lat□
5亡
TT3.1nes〔
-30110001*F*001・w;
inser匸
into
SC
values(
^DLLDOCH1「0021f78;j
ijiseirc
inta
£匚
valueai
'^OllOOOl1f'003'r89;
insert
intc
SC
valu.es
70L8GWJO外g;
-insert
intc
sc
3i
如二f、0QXf&□;
*I
消息
消息冷,级別ie;状态山第l行
切亚“语句与KZY约東”F£_£I2_Sue_192C9B231'冲突。
语句已终止。
"行賀毙响、
(1行受冒响)
(1行受影响)
(1行受影响)
(1行劭劈响)
结果:
LNyPPCStud«rt」nfb-dbaJC匚/问口也jjfllr牡回
Sno
Cno
Grade
卜
20L10001
001
的
2DLLQ001
002
78
20110001
003
69
20L1000Z
002
60
20LI0103
001
60
AL4Z
屉{上