SQL-Server实用教程(第三版)实验3-表数据插入修改和删除.docx
SQL-Server实用教程(第三版) 实验3-表数据插入修改和删除实验3表数据插入、修改和删除1、目的与要求(1)学会在对象资源管理器中对数据库表进行插入、修改和删除数据操作。(2)学会使用TSQL语句对数据库表进行插入、修改和删除数据操作。(3) 了解数据更新操作时要注意数据完整性。2、实验内容(1)实验题目。分别使用对象资源管理器和T-SQL语句,向在实验2中建立的数据库YGGL 的三个表Employees、Departments和Salary中插入多行数据记录,然后修改 和删除一些记录。使用T-SQL语句进行有限制的修改和删除。(2)实验准备首先,了解对表数据的插入、删除、修改都属于表数据的更新操作。对表数 据的操作可以再对象资源管理器中进行,也可以由T-SQL语句实现。其次,要掌握T-SQL中用于对表数据的插入、删除和修改的命令分别是 INSERT> DELETE和UPDATE.另外还可以使用MERGE语句根据在一个表中找到的 差异在另一个表中插入、更新和删除行,可以对两个表进行信息同步。要特别 注意的是:在执行插入、修改、删除等数据更新操作室,必须保证数据完整性。此外,还要了解使用T-SQL语句在对表数据进行插入、修改以及删除时,比 在对象资源管理器中操作表数据更为灵活,功能更强大。在实验2中,用于实验的YGGL数据库中的3个表已经建立,现在要将各表的样 本数据添加到表中。样本数据如表T3.1、表T3.2和表T3.3所示。3、实验步骤(1)在对象资源管理器中初始化数据库YGGL中所有表的数据。在对象资源管理器中展开数据库YGGI/节点,选择要进行操作的表 iemployees右击鼠标,在弹出的快捷菜单上选择“编辑前200行”菜单项, 进入“表数据窗口”。在此窗口中,表中的记录按行显示,每个记录占一行。用户可通过“表数据窗 口”向表中加入表T3.1中的记录,输完一行记录后将光标移到下一行即保存了 上一行记录。用同样的方法向Departments和Salary表中分别插入表T3. 2和T3. 3中 的记录。注意:插入的数据要符合列的类型。试着在tinyint型的列中插入字符型数据 (如字母),查看发生的情况。 bit类型的列在用界面方式插入数据时只能插入True或False。True表 示1, False表示0不能插入两行有相同主键的数据。例如,如果编号为000001的员工信 息已经在Employees中存在,则不能向Employees表中再插入编号为000001的 数据行。【思考与练习】将3个样本数据表中的数据都存入到数据库YGGL的表中。(2)在对象资源管理器中修改数据库YGGL中的表数据。在对象资源管理器中删除表employees的第1行和Salary的第1行。注 意进行删除操作时作为两表主键的EmployeelD的值,以保证数据完整性。方法:在对象资源管理器中选择表employees,右击鼠标,在弹出的快捷菜单中 选择“编辑前200行”菜单项,在打开的“表数据”窗口中选中要删除的行, 右击鼠标,在弹出的快捷菜单中选择“删除”菜单项。Salary表中数据删除方法相同。在对象资源管理器中将表employees中编号为020018的记录的部门号改 成4o方法:在对象资源管理器中右击表employees,选择“编辑前200行”菜单项, 在“表数据”窗口中将光标定位至编号为020018的记录的Department ID字段, 将1改成4。将光标移出本行既保存了修改。(3)使用T-SQL命令插入表数据。向表Employees中插入步骤(2)中删除的一行数据,在“查询分析器” 窗口中输入以下T-SQL语句:单击快捷工具栏的“!执行”按钮,执行上述语句,在验证操作是否成功 时,可以在对象资源管理器中打开Employees表观察数据的变化。向表Salary插入步骤(2)中删除的一行数据。GIS06SQLEX. . .Qverr2. sql* 表-db。. EmployeesINSERT INTO Salary (iirtployeeID/ Inacrr-e OvicccKe) value3 (0C0CC,2100.8,123.09)J结果命令已成功完成.【思考与练习】INSERT INTO语句还可以通过SELECT子句来添加其他表中 的数据,但是SELECT子句中的列要与添加表的列数目和数据类型都一一对应。 假设有另一个空表Employees2,结构和Employees表相同,使用INSERT INTO 语句将Employees表中数据添加到Employees2中。语句如下: 查看Employees2表中的变化。(4)使用SQL命令语句修改表数据。使用SQL命令修改表Salary中某个记录的字段值:GISOGVSQLEI. . . Qery3. sl* ;表 二如。. Employees7 Xupdace salarysec inccir.e=3000 where einployee|lD=1 OOOOOL u结果命令已成功完成口执行上述语句,将编号为000001职工收入改为3000.将所有职工收入增加100:表二 dbo.Salarp 015065011 Query4. sql |- Xupda.ce salary_1ser incoir.e=inccme+2.00;虫结果谒令已菽完氤 执行完上述语句,打开Salary表查看数据的变化。可见,使用SQL语句操作表 数据比在界面管理工具中操作表数据更为灵活使用SQL命令删除表Employees中编号为000001的职工信息:|表 dbo. Employees GIS06VSQLEX.T 0uery5. sql丰delete from emplcyees77here employeeIDpOOOOOL1国结果命令已成功完成。删除所有女性员工信息:GISO&SQLEX. . . Query6. sql* 表-dbo. Employees delere from eiriployeessex=0< Ip5结果命令已成功完成"使用TRANCATE TABLE语句删除表中所有行:1 一.r- | GIS06 SQLEI.T7 Querr?. sql*GIS06SQLJEX.7. QueryG. sql*-RUNCATE 二A5二三 salary阚JillI岳 葭|命令已成功完成。执行上述语句,将删除Salary表中所有的行。创建一个employees3表,使用MERGE语句使Employees3表中的数据和Employees表中的数据同步。GISOBSOLEX. Q<erF6. s*GraJ6S9LE1 . .Query?, sol*/GISOGOSQLEX. . .nery6. s# MERGE INTO Enrloyeesi-usemg emp levees on eng icyees3 . employe eid=erpioyee 3. employee id when ira匕hen upd&e out eiployccoS. ane-crcployeco . rcir/sz eixployeesS , educauion-ertployees . educacion, er;ployee3 3 . hirchday=en;ployee3 . birthday,errrloyeesS .eex= emplcyees. sex,eircloveeso .wcrkyear= eirclovees .wcrkyeaizerrployees5 .adlress- ercployees . addressreirployeeS .phonznunfccr- employees.phonenuitfcer, errployccoS . deparmertid- employcco , dspartrccncid wher not matchedthen insert values ( en;ployee3 . enployeeid. en;ployee3 . nan;e, mployees .edueati enplcyees. birtreay, eniployees. sex, enrloyees .xorkyear, enplcyees. address, employees.pnonen,Jixberr enplcyees. depaxuxrjenwldwhen not matched by sourcezher. dcl2e;|II为结果命令已成功完成T4.思考与练习使用INSERTUPDATE语句将实验三中所有对表的修改回复到原来的状态以 方便在以后的实验中使用。