




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hunan Normal University数据库系统原理与技术实验报告姓名:学号:专业: 钟智君 2013180502 计算机科学与技术 湖南师范大学学工程与设计学院二0一五年十二月目录一、实验一5二、实验二9三、实验三17四、实验四31五、实验五41数据库原理实验实验一 数据库的创建与管理1、 建立数据库每当在磁盘上创建一个数据库时,会在磁盘上产生文件,用来存储数据:(1) 数据文件:*.mdf包含数据库初始信息,记录数据库还包括哪些文件,并存储相关数据。每个数据库有且只有一个*.mdf文件。(2) 日志文件:*.ldf保存数据库所有相关信息用于数据库的恢复,每个数据库至少有一个日志文件。在查询分析器中创建数据库的基本语句:CREATE DATABASE database-name例:create database stuon primary (name=stu_data, primary:表示此数据库文件为最主要文件,属于primary文件组,扩展名为.mdf,每个数据库中唯一filename=d:sqlexstu_data.mdf, :此处符号均为半角输入符号size=10, filename:用以指明数据库文件的具体物理位置及名称maxsize=50, size:文件的初始大小filegrowth=5) maxsize:文件的最大长度,如果此处为unlimited,表示文件可以无大小限制,直到增长至整个磁盘大小 filegrowth:文件的增长量 log on(name=stu_log, log:日志文件,其建立方式同数据库文件,扩展名为.ldffilename=d:sqlexstu_log.ldf,size=10,maxsize=50,filegrowth=5)注意:1. Name:逻辑文件名,符合标识符的命名规则, 使用sql语句访问数据库时使用的数据库名,需要符合sql的命名规则,且不同数据库名称相异。Filename:物理文件名,数据库存储在磁盘上使用的文件名Size:初始数据库文件的大小Maxsize:数据库文件的最大值Filegrowth:数据库文件的自动增长率,可以是百分比,也可以是具体的值。2. SQL不区分大小写3. 每一项的分隔符是“逗号”,并且最后一项没有“逗号”4. 按下F5,执行该TSQL语句,创建指定数据库文件位置的数据库。2、使用查询分析器修改数据库a.重命名数据库(1)在查询编辑窗口输入: Exec sp_renamedb Mydatabase,Mydatabase2 其中exec表示执行,sp_renamedb表示系统自带函数 b.修改数据库文件 (1)输入:alter database Mydatabase2 Modify file( name=Mydatabase1_new_log, Size=3, Maxsize=5) c.删除数据库文件: (1)输入:alter database Mydatabase2 remove file Mydatabase2_log实验一内容:1、 启动sqlserver的服务。 在桌面点击sqlserver程序图标,启动sqlserver程序,根据正确的用户名密码连接数据库。2、 在查询分析器中创建一个数据库,要求如下:(1) 数据库名称 Test1。(2) 数据文件:逻辑文件名为Test1_data1,物理文件名为Test1_data1.mdf,初始容量为5MB,最大容量为10MB,增幅为1MB。(3) 日志文件:逻辑文件名为Test1_log1,物理文件名为Test1_log1.ldf,初始容量为3MB,最大容量为5MB,增幅为1MB。create database Test1on (name=Test1_data1, filename=c:Test1Test1_data1.mdf, size=5, maxsize=10, filegrowth=1)log on (name=Test1_log1, filename=c:Test1Test1_log1.ldf, size=3, maxsize=5, filegrowth=1)3、 在查询分析器中按照下列要求修改第2题中创建的数据库test1(1) 数据文件的容量为6MB,最大容量为20MB,增幅为2MB。(2) 日志文件的容量为4MB,最大容量为10MB,增幅为2MB。alter database Test1 Modify file ( name=Test1_data1, size=6, maxsize=20, filegrowth=2 )alter database Test1 Modify file ( name=Test1_log1, size=4, maxsize=10, filegrowth=2 )4、 数据库更名:把test1数据库更名为new_test1Exec sp_renamedb Test1,new_test1;实验二 创建并管理表1、 查询分析器中创建数据库中的表基本语句:create table 表名 (列名 数据类型 属性)create table tabname(col1 type1 not null primary key,col2 type2 not null,.) 注意:如果在建表时未指定当前活动数据库,则系统默认将表建立在master数据库中,可以使用 use databasename 命令指定当前活动数据库。创建基本表格式:create table 列级完整性, , 表级完整性约束l 创建普通数据库表use myfirstdb 打开数据库create table 仓库1( 仓库编号 int, 仓库号 varchar(50), 城市 varchar(50), 面积 int )l 创建含有不能为空的字段的数据库表 use myfirstdb create table 仓库2 ( 仓库编号 int not null, 仓库号 varchar(50)not null, 城市 varchar(50)not null, 面积 int ) l 创建含有主键和唯一索引字段的数据库表 use myfirstdb create table 仓库3 ( 仓库编号 int primary key, 仓库号 varchar(50)unique, 城市 varchar(50)not null, 面积 int )l 创建含有默认值和CHECK约束字段的数据库表 use myfirstdb create table 仓库4 ( 仓库编号 int primary key, 仓库号 varchar(50)unique, 城市 varchar(50)default 青岛, 面积 int check(面积=300 and 面积=300 and 面积=800 and 基本工资=800 and 工资=2100) ) create table 订单表 ( 订单编号 int identity(1,1) primary key, 订单号 varchar(50)unique, 职工号 varchar(50) references 职工表(职工号), 订购日期 datetime, 销售金额 int )注意:1. 在创建表示,先创建职工表,才能创建订单表,在插入记录时,也要先向职工表中插入记录,才能向订单表中插入记录。2. 查看数据库表之间的关系。选择数据库myfirstdb下方的“数据库关系图”,单击鼠标右键,弹出右键菜单。3. 单击右键菜单中的“新建数据库关系图”命令,弹出“添加表”对话框。4. 分别把这几张表添加到数据库关系图中。修改基本表格式:Alter table Add 完整性约束drop alter column 例:向student增加“sclass”字符型alter table student add sclass varchar(50)例:将sname的类型改为varchar(50)alter table student alter column sname varchar(50)例:1 重命名数据库表 exec sp_rename 仓库,Mytab2.增加新字段use myfirstdbalter table 职工表add 电子邮件 varchar(50)use myfirstdbalter table 职工表add 联系方式 varchar(50) default 0731-888888883修改数据库表字段use myfirstdbalter table 职工表alter column 电子邮件 varchar(100)4删除数据库表字段use myfirstdbalter table 职工表drop column 电子邮件注意:如果一个字段含约束,就没有办法直接删除,要先删除字段中的约束,然后才能删除字段,删除约束的代码:5删除数据库文件alter database MydatabaseNewremove file MydatabaseNew_log 删除基本表drop table restrictcascade 实验二内容:1、 创建数据库销售系统,包含如表2.1至表2.4,创建这些表并按要求定义约束:表2.1 仓库表结构字段名数据类型约束说明仓库号varchar,长度为50主键城市varchar,长度为50缺省值为“青岛”面积int缺省值为800,在500到1800之间创建时间Datetime允许空值use new_Test1create table 仓库( 仓库号 varchar(50) primary key, 城市 varchar(50) default 青岛, 面积 int check(面积=500 and 面积=1800) default 800, 创建时间 Datetime)表2.2 职工表结构字段名数据类型约束说明职工号varchar,长度为50主键仓库号varchar,长度为50外键,参照仓库(仓库号)姓名varchar,长度为50非空值性别varchar,长度为10缺省值“男”,在“男”和“女”中取值工资intuse new_Test1create table 职工( 职工号 varchar(50) primary key, 仓库号 varchar(50) references 仓库(仓库号), 姓名 varchar(50) not null, 性别 varchar(10) check(性别=男 or 性别=女) default(男), 工资 int) 表2.3 供应商表结构字段名数据类型约束说明供应商号varchar,长度为50主键供应商名varchar,长度为50城市varchar,长度为50联系方式varchar,长度为50电子邮件varchar,长度为100like %.%,缺省值use new_Test1create table 供应商( 供应商号 varchar(50) primary key, 供应商名 varchar(50), 城市 varchar(50), 联系方式 varchar(50), 电子邮件 varchar(100) default check(电子邮件 like %.%)表2.4 订购单表结构字段名数据类型约束说明订购单号varchar,长度为50主键供应商号varchar,长度为50外键,参照供应商(供应商号)职工号varchar,长度为50外键,参照职工(职工号)订购日期datetime金额intuse new_Test1create table 订购单( 订购单号 varchar(50) primary key, 供应商号 varchar(50) references 供应商(供应商号), 职工号 varchar(50) references 职工(职工号), 订购日期 datetime, 金额 int)2、 增加、修改、删除字段,要求:(1) 为表仓库增加一个备注字段,类型为varchar(200)。use new_Test1alter table 仓库 add 备注 varchar(200);(2) 将备注字段的数据类型更改为varchar(300)。use new_Test1alter table 仓库 alter column 备注 varchar(300);(3) 删除备注字段use new_Test1alter table 仓库 drop column 备注;实验三 数据更新1、 向表中插入记录(1)插入语句:insert into table1(field1,field2) values(value1,value2)例:insert student1values(992002,王洪,0,1984-2-1,992,2002-9-1)insert student1values(992003,李华,1,1984-11-3,992,2002-9-1)0insert student1values(992004,孙伟,1,1984-7-4,992,2002-9-1)insert student1values(992005,林菲,0,1984-4-7,992,2002-9-1)使用INSERT INTO 表名 列1,列2,VALUES(符合数据类型的表项值)(数值1|null|default,数值2|null|default,)|default values将对应的数值按顺序填入所在列,如果没有指定列名,则数值顺序必须与表中属性列一一对应,否则出错。Null:如果某个字段允许null值,可以通过该语句填入。Default:如果字段拥有默认值,则可以通过该语句填入。如果仅添加部分字段的值,其余字段系统自动填入null值或默认值,前提是字段允许null值和默认值,否则insert命令失败。例:insert student1 (student_name) values(tom)如果数据表存在自动编号字段,此字段数值自动填充,无须用户干预。(2)插入语句:insertinto table_name select_state使用INSERT INTO表1 SELECT列名1,列名2,FROM表2 WHERE条件表达式从现有表的查询结果直接存储至另一个现有空表,也可以将一个或多个表中的数据经过汇总、统计、运算后的结果存放到另一个表。例:a:insert into studentselect student_id,student_name,sex,birth,class_id,ntrance_datefrom student1b:create table annascore (class int,sid int, score decimal(5,2) 新建表annascore,含有3列 :class(班级),sid(学号),score(成绩)insert into annascoreselect class_id,student_id, avg(math+english)/2-取得两科成绩平均值,效果等同于(math+english)/2from gradegroup by class_id ,student_id从表grade中选择class_id,student_id列的值赋给新建表列class和sid,并将grade表中的math和english两科成绩进行汇总,取得平均值,结果赋给score列。这种情况下,必须将被所选择列置于聚合函数或group by子句中,否则无效。(3)插入语句:select 列名1,列名2,into table_name 使用SELECT 列名1,列名2, INTO 新表名 WHERE 条件表达式2、 修改表中的记录更新语句:update table_name set column=value|default|Null where 范围使用UPDATE 表名 SET 列名=值,列名=值, WHERE 条件表达式(用于指定行)例:update studentset sex=1where student_id=992001update studentset birth=1985-1-12where student_name=李东update studentset student_name=林非,sex=1,birth=1984-7-21where student_id=992005Update student set name=王纲 把表中所有记录的某字段的值全部改成相同的Update employeeSET salary=salary+500WHERE salary 90Where子句使用的运算符说明= | | 等于 大于 小于 | !=不等于=小于或等于 大于或等于! | !=200 and 总分=400Select 姓名,系 from 学生表 where 总分between 200 and 400Select 姓名,系 from 学生表 where 总分400Select 姓名,系 from 学生表 where 总分not between 200 and 400查询出所有入学日期为2004年的学生记录Select 姓名,年龄 from 学生表 where year(入学日期)=20044、 多表查询当查询操作涉及到多个表,必须指定连接类型和连接表达式。注意:如果表名或字段名中含有空格,引用时需要将其包含在一对 括号中。LEFT JOIN:查询结果包含位于关键字left join左侧源表中的所有数据记录,但只包含右侧元表中相对应的数据记录。例:select customers.customerid,panyname,orders.orderid,orders.orderdate,orders.freight from orders left join customers on customers.customerID=orders.customerID将所有订单表上订单记录和在客户表上有对应项的客户记录显示出来。RIGHT JOIN:查询结果包含位于关键字right join右侧源表中的所有数据记录,但只包含左侧源表中相对应的数据记录。例:select order details.orderid, order details.unitprice,order details.quantity,order details.discount,ductidfrom order details right join productson order ductid=ductid将所有产品和订单表中相对应的纪录列出来。5、 查询中使用聚合函数聚合函数专用于select语句中,用于迅速取得数据记录的统计信息,一般用于compute by、group by、order by 语句中。常用聚合函数意义Count(*|all|distinct 表达式)Count_big(*|all|distinct 表达式)计算组中表达式所含数据记录的条数。返回int型数值Min(all|distinct 表达式)Max(all|distinct 表达式)计算组中表达式所含数据记录的最小(最大)值Avg(all|distinct 表达式)Sum(all|distinct 表达式)计算组中表达式所含数据记录的平均值、总合值例:select count(*) from 雇员表 where 籍贯 like %沈阳市% 计算雇员表中籍贯为沈阳市的人数。Select min(工资) as 最低工资 from 雇员表 取得雇员最低工资Select max(工资) as 最高工资 from 雇员表 取得雇员最高工资Select avg(工资) as 平均工资 from 雇员表 取得雇员平均工资Select sum(工资) as 工资总额 from 雇员表 取得雇员当季工资总额6、 Order by子句对查询结果排序ORDER BY 表达式 ASC|DESC例:SELECT student_id,student_name,class_id FROM student ORDER BY class_id DESC , student_name ASC 按班级编号升序排列查询结果DESC:降序 ASC:升序默认状态下,sqlserver将结果升序排列(null值将被视为最小值)。7、 使用GROUP BY子句完成数据分组小计如果需要根据一个或多个组的数值将查询中的记录进行分组汇总,必须通过group by子句完成。GROUP BY 表达式 n例:select 姓名,部门,工资 from 雇员表 group by 部门 order by 工资按照工资高低将不同部门的员工分别排序。8、 分组查询HAVING子句的使用HAVING子句用于搜索分组数据,经常与group by子句连用。单独使用having子句时,其作用相当于where子句,用于搜索单个符合条件的记录,但不推荐单独使用。例:select 部门,avg(工资)as 部门平均工资,count (*)as 各部门人数,Max(工资)as 部门最高工资,Min(工资)as 部门最低工资,From雇员表Group by 部门Having avg(工资)3000在雇员表中,按部门分组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025春季贵州黔西南州赴省内外高校引才暨第十三届贵州人才博览会公开引进企事业单位高层次人才和急需紧缺人才484人考前自测高频考点模拟试题及一套答案详解
- 2025年中国火腿刀行业市场分析及投资价值评估前景预测报告
- 2025安徽宿州市砀山县招聘幼儿园教师40人考前自测高频考点模拟试题有答案详解
- 2025年中国划线斗盒行业市场分析及投资价值评估前景预测报告
- 2025年中国化妆品级透明质酸原料行业市场分析及投资价值评估前景预测报告
- 2025年甘肃省武威市民勤县西渠镇人民政府选聘专业化管理村文书考前自测高频考点模拟试题及答案详解(各地真题)
- 2025广西大学招聘专职辅导员25人模拟试卷有完整答案详解
- 2025年4月广东深圳市东北师范大学附属中学深圳学校面向应届毕业生招聘教师2人模拟试卷及一套答案详解
- 2025北京师范大学一带一路学院教学助理招聘考前自测高频考点模拟试题及完整答案详解1套
- 2025内蒙古鄂尔多斯市康巴什区幼儿园教师招聘考前自测高频考点模拟试题及参考答案详解一套
- 2024年南京大学公开招聘辅导员笔试题含答案
- 2025一建《机电工程管理与实务》考点一本通
- 2025年高考全国二卷数学真题(解析版)
- 航空煤油储存管理办法
- 高中政治课课件模板
- 新学期,新征程+课件-2025-2026学年高二上学期开学第一课主题班会
- 廊坊市物业管理办法
- 深基坑自动化监测施工工法
- 2025满分中考作文(15篇)
- 2024年深圳市公务员考试行测真题及答案详解(新)
- 现代化农业与农业机械化新技术
评论
0/150
提交评论