1、数据库报告实 验 报 告 ( 2012 / 2013 学年 第 一 学期)课程名称数据库原理实验名称1、数据库表的建立与管理2、查询技术的应用3、数据库的表中数据的操作4、视图练习实验时间12月5、11月28、11月21 指导单位指导教师 学生姓名 班级学号学院(系) 理学院专 业数据库原理第一次实验一、实验内容:数据库表的建立与管理二、实验目的:学习数据库及表的建立、删除、更新等操作。注:本次实验题目,除了特殊要求,以T-SQL为主,并将所有语句标注好题号,留存在查询界面上,方便检查。三、实验题目:1、创建一名为test的数据库;2.在“test”数据库中新建一张部门表 “部门”,输入列:n
2、ame(CHAR,10位),ID(CHAR,7位),manager (CHAR,10位)各列均不能为空值。3、在“test”数据库中新建一张员工表,命名为“员工”。在表中输入以下各列: name(CHAR,10位),persONID(CHAR,7位),Sex(CHAR,7位),birthday(datetime),deptID(CHAR,7位),各列均不能为空值。4、修改表的操作练习:1)将部门表中的列ID设为主键;2)将员工表中persONID设为主键,并将deptID设置为外键,关联到部门表上的ID列;3)在部门表中,添加列quantity(CHAR, 5); 4) 删除员工表中的列sex
3、; 5)修改员工表中列name为(varCHAR,8)5、1)在数据库test中新建表scores,输入以下列:ID (CHAR,8位) 主键, C语言numeric(3,1) ,IT英语 numeric(3,1) ,数据库 numeric(3,1) ,软件基础 numeric(3,1) ,平均成绩 。四门学科都不能为空,并且平均成绩为四门学科的平均分; 2)为表scores中的四项成绩添加default约束:使其默认值为0; 3)为表scores中的四项成绩添加check约束:是每项成绩在0到100之间。6、删除department表,并删除数据库test。4、实验过程(1)、 CREATE
4、 DATABASE test USE test(2)、CREATE TABLE department (ID CHAR(7) NOT NULL, name CHAR(10) NOT NULL,manager CHAR(10) NOT NULL)(3)、 CREATE TABLE worker (persONID CHAR(7) NOT NULL, name CHAR(10) NOT NULL, sex CHAR(7) NOT NULL, birthday datetime NOT NULL, deptID CHAR(7) NOT NULL) (4)、 ALTER TABLE departmen
5、t ADD PRIMARY KEY(ID)ALTER TABLE worker ADD PRIMARY KEY( persONID )ALTER TABLE worker ADD constraint 外键约束 FOREIGN KEY(deptID) REFERENCES department(ID)ALTER TABLE department ADD quantity CHAR(5) ALTER TABLE worker DROP COLUMN sex ALTER TABLE worker ALTER COLUMN name varCHAR(8) (5)、CREATE TABLE score
6、s (ID CHAR(8) PRIMARY KEY NOT NULL, C语言 numeric(3,1) NOT NULL, IT英语 numeric(3,1) NOT NULL, 数据库 numeric(3,1) NOT NULL, 软件基础 numeric(3,1) NOT NULL, 平均成绩 AS(C语言+IT英语+数据库+软件基础)/4) ALTER TABLE scores ADD CONSTRAINT C语言_default DEFAULT0FOR C语言ALTER TABLE scores ADD CONSTRAINT IT英语_default DEFAULT0FOR IT英语
7、ALTER TABLE scores ADD CONSTRAINT 数据库_default DEFAULT0FOR 数据库ALTER TABLE scores ADD CONSTRAINT 软件基础_default DEFAULT0FOR 软件基础ALTER TABLE scores ADD CONSTRAINT C语言 CHECK (C语言 BETWEEN 0 AND 100)ALTER TABLE scores ADD CONSTRAINT IT英语 CHECK (IT英语 BETWEEN 0 AND 100)ALTER TABLE scores ADD CONSTRAINT 数据库 CH
8、ECK (数据库 BETWEEN 0 AND 100)ALTER TABLE scores ADD CONSTRAINT 软件基础 CHECK (软件基础 BETWEEN 0 AND 100)(6)、DROP table department casecade constraint 外键约束;USE MASTER; DROP DATABASE test;5、 由以下可见,数据库test及表已建立完成 六 心得体会 删除department表的过程未能实现,命令不能删除外键,和伙伴讨论没有结果,不过打开建立的表就可以右键轻松删除了,其他的比较顺利。 数据库原理第二次实验一、实验内容:查询技术的应
9、用二、实验目的:1、 掌握SELECT语句的基本语法2、 掌握连接查询的表示3、 掌握数据汇总的方法4、 掌握SELECT语句的GROUP BY子句的作用和使用方法5、 掌握SELECT语句的ORDER BY 子句的作用和使用方法三、实验内容1、创建员工管理数据库(compy)及相应的四张表:Employees:员工信息表Departments:部门信息表Salary:员工薪水信息表PurchASe:员工购物信息表各表中属性的定义可根据表中的记录加以设定,均以编号为主键,例如可定义Departments表结构如下:列名数据类型长度是否允许空值说明部门编号char3否部门编号 主键部门名称cha
10、r 20否部门名称备注text16是备注向表中填入数据 A、向Departments表中加入表2所示的记录编号部门名称备注1财务部NULL2人力资源部NULL3生产部NULL4采购部NULL5销售部NULL B、向Employees表中加入表1所示的记录编号姓名地址邮编电话部门号出生日期性别000001张晓强上海230027333355621956-1-11010008柳树合肥230027313135911966-1-11002001许静北京230026313235911972-1-11020018李可武汉230026369356411950-1-10102201张三丰西安1234563635
11、34651962-1-10102208白眉南京123456345896551955-1-11108991胡适昆明123456456892131969-1-11111006成吉思汗海口123456345814551964-1-11210678萧然成都123456345456531967-1-11C、向Salary表中加入表3所示的记录编号收入支出0000012100123010008158288002001256918502001819877910220120661081022082980210108991325928111100628601982106782347180D、向Purchase表
12、中加入表4所示的记录员工编号商品购买数量0000010130000010310020010150200180361089911110000011130200180152016780210200181122、简单查询 (1)查询1956,1962,1964年出生的员工记录; (2)查询性别为1的员工记录; (3)查询名字中包含白字的所有雇员信息; (4)查询不姓李或者胡,并且名字为三个字的雇员的记录(注:“姓名”列的数据类型必须定义为varCHAR,想想为什么? )。3、连接查询的使用(1)查询每个雇员的情况以及其薪水情况(2)查询收入高于编号为102201的员工收入的职工信息4数据汇总(1)求
13、财务部员工的平均净收入(2)求财务部雇员的总人数5GROUP BY ,ORDER BY 子句的使用(1)求各部门的雇员数(2)将各雇员的情况按薪水由低到高排列6、(选做题)查找比所有财务部的员工的收入都高的员工的姓名;4、实验过程Sql语言如下:1、 CREATE DATABASE compyuse compyCREATE TABLE Departments(部门编号 CHAR(10) PRIMARY KEY NOT NULL,部门名称 CHAR(20) NOT NULL,备注 text);CREATE TABLE Employees(编号 CHAR(10) PRIMARY KEY NOT N
14、ULL,姓名 VARCHAR(20) NOT NULL,地址 CHAR(30) NOT NULL,邮编 CHAR(10) NOT NULL,电话 CHAR(11) NOT NULL,部门号 CHAR(3) NOT NULL,出生日期 DATE NOT NULL,性别 CHAR(2) NOT NULL);CREATE TABLE Salary(编号 CHAR(10) PRIMARY KEY NOT NULL,收入 INT default 0,支出 INT default 0,);CREATE TABLE Purchase(员工编号 CHAR(10) NOT NULL,商品 CHAR(3) NOT
15、 NULL,PRIMARY KEY(员工编号,商品);INSERT INTO Departments VALUES(1,财务部,NULL);INSERT INTO Departments VALUES(2,人力资源部,NULL);INSERT INTO Departments VALUES(3,生产部,NULL); INSERT INTO Departments VALUES(4,采购部,NULL);INSERT INTO Departments VALUES(5,销售部,NULL);INSERT INTO Employees VALUES(000001,张晓强,上海,230027,33335
16、56,2,1956-1-1,1)INSERT INTO Employees VALUES(010008,柳树,合肥,230027,3131359,1,1966-1-1,1)INSERT INTO Employees VALUES(002001,许静,北京,230026,3132359,1,1972-1-1,1)INSERT INTO Employees VALUES(020018,李可,武汉,230026,3693564,1,1950-1-1,0)INSERT INTO Employees VALUES(102201,张三丰,西安,123456,3635364,5,1962-1-1,0)INS
17、ERT INTO Employees VALUES(102208,白眉,南京,123456,3458965,5,1955-1-1,1)INSERT INTO Employees VALUES(108991,胡适,昆明,123456,4568921,3,1969-1-1,1)INSERT INTO Employees VALUES(111006,成吉思汗,海口,123456,3458145,5,1964-1-1,1)INSERT INTO Employees VALUES(210678,萧然,成都,123456,3454565,3,1967-1-1,1);INSERT INTO Salary V
18、ALUES(000001,2100,123)INSERT INTO Salary VALUES(010008,1582,88)INSERT INTO Salary VALUES(002001,2569,185)INSERT INTO Salary VALUES(020018,1987,79)INSERT INTO Salary VALUES(102201,2066,108)INSERT INTO Salary VALUES(102208,2980,210)INSERT INTO Salary VALUES(108991,3259,281)INSERT INTO Salary VALUES(11
19、1006,2860,198)INSERT INTO Salary VALUES(210678,2347,180);INSERT INTO Purchase VALUES(000001,01,3);INSERT INTO Purchase VALUES(000001,03,1);INSERT INTO Purchase VALUES(002001,01,5);INSERT INTO Purchase VALUES(020018,03,6);INSERT INTO Purchase VALUES(108991,11,1);INSERT INTO Purchase VALUES(000001,11,
20、3);INSERT INTO Purchase VALUES(020018,01,5);INSERT INTO Purchase VALUES(201678,02,1);INSERT INTO Purchase VALUES(020018,11,2);2、简单查询SELECT * FROM Purchase SELECT * FROM EmployeesWHERE 出生日期 LIKE %1956% or 出生日期 LIKE %1962% or 出生日期 LIKE %1964%; SELECT * FROM Employees WHERE 性别=1; SELECT * FROM Employee
21、s WHERE 姓名 LIKE %白%;SELECT * FROM Employees WHERE 姓名 not LIKE李% AND 姓名 not LIKE胡% AND len(姓名)=3;3、连接查询的使用SELECT Employees. *,Salary. 收入FROM Employees inner join Salary on Employees.编号=Salary.编号;SELECT Employees. *,Salary. 收入FROM Employees inner join Salary on Employees.编号=Salary.编号WHERE 收入(SELECT 收入
22、 FROM Salary WHERE 编号=102201);4数据汇总SELECT AVG(b.收入-b.支出) AS 财务部员工的平均净收入FROM Employees AS a INNER JOIN Salary AS b ON a.编号=b.编号 WHERE 部门号=1;SELECT COUNT(部门号)AS 财务部门总人数 FROM Employees WHERE 部门号=1;5GROUP BY ,ORDER BY 子句的使用SELECT COUNT(a.部门号) AS 部门人数 ,b.部门名称 FROM Employees AS a JOIN Departments AS b ON
23、a.部门号=b.部门编号 group by(部门名称);SELECT a.*,b.收入FROM Employees AS a INNER JOIN Salary AS b ON a.编号=b.编号 order by 收入;5、运行结果及选做题(1)查询1956,1962,1964年出生的员工记录; (2)查询性别为1的员工记录; (3)查询名字中包含白字的所有雇员信息; (4)查询不姓李或者胡,并且名字为三个字的雇员的记录 (1)查询每个雇员的情况以及其薪水情况(2)查询收入高于编号为102201的员工收入的职工信息(1)求财务部员工的平均净收入 (2)求财务部雇员的总人数 (1)求各部门的雇
24、员数(2)将各雇员的情况按薪水由低到高排列(选做题)查找比所有财务部的员工的收入都高的员工的姓名;SELECT 姓名FROM Employees WHERE 编号 IN (SELECT 编号 FROM Salary WHERE 收入All(SELECT 收入 FROM Salary WHERE 编号 IN(SELECT 编号 FROM Employees WHERE 部门号=1)运行结果: 数据库原理第三次实验一、实验内容:数据库的表中数据的操作。二、实验目的:1、学习SQL语句进行表中的数据的插入、更新和删除;2、学会含有子查询语句的数据更新操作;2、理解表中列的属性对表中数据的影响。三、实
25、验准备试用上次实验创建的员工管理数据库(compy)及相应的四张表(具体见实验2):Employees:员工信息表Departments:部门信息表Salary:员工薪水信息表PurchASe:员工购物信息表四、实验题目:1、向Employees表中加入一列:年龄,其值为“当前时间”与“出生日期”差值(提示:年龄的计算可以使用getdate及year两个日期函数,具体使用参考联机丛书Transact SQL参考)。2、数据更新:1)将编号为102201的雇员地址改为“苏州”;2)将编号为102208的雇员收入降低10;3)更改salary表,如果收入和支出的差值小于2000,则将收入提高100
26、0;3、使用SELECTINTO进行多行插入: 将每个部门的编号,名称,雇员数,插入到新表DepartmentStatic中。4、含子查询的数据更新 (1)将地址为合肥的雇员收入增加5 (2)将收入小于平均收入的雇员的收入增加500元 (3)将财务部的雇员收入减少100 5、删除 删除DepartmentStatic中所有数据 6、(选做)(1)将总收入大于6000的部门中的雇员收入减少5(2)删除收入大于平均收入的雇员的信息,包括Employees, Salary中相关的数据5、实验过程 1、 UPDATE Employees SET 地址=苏州 WHERE 编号=102201SELECT
27、* FROM Employees 2、 UPDATE Salary SET 收入=收入*0.9 WHERE 编号=102208UPDATE Salary SET 收入=收入+1000WHERE abs(收入-支出)20003、SELECT * FROM Salary SELECT 部门编号,部门名称,备注 INto DepartmentStatic FROM DepartmentsSELECT * FROM DepartmentStatic 4、UPDATE Salary SET 收入=收入*1.05 WHERE 编号 IN (SELECT 编号 FROM Employees WHERE 地址
28、=合肥);UPDATE Salary SET 收入=收入+500 WHERE 收入(SELECT AVG(收入) FROM Salary);UPDATE Salary SET 收入=收入-100 WHERE 编号 IN (SELECT 编号 FROM Employees,Departments WHERE Employees.部门号=Departments.部门编号 and Departments.部门名称=财务部)5、TRUNCATE TABLE DepartmentStatic /*删除*/SELECT * FROM DepartmentStatic六 运行结果及选做题 1、向Employees表中加入一列:年龄2、数据更新3、使用SELECTINTO进行多行插入:5、删除选做6、(1)将总收入大于6000的部门中的雇员收入减少5(2)删除收入大于平均收入的雇员的信息,包括Employees, Salary中相关的数据程序(1)UPDATE Salary SET 收入=收入*0.95WHERE 编号 I
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1