sql 实验二报告
- 格式:doc
- 大小:823.00 KB
- 文档页数:10
sql数据库实验报告目录1. 实验概述 (2)1.1 实验目的 (2)1.2 实验背景 (3)1.3 实验内容 (4)1.4 实验环境 (5)2. 数据库设计 (5)2.1 数据库概念 (6)2.2 表结构设计 (8)2.2.1 表1名称及字段定义 (9)2.2.2 表2名称及字段定义 (10)2.3 关系约束 (11)3. SQL语句操作 (12)3.1 数据插入 (13)3.2 数据查询 (14)3.2.1 根据条件查询 (15)3.2.2 聚合函数查询 (16)3.2.3 连接查询 (17)3.3 数据更新 (18)3.4 数据删除 (20)4. 实验结果展示 (21)4.1 SQL语句执行结果 (22)4.2 数据分析及解释 (22)4.2.1 查询结果的意义 (24)4.2.2 数据之间的关系性分析 (24)5. 实验总结与展望 (25)5.1 实验总结 (26)5.2 总结得到的经验与教训 (27)5.3 进一步研究建议 (29)1. 实验概述本实验旨在通过实践操作,实验内容涵盖了常见数据库操作,包括表创建、数据插入、查询、修改和删除。
通过完成实验,我们将学习如何使用SQL语句来管理和处理数据库数据,掌握常用的 SELECT、INSERT、UPDATE、DELETE 语句以及 JOIN 操作等,并熟悉数据库的操作流程和概念。
本实验旨在提升 SQL 数据库操作技能,并为后续更深入的数据库学习和应用打下基础。
您可以根据实际实验内容对以上段落进行修改和完善,具体修改点包括:明确实验的主题和目标,例如:实验主题可能是某个特定数据库管理系统(如MySQL、PostgreSQL等)的应用,目标可能是学习该数据库特定的功能特性。
1.1 实验目的本次实验旨在通过实际操作,验证和巩固SQL语言在关系型数据库管理中的应用能力,并加深对数据库设计、数据操作以及数据查询与分析的理解。
具体实验目的包括:学习SQL基础:掌握SQL语言的基本语法和常用命令,包括数据类型定义、表格创建、插入、更新和删除操作。
《数据库系统概论》实验报告题目:实验二(3)交互式SQL 语言姓名 Vivian 日期 2005-1-1实验内容及完成情况:(写出每一种类型的SQL测试用例)本实验中的表名、属性名全部用中文。
(一)数据定义一、基本表操作1.建立基本表1)创建仓库表,由以下属性组成:仓库号(CHAR型),城市(CHAR型),面积(INT型)。
其中仓库号为主码,并且有面积>0的限定条件。
CREATE TABLE 仓库(仓库号 CHAR(5) PRIMARY KEY,城市 CHAR(10),面积 INT CHECK(面积>0));2)创建职工表,由以下属性组成:仓库号(CHAR型),职工号(CHAR型),工资(INT 型)。
其中职工号为主码,仓库号为外码,工资的限定条件为1000<=工资<=5000,并且设定缺省值为1200。
CREATE TABLE 职工(仓库号 CHAR(5) REFERENCES 仓库(仓库号),职工号 CHAR(5) PRIMARY KEY,工资 INT CHECK (工资>=1000 AND 工资<=5000) DEFAULT 1200);或者:CREATE TABLE 职工(仓库号 CHAR(5) ,职工号 CHAR(5) PRIMARY KEY,工资 INT CHECK (工资>=1000 AND 工资<=5000) DEFAULT 1200,FOREIGN KEY (仓库号) REFERENCES 仓库(仓库号));3)创建供应商表,由以下属性组成:供应商号(CHAR型),供应商名(CHAR型),地址(CHAR型)。
其中供应商号为主码。
CREATE TABLE 供应商(供应商号 CHAR(5) PRIMARY KEY,供应商名 CHAR(20),地址 CHAR(20));4)创建订购单表,由以下属性组成:职工号(CHAR型),供应商号(CHAR型),订购单号(CHAR型),订购日期(CHAR型)。
数据库sql 实验报告数据库SQL实验报告1. 引言数据库是现代信息系统中不可或缺的组成部分,它提供了有效地存储和管理数据的能力。
结构化查询语言(SQL)是一种用于管理和操作关系型数据库的标准化语言。
本实验报告旨在通过实际操作和实验结果的分析,探讨SQL在数据库中的应用和效果。
2. 实验目的本次实验的主要目的是熟悉和掌握SQL语言的基本操作,包括数据的查询、插入、更新和删除等。
通过实验,我们可以进一步了解SQL语言的特点和使用方法,加深对数据库管理系统的理解。
3. 实验环境本次实验使用的数据库管理系统为MySQL,它是一种开源的关系型数据库管理系统。
MySQL提供了强大的功能和灵活的配置选项,被广泛应用于各种规模的应用程序中。
4. 实验步骤4.1 数据库连接在实验开始之前,我们首先需要建立与数据库的连接。
通过使用MySQL提供的连接函数,我们可以指定数据库的主机地址、用户名和密码等信息,以便进行后续的操作。
4.2 数据库创建在连接成功后,我们可以使用SQL语句创建一个新的数据库。
通过指定数据库的名称和字符集等属性,我们可以灵活地创建适合自己需求的数据库。
4.3 数据表创建数据库中的数据以表的形式进行组织和存储。
在本次实验中,我们将创建一个名为"students"的数据表,用于存储学生的基本信息。
通过指定表的字段和属性,我们可以定义每个字段的数据类型和约束条件。
4.4 数据插入在数据表创建完成后,我们可以使用SQL语句向表中插入数据。
通过指定插入的字段和对应的值,我们可以将具体的数据添加到表中。
在插入数据时,我们还可以使用事务来确保数据的完整性和一致性。
4.5 数据查询数据查询是SQL语言的核心功能之一。
通过使用SELECT语句,我们可以从表中检索所需的数据。
SELECT语句可以使用不同的条件和运算符进行过滤和排序,以满足不同的查询需求。
4.6 数据更新和删除除了查询,SQL语言还提供了更新和删除数据的功能。
实验二创建数据库和表一、目的和要求(1)了解SQL Server数据库的逻辑结构和物理结构。
(2)了解表达结构特点。
(3)了解SQL Server的基本数据结构。
(4)了解空值概念。
(5)学会在“对象资源管理器”中创建数据库和表。
(6)学会使用T-SQL语句创建数据库和表。
二、实验内容(1)创建一个新的数据库(2)再创好的数据库YGGL中创建数据表三、实验步骤1、在“对象资源管理器”创建数据库(1)创建数据库YGGL(2)删除YGGL数据库2、使用T-SQL语句创建数据库YGGL3、在“对象资源管理器”中创建表4、使用T-SQL语句创建表四、实验心得初步认识了数据库的建立和表结构的设置,明白的T-SQL编程的基本结构,实验过程中省去了些数据和相似的操作,比如实验4中队Employees表内部其他字段被我略去了。
实验三表数据的插入、修改和删除一、目的和要求(1)学会在“对象资源管理器”中对数据库表进行插入、修改和删除数据操作。
(2)学会使用T-SQL语句对数据库表进行插入、修改和删除数据操作。
(3)了解数据更新操作时要注意数据完整性。
二、实验内容分别使用“对象资源管理器”和T-SQL语句,向在实验2中建立的数据库YGGL 的3个表Employees、Departments、Salary中插入多行数据记录,然后修改和删除一些记录。
使用T-SQL语句进行有限制的修改和删除。
三、实验步骤1、使用界面初始化数据库YGGL中的所有表数据2、使用界面修改数据库YGGL中的表数据3、使用T-SQL命令插入表数据向表Employees中插入步骤2中删除的第一行数据4、使用T-SQL命令修改表数据(1)使用T-SQL命令修改Slary中某个记录的字段值(2)将所有员工的收入增加100(3)使用SQL命令删除表Employees中编号为000001的职工信息四、实验心得学习到如何使用T-SQL语句对数据库表中数据进行修改、插入和删除部分数据,如:插入数据(INSERT INTO ***);修改数据(SET **=);删除表中部分数据(DELETE FROM***)以及使用WHERE命令确定所要进行操作数据的位置。
数据库SQL实验报告__数据库的基本操作一、实验目的1.理解数据库SQL语言的基本操作;2.学会使用数据库SQL语言进行数据的增删改查操作。
二、实验环境1. 操作系统:Windows 10;2.数据库管理系统:MySQL;3. 开发工具:Navicat for MySQL。
三、实验内容本次实验主要涉及数据库的基本操作,包括创建数据库、创建数据表、插入数据、更新数据、删除数据以及查询数据等。
1.创建数据库步骤一:打开Navicat for MySQL,并点击左上角的“新建连接”按钮;步骤二:填写连接信息,包括主机、端口、用户名和密码,并点击“连接”按钮;步骤三:点击“新建数据库”按钮,填写数据库的名称,并点击“确定”按钮。
2.创建数据表步骤一:在已连接的数据库上点击右键,选择“新建数据表”;步骤二:填写数据表的名称,并点击“确定”按钮;步骤三:填写数据表的字段信息,包括字段名、数据类型、长度、索引、主键等,并点击“确定”按钮。
3.插入数据4.更新数据5.删除数据6.查询数据步骤一:在数据表上点击右键,选择“查看数据”;步骤二:在弹出的查询窗口中填写查询条件,并点击“确定”按钮。
四、实验结果通过以上基本操作,成功创建了一个数据库,并在数据库中创建了一个数据表。
插入了一条数据,并成功地更新和删除了数据。
最后,使用查询操作查看了数据库中的数据。
五、实验总结通过本次实验,我深入了解了数据库SQL语言的基本操作,学会了使用数据库SQL语言进行数据的增删改查操作。
在实验过程中,我发现通过SQL语句进行数据库操作更加灵活、方便且高效。
还学会了使用Navicat for MySQL这样的数据库管理工具,提高了数据库的操作效率。
通过实验,我对数据库的基本原理和操作有了更深入的了解,为日后的数据库开发和管理打下了坚实的基础。
实验步骤创建数据库:create database wang;选择数据库:use wang;创建三个表:create table student(Sno char(12) primary key,Sname char(20),Sdept varchar(20),Ssex char(2),Sage char(4));create table SC(Sno char(12),Cno char(6),Grade smallint);create table Course(Cno char(6),Cname char(20),Cpno char(6),Credit smallint);导入数据:load data local infile’D:\\data\\student.txt’ into table student fields terminated by ‘\t’ lines termi nated by ‘\r\n’;load data local infile’D:\\data\\sc.txt’ into table SC fields terminated by ‘\t’ lines terminated by ‘\n’;load data local infile’D:\\data\\course.txt’ into table Course fields terminated by ‘\t’ lines terminated by ‘\n’;1,向student表中增加“入学时间”列;然后删除“入学时间”列alter table student add column startTime char(15);alter table student drop startTime;2,将student表中的年龄属性的数据类型,由int型改为char(3)3,在sc关系表的学号和课程号属性集合上建立唯一索引4,删除刚刚建立的索引5,查询全体学生的学号和姓名6,查询全体学生的详细记录7,查询全体学生的姓名和出生年份8,查询有系名(去重复)9,查询数学系全体学生的名单10,查询所有年龄在19岁和22岁之间(含19和22)的学生的姓名和学号11,查询所有年龄不在19岁和22岁之间的学生的姓名和学号12,查询法学,新闻和英语系学生的姓名和性别13,查询学号200910426的学生的信息14,查询所有姓刘的学生的姓名和性别,学号15,查询姓‘欧阳’且全名为4个汉字的学生的姓名16,查询姓名中带‘亮’字的学生的姓名和学号17,18,19,20,李21,22,23,24,25,26,27,28,29,11 30,。
实验二数据库关系模式实验名称:数据库关系模式实验课时:2课时实验地点:艺术楼417机器编号:ST07实验时间: 2018年11月 9日15:30-17:10 第10周星期四班级:学号:姓名:一、实验目的熟悉 SQL Server 图形化界面的基本操作。
二、实验要求在图形化界面和查询分析器(应用 SQL 语言)两种环境下实现数据库关系模式设计:(1)创建、修改、查看表的结构。
(2)建立和修改表的主码、外码、索引及其它约束条件。
(3)对所创建的表进行插入、修改和删除元组的操作,删除所创建的表。
三、实验环境(1)硬件设备:PC机一台(2)操作系统:Windows 10(3)应用工具:SQL Server四、实验内容:1.创建表(1)使用 SQL Server Management Studio,如图 2.1 所示,点开要创建表的数据库,右键点击数据对象“表”,选择“新建表”。
在弹出的表的新建窗口中填入相关表信息(列名、数据类型、是否为 null)。
表信息填写好之后,如果有需要就可以设置主键。
设置方法为,首先选中作为主键的列,如果是多个列,可以按 ctrl 键多选;选中列后,如图 2.2 所示,点击钥匙图标,或者右键菜单选择“设置主键”。
点击磁盘图标或者关闭窗口时会提示输入表名,创建新表成功。
外键约束是用来加强两个表(主表和从表)的一列或多列数据之间的连接的。
创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。
也就是说只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作。
点击关系图标或者右键菜单选择“关系”,则弹出关系对话框,如图 2.3 所示,点击“添加”按钮新建外键联系。
点击“表和列规范”右侧的“...”按钮,弹出如图 2.4 所示界面,主表的列必须是主键或者唯一约束的列,从表的列必须与主表的列数据类型和长度一致,即图 2.1 新建表外键。
点击管理索引和键的图标或者右键菜单选择“索引/键”,弹出如图 2.5 所示对话框,可以创建索引或者 unique 约束,缺省已经有一个主键索引。
SQL实验报告(优秀范文5篇)第一篇:SQL实验报告实验四触发器实验(一)after触发器(1 1)在l l i neitem 表上定义一个 after 触发器, , 当修改列项目e e xtendedprice d i scountx tax 时, , 要把 s orders 表得to o tal pri ce e 一起修改, , 以保证数据一致性C RE ATE T RIGGERtrig _line ite m_ pr ice_ update on line it em fo rupda teaasbegin i f(UPDATE(ex tend edprice)o r UPDATE(tax)or UPD AT E(di scou nt))begin-—声明游标变量指向 inserted 表d eclarecursor_inserted c urs orrea d_onlyofor select order key,linenu mber,exte nd edpr ice, dis coun t, taxfromin ser ted—-息信找查取获量变明声ﻩ声明变量获取查找信息de clare order key in t, @linenumb erint,exte nd edpricereal,disscount real,tax real—-打开游标epoﻩen cursor_i ns ert ed—-标游取读ﻩ读取游标fe tchnextfrom cur sor _i ns erte dint o@o rderkey, @lin enumber,eext ende dprice, @di scount,t axwwhi le FETC H_S TATUS =0 nigebﻩnﻩ—-声明一个变量保存重新计算得新价格cedﻩﻩecl are @n ew_tota lpri cer ealﻩ select @n ew_t otal price= @ext en dedpr ice *(1 -@di scou nt)*(1 +@tax)—-用新得总价格变量更新 orders 表得 t ot alprice puﻩﻩupdate orde rsse t tot alpri ce= new_totalprice where or derkey=orde rkeyen hctefﻩext f ro m cur sor_i nser ted int o@order ke y, @li nenum ber, @ex tende dp rice,discoun t, @taxdneﻩllaedﻩlocate c ur sor_i nser te deend end ﻩ(2)在在 linei tem表上定义一个 aftr er 触发器, , 当增加一项订单明细时, ,自动修改 s orders 表得 total p rice, 以保证数据一致性CREATE TR IGGER tri g_ lineit em_price_ in sert on l ine item ffor inse rta sbegin ——向指量变标游明声ﻩ声明游标变量指向ins erted 表de clarec ursor_inse rtedcursorread_ onl yﻩ for s ele ct orderkey,linenumbe r,ex te ndedp ric e,di scou nt,t axfrom insserte d--声明变量获取查找信息edﻩeclare @orde rk eyint, @lin enumber int,e xten dedp ricereal, @discountreal, @ta xreal -—ﻩ-打开游标open cursor_i ns erte d--ﻩ-读取游标fe tc hnex tf romcu rsor_ins ertedinto@o rd erkey,li nen umbeerr, ex ten ded pric e,dis count,tax ihwﻩile @@FE TCH_ STATU S=0 ebﻩegin-—格价新得算计新重存保量变个一明声ﻩﻩ声明一个变量保存重新计算得新价格cedﻩclare @n ew_tot alprice realcelesﻩct new _to ta lprice= @extend edp rice *(1-d is count)*(1+tax)—-新更量变格价总得新用ﻩﻩ用新得总价格变量更新orders 表得totalpri ceﻩ u pda teor ders s ett ota lpric e=total pric e+ @new_ tota lpr ice wwhhe re o rderke y=orderkeytefﻩetch next from cursor_ ins erte dinto o rder key, @l inen umber,e xtendeddp ric e, @disc ou nt, @t axeend aedﻩdeall oca te cu rsor_in serted en d(3)在l in e ite m表上定义一个a ft er触发器, , 当删除一项订单明细记录时, ,自动修改 orders 表得 tot a lprice, 以保证数据一致性CREATE TRI GG ER trig _line item_price_de let eon line item fo r de let eAAS begin--声明游标变量指向delet ed 表de clar e curso r_d eleted cursorre ad _on lyesrofﻩﻩele ctord erk ey,line numbe r,extende dp rice,discoun t, taxfromdel eted-ﻩ--声明变量获取查找信息declare ord erkey int,linenum be rint,extendedp ri ce r eal,discou nt real,ta xreal -—ﻩ-打开游标epoﻩen c urso r_ deleted——标游取读ﻩ读取游标efﻩetch next fr om cur sor_delete d in toorder ke y,l inenumb er,ext enddedprice, @di scoun t,taxwh ile@FETCH_STATUS=0begi n-—声明一个变量保存重新计算得新价格ﻩ declare @ne w_ to talpric erealﻩsselec t@new_t otalpr ice= @exte nde dpri ce*(1-@disco unt)*(1+ tax)-ﻩ-—用新得总价格变量更新orders 表得tot alp rice uﻩﻩupd ateorders set t otalpri ce=to talpr ice-@new _totalp rice wh er e order key= @ord erkeyfetchn ext f rom cursor_inse rt ed in to orderkey, @line numbe r,extendeeddprice, @d iscou nt,t ax dneﻩndddeal lo cat e cur sor_inse rted eend((4 4))验证 up d at e触发器—-查瞧号订单得 to ta a l pr i ceselec t*fro o mo o r ders whereorde r key=1 8 30;—-查瞧明细表得相关信息se l ect *f ro mlin ei i te e mw here or de e r key=183 0and l ine num m be e r =1;——验证 e update 触发器updat elineitem set t ax=tax+0、05whe re orderkey=1830;(二)i i n steadof触发器((1))在在 lineit em 表上定义一个ins tead o fupda te触发器, 当修改明细表中得数量量quan ti ty 时, 应先检查供应表par tsupp 得av ai lqty 就是否足够, 不足够则拒绝执行, 否则执行并修改相应数值以保证数据一致性于由于 in steadof 触发器更新某个表会使得该表上其她不满足更新列不能更新,因因用此逆向思维使用 a fter 触发器实现相同效果即先更新 qu antity, 再比较av ailqqtty, 如果满足更新数量, 就修改partsupp 得表得 a vailqty, 如果不满足, 则把lineitem得quantity 更新之后得数据重新修改回来ccreate trigge r trig_lin eit em_quanti ty_ upda teonli neit em f or upda teas begin if UPDATE(qu ant ity)bbegin ——向指别分量变标游明声ﻩ声明游标变量分别指向 i nserted 表与 d el eted 表edﻩdeclare c urso r_inser tedcur sorr ead_on lyfortcelesﻩﻩtorde rkey, partk ey,s uppkey,lin enum ber, quantit yfr om i nserteddecl arecursor_de leted c urs orrea d_ onl yf or select quantityfr om deleted-—息信找查取获量变明声ﻩ声明变量获取查找信息decl are@qu an tity _dif f_lineitem i nt,q uanti ty_pa rtsup p i nt cedﻩclare suppkey int, @par tke y in t,o rd erkey i nt,unenilﻩﻩum ber int ,qty _inserted in t , @qty_deleted int--打开游标ruc nepoﻩrsor_in sert ed poﻩopen cur sor_d eleted-—量变给赋值数标游取读ﻩ读取游标数值赋给变量fﻩfet chnext fromcu rsor_ insert edﻩiinto or de rk ey,pa rtkey, @suppk ey, @line nu mber, @qty _ins erte df et chnext fromcursor _d eletedint o q ty _de lete dwhi le fe tch_st atus=0 gebﻩegin--计算订单明细修改时, 订购数量得变化值inserte d表项-d elet ed表项ssel ect quantity_d if f_ li neit em= @q ty _in se rte d—@@q ty_deleteedﻩ--从parts upp 表获取ava ilq ty值, 注意partsupp 表得主键为(partk ey,suppkeey)tcelesﻩﻩt@quanti ty_p ar tsupp =av ailq ty fro m pa rtsu ppwﻩﻩwh er e suppkey= suppke yand part key= @par tk ey-—断判始开ﻩﻩ开始判断gebﻩbegi nfiﻩf quant ity _d iff_ lin eite m=0ﻩﻩ p rin t“ 更新得数量与原表中得值相同, 不需要更新”e ls eif @quantit y_d iff_lin eitem 〈=q uantity_partsuppﻩbe ginﻩpuﻩﻩpd ate partsupps et avail qty= availqty-@qua ntit y_d iff_li ne item ﻩpus erehwﻩppkey=suppkeyandp artkey= @par tke yﻩﻩ p rint “ 两个表都更新成功’ ﻩﻩﻩneﻩndels eigebﻩﻩinﻩuﻩﻩupdate li nei temsetquantit y=quantity+ @quanti ty_diff_linei temwhe re o rd erke y=@orde rke y and li nenu mber= @liine numberﻩp ri nt '更新失败”ﻩﻩendﻩ e nd efﻩﻩetch ne xtfr om c urso r_i nsertedi nto @ord erke y, @partkey,s upp key, @linenumb er, @qt y_ ins ert edf etch ne xt from curso r_de leted into @qt y_d elet ed dneﻩndd eallocat e cur sor _i nserte ddealloc at e cursor_de le ted eend eend(2)在在 l ineite m表上定义一个 instea d of in sert 触发器, 当插入明细表中一条记录时时, 应先检查供应表par tsupp 得得 ava il qt y就是否足够qu anti ty 得数量c rea te t rig ger tri g_lineitem_q ua nti ty_ insertonline item iinstead of inser t as bbegin-—声明游标变量指向 inserte d表d eclar e cur sor_inserte dcur sorrea d_ only f orsﻩﻩselect or derk ey,pa rtkey,sup pk ey, lin en umber,q uantityf rom ins er ted-—声明变量获取查找信息dec lare quantity int, @av ailq ty i nt, @suppkeyin t, @partkeyinntt, @o rderkey int, @linenu mber int-—标游开打ﻩ打开游标c nepoﻩcurs or_ins erted -ﻩ-—读取游标f etc hnext fro mcursor_insert edint o@orde rkey,partkey,@@ssuppkey, @linenumber,qu antity wh ile @@FETCH_S TATUS= 0igebﻩin--为变量赋值a tcelesﻩavailqtyy==av ai lqt y fr ompartsuppwﻩwhe re suppkey =@su ppk ey and part ke y= partke yﻩ if @quant ity 〈= @avail qt y-—如果可以更新bﻩbegin /ﻩﻩﻩ/*将将 insert ed 表中得记录插入到明细表*/ ﻩsniﻩserti nto l ineite m select *from i nsertedro=yekredroerehwﻩﻩrderk ey andlinenumb er = @linenumber */ﻩﻩ新更时同ﻩ*同时更新 part supp 表得数量*/ﻩﻩuupd ate pa rtsup pset a vailqty=availqty-@quanti tyﻩerehwﻩe sup pke y= @sup pkey and partkey=part key ppr int ’paarts upp 表有足够得货物可以满足 lin eitem 得quan tityy, 插入成功’endelsebeginﻩﻩ p rintt''pa rt sup p表没有足够得货物可以满足 l ineitem 得得q uantity,插入失败’dneﻩfﻩﻩfetc h next from curso r_ins ert ed in to@ord erkey, partkey, suppkey, @liinenumbe r, qu antity eﻩen ddeall ocat ecursor_ inserted end(3)在在 line ite m表上定义一个 inste ad of del ete 触发器,当当删除明细表中记录时时, 同时改变表供应表 partsupp 得ava il qtyy数值 c re ate trigge r tri g_ lin eit em_quanti ty_ del ete o n line item inste ad of del ete as be gin—-声明游标变量指向deleted 表de cla re curs or_ del eted c ursorread _only forlesﻩﻩelect or derke y, par tkey,sup pkey, linenumbe r,quan tity fr om deleted -ﻩ--声明变量decl are s upp key i nt, par tke yint, @orde rkey int,linen umb erint, @quaant it y int—-标游开打ﻩ打开游标opencursor_deleted-—标游取读ﻩ读取游标ffetch next fr omcurs or _del et edin to @ord erkey , @partkey,s uppkeey, @lin en umber,q ua ntitywhi leFFET CH_ STATUS=0 igebﻩin*/*除删ﻩ*删除*/ﻩ de let e fromlineite m where linenu mber= line number and o rde rkey =ordder key*/新更时同ﻩ同时更新 pa rt supp 表得数量*/u pdateparts uppse tavailqt y=a vai lq ty+quant ityﻩ where s uppke y= @s uppkey a nd par tk ey= @p ar tkeyﻩ p rin t’ 删除成功, 并且已经把货物数量归还到 p ar tsup p里“ fﻩﻩfetc h ne xt fr omcurso r_del etedinto @ord er ke y,p ar tkey,@@suppkey, @lin enu mber,quanti ty neﻩnd edﻩea lloc ate cursor_ delete dend(4)验证 update 触发器--查瞧li neit em 得quan tit y select*fr omlin eit em whe re or derk ey =1830and li nenum ber=1;——查询partsupp 表得ava ilqt y se lect * from part supp w here suppk ey =(selectsupp key fr omlin eitem w here ord erkey=18 30)and partk ey=(s elec t part key from lin eite mwh er eorder key =18 30 a nd linenu mber=1)---更新数量过大——更新得值与原值相同---更新到+ + 2 00 数量, , 成功updateli neitem setquant ity=q uanti ty+ 200where order key=1830and lin en umber =1;--更新 +2 00成功后l ineite m得 quanti ty y 变化——更新+200 成功后par ts upp 表得a va ilqty 变化实验到此。
实验报告(T native二'上海'(Student)查询结果:student No stu dent sex birthday nati...nation classNot ! 0701008 :王红男1992*04^6 00:00:00.000上海CS0701 2D802D05王红敏女1990-KW1 00:00:00.000上海萤古族IS06D2题2:查找1992年元旦以后出生的全体男同学关系代数表达式:(T year(birthday)>=1992 A sex二'男'(Student)查询结果:student No student Name sex birthday nab.. nation class No1r:-'O1K)e 壬红男1992-G4-26 OD: DG.DO.OOO 上海祝族CS07G12D7O3S5 壬红男1992-04-26 0D: DC GO.DOT 北京汉族.AC07Q3题3:查找信息学院非汉族同学的学号、姓名、性别和民族。
关系代数表达式:n stude ntNo,stude ntName,sex (彷n ati on!二'汉族'Ainstitute='信息学院'(Student ??Class))查询结果:student No student Narrte sex ndion黑察”-号却二”-』—~4论1汀班曲唸I刘方展玄傣族WWWwTrJWiWwiwWnIfiWTWS20002005 王红議女議古據题4:查找08-09学年第二学期(08092)开出课程的编号、名称和学分。
关系代数表达式:n courseNo,courseName,creditHour (彷term二'08092'(Course ?Score))查询结果:course No courseName credit Hour1 : CS012 j操作系统SGX.B.4T ■ ■:题5:查找选修了“操作系统”的学生学号、成绩及姓名。
数据库系统实验报告专业班级学生姓名及学号课程教学班号任课教师实验指导教师实验地点2012 ~2013 学年第二学期实验一使用向导创建和删除数据库一.实验目的1.熟悉SQL Server 中SQL Server Management Studio的环境2.了解SQL Server 数据库的逻辑结构和物理结构3.掌握使用向导创建和删除数据库的方法二.实验要求1.熟练使用SSMS进行数据库的创建和删除操作。
2.完成实验报告。
三.实验内容设有一学籍管理系统,其数据库名为“EDUC”。
初始大小为 10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”(注意:此文件名必须已经建立的前提下才可以此操作)。
日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。
四.实验步骤1.使用SQL Server Management Studio(简称SSMS)创建数据库。
(1)启动SSMS在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。
如果身份验证选择的是“混合模式”,则要输入sa的密码。
(2)建立数据库在“对象资源管理器”窗口,建立上述数据库EDUC。
在数据库节点上右击选择新建。
同时建立一个同样属性的数据库EDUC1。
2. 使用向导删除上面建立的数据库。
用SSMS删除建立的数据库EDUC。
3、数据库的分离将刚建好的数据库分离出来,即点击新建的EDUC——任务——分离,将删除连接和更新打一个钩,然后点击确定。
数据库sql 实验报告数据库SQL 实验报告一、引言数据库是计算机科学中的一个重要概念,它用于存储和管理大量的数据。
SQL (Structured Query Language)是一种用于访问和操作数据库的标准语言。
本实验旨在通过实际操作,加深对数据库和SQL的理解,并掌握基本的SQL语句。
二、实验目的1. 熟悉数据库的基本概念和原理;2. 掌握SQL的基本语法和常用操作;3. 实践数据库设计和数据查询。
三、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统下进行。
四、实验过程与结果1. 数据库创建和表设计首先,我们创建一个名为"students"的数据库,并在其中创建一个名为"grades"的表。
表中包含学生姓名、学号、科目和成绩等字段。
2. 数据插入接下来,我们向"grades"表中插入一些数据,以模拟学生成绩的记录。
通过使用INSERT INTO语句,我们可以将数据插入到表中。
3. 数据查询在数据库中,查询是最常用的操作之一。
我们可以使用SELECT语句来实现对数据的查询。
例如,我们可以查询某个学生的成绩,或者按照科目进行排序等。
4. 数据更新有时候,我们需要对已有的数据进行更新。
使用UPDATE语句可以实现对表中数据的修改。
例如,我们可以将某个学生的成绩从80分修改为90分。
5. 数据删除当某个数据不再需要时,我们可以使用DELETE语句将其从表中删除。
例如,我们可以删除某个学生的成绩记录。
六、实验总结通过本次实验,我对数据库和SQL有了更深入的理解。
数据库作为存储和管理大量数据的工具,为我们提供了方便快捷的数据操作方式。
SQL作为一种标准语言,具备强大的数据查询、更新和删除功能。
在实验过程中,我学会了创建数据库和表,插入数据,进行数据查询、更新和删除等基本操作。
然而,数据库和SQL的学习仅仅是一个开始。
在实际应用中,我们还需要了解更多高级的数据库概念和技术,如索引、事务处理和数据备份等。
《数据库系统概论(第四版)》体会学号:姓名:班级:教师:学期实验总结与心得【实验名称】数据库的创建【实验内容】 1、新建sql注册表。
2、新建数据库。
主数据文件:逻辑文件名为student_data,物理文件名为student.mdf,初始大小为10mb,最大尺寸为无限大,增长速度为10%;数据库的日志文件:逻辑名称为student_log,物理文件名为student.ldf,初始大小为1mb,最大尺寸为5mb,增长速度为1mb 3、修改已注册的sql server属性为使用sql server身份验证。
【实验名称】数据库的附加、分离、导入导出及分离【实验内容】1. 数据库文件的附加与分离 (转载于:sql实验报告总结)2. 数据库文件的导入和导出3..数据库的删除4.修改数据库【实验名称】数据库的创建(书中作业)【实验内容】1. 在数据库student中创建一个学生基本信息表1.用企业管理其创建表2.用查询分析器创建表2.sql server 2005的系统数据类型分为哪几类?常用的数据类型有哪些?答:字符串类型、整型、长整型、短整型、浮点数类型、定点数类型、日期、时间。
常用的数据类型有:字符串类型、整型、长整型、短整型、浮点数类型、定点数类型、日期、时间3.在数据库student中创建一个名为t_couse(课程信息表) 1.用企业管理其创建t_course表2.用查询分析器创建t_course4.在数据库student中创建一个名为t_score(学生成绩)的表5.sql server 2005 中有多少种约束?其作用分别是什么答:非空约束,作用指定某一列不允许空值有助于维护数据的完整性,因为这样可以确保行中的列永远保护数据。
主键约束,作用可以保证实体的完整性,是最重要的一种约束。
唯一约束,作用指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值。
检查约束,作用对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。
SQL数据库实验报告实验六实验二实验2 SQL Server数据库的管理1.实验目的(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。
(2)掌握使用SQL Server管理平台对数据库进行管理的方法。
(3)掌握使用Transact-SQL语句对数据库进行管理的方法。
2.实验内容及步骤(1)在SQL Server管理平台中创建数据库。
①运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。
②右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。
在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。
(2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。
(3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。
指定“最大文件大小”为5MB。
修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。
(4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL 语句CREA TE DA TABASE创建studb数据库。
然后通过系统存储过程sp_helpdb查看系统中的数据库信息。
(5)在查询设计器中使用Transact-SQL语句ALTER DA TABASE 修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。
(6)在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。
(7)使用SQL Server管理平台将studb数据库的名称更改为student_db。
(8)使用Transact-SQL语句DROP DA TABASE删除student_db数据库。
数据库实验报告学院:专业:班级:学号:姓名:实验二数据库单表查询一、实验目的1. 掌握SELECT 语句的基本语法和查询条件表示方法;2. 掌握查询条件表达式和使用方法;3. 掌握GROUP BY 子句的作用和使用方法;4. 掌握HAVING 子句的作用和使用方法;5. 掌握ORDER BY 子句的作用和使用方法。
二、实验内容利用数据库进行单表查询。
1). 查询全体学生的学号和姓名;2). 查询全体学生的所有信息;3). 查询全体学生的姓名,出生年份,和所在系,并用小写字母表示所有系名;4). 给上例的结果集指定列名;5). 查询选修了课程的学生的学号;6). 查询年龄在20 岁以下的学生的姓名及其年龄;7). 查询考试成绩有不及格的学生的学号;8). 查询年龄在20-30 岁之间的学生的姓名,性别,所在系;9). 查询IS, CS, MA 系的所有学生的姓名和性别;10). 查找所有姓’李’的学生的姓名, 学号和性别;11). 查询没有先行课的课程的课程号cno 和课程名cname。
三、实验代码及运行结果截图--建立数据库,取名为LilyCREATE DATABASE Lily;--建立学生表,取名为STUDENTCREATE TABLE STUDENT(SNO CHAR(9)PRIMARY KEY,SNAME CHAR(20)UNIQUE,SSEX CHAR(2),SAGE SMALLINT,SDEPT CHAR(20));--向学生表中插入数据INSERT INTO STUDENT VALUES(201215121,'李勇','男',20,'CS'); INSERT INTO STUDENT VALUES(201215122,'刘晨','女',19,'CS'); INSERT INTO STUDENT VALUES(201215123,'王敏','女',18,'MA'); INSERT INTO STUDENT VALUES(201215125,'张立','男',19,'IS');--建立课程表,取名为COURSECREATE TABLE COURSE(CNO CHAR(4)PRIMARY KEY,CNAME CHAR(40)NOT NULL,CPNO CHAR(4),CCREDIT SMALLINT,FOREIGN KEY(CPNO)REFERENCES COURSE(CNO));--向COURSE表中插入数据INSERT INTO COURSE VALUES(2,'数学',null,2);INSERT INTO COURSE VALUES(6,'数据处理',null,2);INSERT INTO COURSE VALUES(7,'PASCAL语言',6,4);INSERT INTO COURSE VALUES(4,'操作系统',6,3);INSERT INTO COURSE VALUES(5,'数据结构',7,4); INSERT INTO COURSE VALUES(1,'数据库',5,4); INSERT INTO COURSE VALUES(3,'信息系统',1,4);--建立选课表,取名SCCREATE TABLE SC(SNO CHAR(9),CNO CHAR(4),GRADE SMALLINT,PRIMARY KEY(SNO,CNO),FOREIGN KEY(SNO)REFERENCES STUDENT(SNO),FOREIGN KEY(CNO)REFERENCES COURSE(CNO) );--向SC表中插入数据INSERT INTO SC VALUES(201215121,1,92); INSERT INTO SC VALUES(201215121,2,85); INSERT INTO SC VALUES(201215121,3,88); INSERT INTO SC VALUES(201215122,2,90); INSERT INTO SC VALUES(201215122,3,80); INSERT INTO SC VALUES(201215122,1,59);--1查询全体学生的学号和姓名SELECT SNO,SNAMEFROM STUDENT--2查询全体学生的全体信息SELECT*FROM STUDENT--3查询全体学生的姓名,出生年份,和所在系,并用小写字母表示所有系名SELECT SNAME,2012-SAGE,LOWER(SDEPT)FROM STUDENT--4给上例的结果指定列名SELECT SNAME,2012-SAGE AS'BIRTHYEAR',LOWER(SDEPT)as'SDEPT'FROM STUDENT--5查询选修了课程的学生的学号SELECT DISTINCT SNOFROM SC--6查询年龄在20岁以下的学生的姓名及其年龄SELECT SNAME,SAGEFROM STUDENTWHERE SAGE<20--7查询考试成绩有不及格学生的学号SELECT SNOFROM SCWHERE GRADE<60--8查询年龄在20-30岁之间的学生的姓名,性别,所在系SELECT SNAME,SSEX,SDEPTFROM STUDENTWHERE SAGE BETWEEN 20 AND 30--9查询IS,CS,MA系的所有学生的姓名和性别SELECT SNAME,SSEXFROM STUDENTWHERE SDEPT IN('IS','CS','MA');--10查找所有姓李的学生的姓名,学号和性别SELECT SNAME,SNO,SSEXFROM STUDENTWHERE SNAME LIKE'李%';--11查询没有先行课的课程的课程号cno和课程名cnameSELECT CNO,CNAMEFROM COURSEWHERE CPNO IS NULL四、实验小结小结:本次实验学习了利用数据库进行单表查询,掌握了简单SQL语句的使用。
数据库SQL实验报告_数据库的基本操作一、实验目的本次实验旨在通过实际操作,深入理解和掌握数据库的基本操作,包括创建数据库、创建表、插入数据、查询数据、更新数据和删除数据等,从而提高对数据库管理系统的应用能力和实践操作技能。
二、实验环境本次实验使用的数据库管理系统是 MySQL 80,操作系统为Windows 10。
三、实验内容及步骤(一)创建数据库1、打开 MySQL 命令行客户端,输入以下命令创建一个名为“my_database”的数据库:```sqlCREATE DATABASE my_database;```2、输入以下命令查看已创建的数据库:```sqlSHOW DATABASES;```(二)创建表1、使用以下命令切换到“my_database”数据库:```sqlUSE my_database;```2、创建一个名为“students”的表,包含“id”(整数类型,主键,自增)、“name”(字符串类型,长度为 50)、“age”(整数类型)和“grade”(整数类型)列:```sqlCREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,grade INT);```1、向“students”表中插入以下数据:```sqlINSERT INTO students (name, age, grade) VALUES ('张三', 20, 80),('李四', 21, 85),('王五', 19, 90);```(四)查询数据1、查询“students”表中的所有数据:```sqlSELECT FROM students;```2、查询年龄大于 20 岁的学生信息:```sqlSELECT FROM students WHERE age > 20;```1、将“张三”的年龄更新为 21 岁:```sqlUPDATE students SET age = 21 WHERE name ='张三';```(六)删除数据1、删除“grade”小于 80 的学生记录:```sqlDELETE FROM students WHERE grade < 80;```四、实验结果(一)创建数据库成功创建了名为“my_database”的数据库,并通过“SHOW DATABASES”命令验证了其存在。
实验报告二课程名称数据库系统原理与应用实验日期9.21(软工1401B)实验项目名称T-SQL指令创建数据库和表实验地点1#606 实验类型□验证型√设计型□综合型学时 2一、实验目的及要求(本实验所涉及并要求掌握的知识点)1.掌握用T-SQL指令创建数据库和表的方法2.掌握用T-SQL指令在数据表插入数据的方法3.掌握交互式和T-SQL语句修改数据表中数据的方法4.掌握交互式和T-SQL指令删除数据表中数据的方法5.掌握交互式和T-SQL指令删除数据库和表的方法二、实验环境(本实验所使用的硬件设备和相关软件)硬件:微型计算机软件:Windows XP/Windows Vista/Win 7操作系统;SQL Server2005数据库管理系统。
三、实验内容及步骤阅读以下内容:1、通过新建查询用SQL指令创建教材P20-21图1-15和图1-17学生成绩数据库,数据库名为StuScore在SQL Server Management Studio中,单击工具栏上的“新建查询”,然后在查询窗口中输入下面SQL语句:2、用T-SQL指令创建数据库StuScore的三张表student、course和grade(1)改变当前数据库为StuScore默认情况下登录SQL SERVER服务器后,以master数据库为当前数据库,如下图所示,应先使用下列命令改变当前数据库为StuScore数据库:USE StuScoreGO执行该命令后,发现查询窗口的标题栏发生了变化,master被换成了StuScore,说明命令执行成功,当前数据库为StuScore。
(2)在数据库StuScore中建立Student表在查询窗口中输入下面SQL语句:(3)在数据库StuScore中建立Course表在查询窗口中输入下面SQL语句:按上述方法查看StuScore的Course表是否创建成功。
(4)在数据库StuScore中建立grade表在查询窗口中输入下面SQL语句:也可以在表创建成功后再增加表级完整性约束3、学习用SQL语句修改基本表的结构的方法。
实验二SQL SERVER 2000 操纵数据和使用视图一.目的要求1.熟练进行数据库数据的查询2.练习对数据库的更新3.练习视图的创建和数据操纵二.实验内容:S表c表sc表1使用SQL语句完成以下查询:(1)检索Liu老师所受课程的课程号和课程名:(2)检索年龄大于23岁的男生的学号与姓名:(3) 检索“W ANG LIN“同学不学的课程的课程号(5)求选修C4课程的学生的平均年龄(1)统计每门课程的学生选修人数(超过5人才统计)。
要求输出课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
(7)检索姓名以W ANG打头的所有学生的姓名和年龄(8)求年龄大于女同学平均年龄的南男同学姓名和年龄2使用SQL语句完成以下更新:(1)将元组(‘S9’,‘WU’,‘18’)添加到S表中。
(2)另建一个表STUDENT(SNO,NAME,SEX),将各门课成绩都达到80分的同学的有关数据存入该表。
(3)从SC中删除没有成绩的元组。
(4)删除学生W ANG的选修课程和成绩。
(5)把课程MA THS不及格的成绩改为空值。
(6)把低于总平均成绩的女生成绩提高5% 原表(女生)(7)对于所有选修C4课程的学生,成绩如果小于等于75就提高5%,否则提高4%3.建立一个视图,能够从中查询每个学生的学号、姓名、已取得成绩的课程书和平均成绩。
再在该视图上试着进行各种查询和更新。
上机体会通过第二次上机,我对SQL Server 7.0的查询器和SQL语句有了进一步了解。
特别是查询和更新语句,让我把课本知识和时间有机地结合起来。
让我对数据库的学习又产生了新的动力。
sql数据库实验报告SQL数据库实验报告一、引言SQL(Structured Query Language)是一种用于管理关系型数据库的编程语言。
在本次实验中,我们使用SQL语言进行了数据库的设计、创建和操作,以及对数据库的查询和更新等操作。
本报告将详细介绍实验的目的、设计思路、实验过程和实验结果等内容。
二、实验目的本次实验的主要目的是熟悉SQL语言的使用,掌握数据库的设计和操作技巧。
通过实际操作,加深对数据库原理和相关知识的理解,并能够灵活运用SQL语言进行数据库的管理和操作。
三、实验设计本次实验的数据库设计基于一个图书馆管理系统。
我们需要设计多个表格,包括图书、读者、借阅记录等,并建立相应的关系。
为了实现这一目标,我们采用了以下步骤:1. 创建数据库:首先,我们使用SQL语句创建一个新的数据库,命名为"Library"。
2. 创建表格:接下来,我们根据需求创建了多个表格,包括"Books"、"Readers"和"BorrowRecords"等。
每个表格都有相应的字段,用于存储相关数据。
3. 设计关系:在创建表格的过程中,我们需要考虑不同表格之间的关系。
例如,图书表格和读者表格之间可以建立借阅关系,通过读者ID和图书ID进行关联。
4. 插入数据:创建表格后,我们使用SQL语句向表格中插入测试数据。
这些数据包括图书的名称、作者、出版日期等信息,以及读者的姓名、年龄、性别等信息。
5. 查询和更新:最后,我们使用SQL语句进行数据库的查询和更新操作。
通过编写合适的查询语句,我们可以实现对图书、读者和借阅记录等数据的检索和修改。
四、实验过程在实验过程中,我们按照上述设计思路一步步进行操作。
首先,我们使用SQL 语句创建了一个名为"Library"的数据库。
接着,我们创建了三个表格,分别是"Books"、"Readers"和"BorrowRecords"。
湖南第一师范学院信息科学与工程系实验报告课程名称:ORACLE数据库系统及应用成绩评定:实验项目名称:实验二:PL/SQL编程指导教师:学生姓名:学号:专业班级:实验项目类型:设计实验地点:实验时间:年月日一、实验目的与要求:1、掌握PL/SQL 程序设计的基本知识;2、掌握PL/SQL 中SELECT 语句和DML 语句的正确使用方法;3、掌握存储过程、函数、游标、触发器与包的创建与使用。
二、实验环境:(硬件环境、软件环境)1.硬件环境:奔ⅣPC。
2.软件环境:Windows2000 操作系统,Oracle 9i。
三、实验内容:(原理、操作步骤、程序代码等)任务:1、编写存储过程,根据用户输入的部门编号实现在PL/SQL 中逐行显示emp 表中该部门员工的工资级别。
工资级别是:当工资为空时,为空,工资在1000 元以下的为‘低’,在1000 和3000之间的为‘中’,高于3000 元的为‘高’。
要有异常处理(该部门编号不存在)。
create or replace procedure review_ep(v_deptno in dept.deptno%type)iscursor c1is select * from empwhere emp.deptno=v_deptno;record1emp%rowtype;deptno_not_found exception;beginopen c1;fetch c1into record1;if(not c1%found) then raise deptno_not_found;end if;while c1%found loopif nvl(record1.sal,0)<1000thendbms_output.put_line(record1.ename||'工资低');elsif nvl(record1.sal,0)<3000thendbms_output.put_line(record1.ename||'工资中等');elsedbms_output.put_line(record1.ename||'工资高');end if;fetch c1into record1;end loop;close c1;exception when deptno_not_found thendbms_output.put_line('deptno not found');end;2.有这么一张表temp1,他只有一个number(8)的字段no,由于在创建表时忘记设置主键约束,导致表中有很多重复的记录。
SQL Server数据库实验报告专业班级姓名1. 实验题目:实验二第3题使用图形界面SSMS创建数据库1.1 实验目的1.掌握使用SSMS图形化界面创建、修改、打开、收缩与删除数据库。
2.掌握使用T-SQL语句创建、修改、打开与删除数据库。
3.熟练查看数据库中的各种对象4.掌握分离与附加数据库1.2 实验要求创建数据库stuinfo,要求如下。
①包含三个数据文件(MF.mdf、F1.ndf、F2.ndf)和两个日志文件(L1.ldf、L2.ldf),②F1.ndf和F2.ndf放到自定义的文件组G1中,③数据文件存储到D:\SQLDATA,日志文件存储到E:\SQLLOG。
文件的其他属性自定义。
1.3 T-SQL程序1.4 运行结果2. 实验题目:实验二第4题使用Transact-SQL语句创建数据库2.1实验目的1.掌握使用SSMS图形化界面创建、修改、打开、收缩与删除数据库。
2.掌握使用T-SQL语句创建、修改、打开与删除数据库。
3.熟练查看数据库中的各种对象4.掌握分离与附加数据库2.2实验要求删除第3题中的数据库,再使用命令CREAT DATABASE创建第3题中的数据库。
2.3T-SQL程序CREATE DATABASE stuinfoON PRIMARY(NAME=MF,FILENAME='D:\SQLDATA\MF.MDF'),FILEGROUP G1(NAME=F1,FILENAME='D:\SQLDATA\F1.NDF'),(NAME=F2,FILENAME='D:\SQLDATA\F2.NDF')LOG ON(NAME=L1,FILENAME='D:\SQLLOG\L1.LDF'),(NAME=L2,FILENAME='D:\SQLLOG\MF.LDF')2.4运行结果3. 实验题目:实验二第5题修改数据库3.1实验目的1)掌握使用SSMS图形化界面创建、修改、打开、收缩与删除数据库。
数据库原理与应用实验报告 实验2、SQL的数据查询 2.1 实验目的 熟悉SQL语句的数据查询语言,能够SQL语句对数据库进行单表查询、连接查询、嵌套查询、集合查询和统计查询。
2.2 实验内容 实验内容主要是对数据库进行查询操作,包括如下四类查询方式: (1) 单表查询 查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。 使用DISTINCT保留字消除重复行。 对查询结果排序和分组。 集合分组使用集函数进行各项统计。 (2) 连接查询 笛卡儿连接和等值连接。 自连接。 外连接 复合条件连接。 多表连接。 (3) 嵌套查询 通过实验验证对子查询的两个限制条件。 体会相关子查询和不相关子查询的不同。 考察四类谓词的用法,包括: 第一类,IN、NOT IN; 第二类,带有比较运算符的子查询; 第三类,SOME、ANY或ALL谓词的子查询,查询最大值和最小值; 第四类,带有EXISTS谓词的子查询,实现“所有”等情况(如王宏的“所有”课程,“所有”女生选修的课程) (4) 集合运算 使用保留字UNION进行集合或运算。 采用逻辑运算符AND或OR来实现集合交和减运算。
2.3 实验步骤 以University_Mis数据库为例,该数据库中有四张来自实验1的表,其中Score是每门课的考试成绩,Scredit是学生所有考试合格课程所获得的积分总数,Ccredit每门课程的学分数。 在数据库中,存在这样的联系:学生可以选择课程,一个课程对应一个教师。在表Reports中保存学生的选课记录和考试成绩。 请先输入如下符合条件的元组后,再对数据库进行有关的查询操作 图1.1、Qidd_Students表 图1.2、Qidd_Teachers表 图1.3、Qidd_Courses表
图1.4、Qidd_Reports表 (1) 查询性别为“男”的所有学生的名字并按学号升序排列。 (2) 查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。积分的计算公式为:[1+(考试成绩-60)*0.1]*Ccredit。考试成绩>=60 否则=0 (3) 查询学分是3或4的课程的名称。 (4) 查询所有课程名称中含有“算法”的课程编号。 (5) 查询所有选课记录的课程号(不重复显示)。 (6) 统计所有老师的平均工资。 (7) 查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列。 (8) 统计各个课程的选课人数和平均成绩。 (9) 查询至少选修了三门课程的学生编号和姓名。 (10)查询编号S26的学生所选的全部课程的课程名和成绩。 (11)查询所有选了“数据库原理及其应用”课程的学生编号和姓名。 (12)求出选择了同一个课程的学生对。 (13)求出至少被两名学生选修的课程编号。 (14)查询选修了编号S26的学生所选的某个课程的学生编号。 (15)查询学生的基本信息及选修课程编号和成绩。 (16)查询学号S52的学生的姓名和选修的课程名称及成绩。 (17)查询和学号S52的学生同性别的所有学生资料。 (18)查询所有选课的学生的详细信息。 (19)查询没有学生选的课程的编号和名称。 (20)查询选修了课程名为C++的学生学号和姓名。 (21)找出选修课程UML或者课程C++的学生学号和姓名。 (22)找出和课程UML或课程C++的学分一样课程名称。 (23)查询所有选修编号C01的课程的学生的姓名。 (24)查询选修了所有课程的学生姓名。 (25)利用集合查询方式,查询选修课程C++或选择课程JAVA的学生的编号、姓名和积分。 (26)实现集合交运算,查询既选修课程C++又选修课程JAVA的学生的编号、姓名和积分。 (27) 实现集合减运算,查询选修课程C++而没有选修课程JAVA的学生的编号。
2.4 实验结果(截图只截取了“粗体字”的查询操作) (1)查询性别为“男”的所有学生的名字并按学号升序排列。 Select qdd_Sno ,qdd_Sname from Qidd_Students where qdd_Ssex='男' order by qdd_Sno ; (2)查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。积分的计算公式为:[1+(考试成绩-60)*0.1]*Ccredit。考试成绩>=60 否则=0。 图1.5 合格的成绩换算为积分 (3)查询学分是3或4的课程的名称。 select qdd_Cname from Qidd_Courses where qdd_Ccredit=3 or qdd_Ccredit=4 (4)查询所有课程名称中含有“算法”的课程编号。 select qdd_Cno from Qidd_Courses where qdd_Cname like '%算法%' (5)查询所有选课记录的课程号(不重复显示)。 select distinct qdd_Cno from Qidd_Reports (6)统计所有老师的平均工资。 select AVG(qdd_Tsalary) as 平均工资 from Qidd_Teachers (7)查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列。 图1.6 选修教师课程的学生的平均成绩 (8)统计各个课程的选课人数和平均成绩。 select qdd_Cno, count ( qdd_Cno) as 选课人数 ,AVG(qdd_Score) as 平均成绩 from Qidd_Reports group by qdd_Cno
(9)查询至少选修了三门课程的学生编号和姓名。 select qdd_Sno,qdd_Sname from Qidd_Students where qdd_Sno in (select qdd_Sno from Qidd_Reports group by qdd_Sno having(count(qdd_Sno))>=3)
(10)查询编号S26的学生所选的全部课程的课程名和成绩。 select qdd_Cname,qdd_Score from Qidd_Courses,Qidd_Reports where qdd_Sno ='S26' and Qidd_Courses.qdd_Cno=Qidd_Reports.qdd_Cno
(11)查询所有选了“数据库原理及其应用”课程的学生编号和姓名。 图1.7 查询所有选了“数据库原理及其应用”课程的学生编号和姓名 (12)求出选择了同一个课程的学生对。
图1.8 选择了同一个课程的学生 (13)求出至少被两名学生选修的课程编号。 select qdd_Cno from Qidd_Reports group by qdd_Cno having(COUNT (qdd_Cno))>=2
(14)查询选修了编号S26的学生所选的某个课程的学生编号。 select distinct qdd_Sno,qdd_Cno from Qidd_Reports where qdd_Cno in (select qdd_Cno from Qidd_Reports where qdd_Sno='S26') group by qdd_Cno,qdd_Sno (15)查询学生的基本信息及选修课程编号和成绩。 Select Qidd_Students.qdd_Sno,qdd_Sname,qdd_Semail,qdd_Scredit,qdd_Ssex,qdd_Cno,qdd_Score from Qidd_Students,Qidd_Reports where Qidd_Students.qdd_Sno=Qidd_Reports.qdd_Sno (16)查询学号S52的学生的姓名和选修的课程名称及成绩。
图1.9查询学号S52的学生的姓名和选修的课程名称及成绩 (17)查询和学号S52的学生同性别的所有学生资料。 图1.10 查询和学号S52的学生同性别的所有学生资料 (18)查询所有选课的学生的详细信息。 Select * from Qidd_Students where qdd_Sno in (select qdd_Sno from Qidd_Students)
(19)查询没有学生选的课程的编号和名称
图1.11 查询没有学生选的课程的编号和名称 (20)查询选修了课程名为C++的学生学号和姓名。 select qdd_Sno,qdd_Sname from Qidd_Students where qdd_Sno in (select qdd_Sno from Qidd_Reports where qdd_Cno in (select qdd_Cno from Qidd_Courses where qdd_Cname='C++')) (21)找出选修课程UML或者课程C++的学生学号和姓名 select qdd_Sno,qdd_Sname from Qidd_Students where qdd_Sno in (select qdd_Sno from Qidd_Reports where qdd_Cno in (select qdd_Cno from Qidd_Courses where qdd_Cname='C++' or qdd_Cname='UML'))