数据查询报告.docx
《数据查询报告.docx》由会员分享,可在线阅读,更多相关《数据查询报告.docx(32页珍藏版)》请在冰豆网上搜索。
数据查询报告
实验1SQLServer2005环境
(1)对象资源管理器的使用
①进入“SQLServerManagementStudio”。
图1.1
②了解系统数据库和数据库的对象。
图1.2
③试试不同数据库对象的操作功能
图1.3
(3)查询分析器的使用
usestudentsys
select*fromtblstudent
Go
图1.4
(4)了解SQLServerManagementStudio中其他窗口的使用方法。
图1.5
实验2创建数据库和表
(1)在“对象资源管理器”中创建数据库YGGL。
图2.1
设定数据库的增长方式如图2.2
图2.2
图2.3
图2.4
图2.5
(2)删除YGGL数据库
USEmaster
GO
DROPDATABASEYGGL
(3)使用T-SQL语句创建数据库YGGL
createdatabaseYGGL
on
(
name='YGGL_data',
filename='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\YGGL.mdf',
size=10MB,
maxsize=50MB,
filegrowth=5%
)
logon
(
name='YGGL_log',
filename='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\YGGL_log.ldf',
size=2MB,
maxsize=5MB,
filegrowth=1MB
)
Go
(4)使用T-SQL语句创建表
useYGGL
go
createtableemployees
(
employeeIDchar(6)notnullprimarykey,
Namechar(10)notnull,
Educationchar(4)notnull,
Birthdaydatetimenotnull,
Sexbitnotnulldefault1,
WorkYeartinyintnull,
Addressvarchar(40)null,
PhoneNumberchar(12)null,
DepartmentIDchar(3)notnull
)
Go
useYGGL
go
createtableDepartments
(
DepartmentIDchar(3)notnullprimarykey,
DepartmentNamechar(20)notnull,
Notevarchar(100)null
)
go
useYGGL
createtableSalary
(
EmployeeIDchar(6)notnullprimarykey,
InComefloatnotnull,
OutComefloatnotnull
)
go
实验3表数据插入、修改和删除
(1)在“对象资源管理器”中初始化数据库YGGL中所有表的数据。
图3.1
图3.2
图3.3
(2)使用T-SQL命令插入表数据。
删除
useYGGL
go
insertintoemployeesvalues('000001','王林','1956-01-23','True','中山路-1-508','210003','335568','null','2',)
插入
useYGGL
go
insertintoSalary(employeeID,Income,Outcome)
values('000001',2100.8,123.09)
(4)使用SQL语句修改表数据。
①使用SQL命令修改表Salary中的某个记录的字段值:
updatesalary
setincome=2890
whereemployeeid='000001'
执行上述语句,将编号为000001的职工收入改为2890
②将所有职工收入增加100:
updatesalary
setincome=income+100;
执行完,打开Salary表查看数据的变化。
③使用SQL命令删除表Employmees中编号为000001的职工信息:
deletefromemployees
whereemployeeid='000001'
④删除所有女性员工信息:
deletefromemployees
wheresex=0
⑤使用TRANCATETABLE语句删除表中所有行:
truncatetablesalary
执行上述语句,将删除Salary表中的所有行。
实验4数据库的查询和视图
(3)SELECT语句的基本使用。
①对于实验2给出的数据库表结构,查询每个雇员的所有数据。
新建一个查询,在“查询分析器”窗口中输入如下语句并执行:
useYGGL
select*
fromemployees
go
②用SELECT语句查询Employees表中每个雇员的地址和电话。
新建一个查询,在“查询分析器”窗口中输入如下语句并执行:
useYGGL
go
selectaddress,phonenumber
fromemployees
③查询EmployeeID为000001的雇员的地址和电话。
useYGGL
go
selectaddress,phonenumber
fromemployees
whereemployeeid='000001'
go
④查询Employees表中男雇员的地址和电话,使用as子句将结果中各列的标题分别指定为地址、电话。
useYGGL
go
selectaddressas地址,phonenumberas电话
fromemployees
wheresex=1
go
⑤查询Employees表中员工姓名和性别,要求Sex值为1时显示“男”,为0时显示为“女”。
selectnameas姓名,
case
whensex=1then'男'
endas性别
fromemployees
⑥计算每个员工的实际收入。
useYGGL
go
selectemployeeID,实际收入=income-outcome
fromsalary
⑦获得员工总数。
selectcount(*)
fromemployees
⑧找出所有姓王的雇员的部门号。
useYGGL
go
selectdepartmentid
fromemployees
wherenamelike'王_'
⑨找出所有收入在2000~3000之间的员工的号码。
useYGGL
go
selectemployeeid
fromsalary
whereincomebetween2000and3000
⑩使用INTO子句,由表Salary创建“收入在1500以上的员工”表,包括编号和收入。
useYGGL
go
selectemployeeIDas编号,incomeas收入
into收入在以上的员工
fromsalary
whereincome>1500
(4)子查询的使用。
1查找在财务部工作的雇员的情况。
useYGGL
Go
select*fromemployees,departmentswhere
dbo.employees.departmentID=dbo.departments.departmentID
anddepartmentName='财务部'
2查找财务部年龄不低于研发部雇员年龄的雇员的姓名。
useYGGL
go
selectname
fromemployees
wheredepartmentidin
(
selectdepartmentid
fromdepartments
wheredepartmentname='财务部'
)
and
birthday!
>all
(
selectbirthday
fromemployees
wheredepartmentidin
(
selectdepartmentid
fromdepartments
wheredepartmentname='研发部'
)
)
3查找比所有财务部的雇员收入都高的雇员的姓名。
useYGGL
go
selectname
fromemployees
wheredepartmentidin
(
selectdepartmentid
fromsalary
whereincome>all
(
selectincome
fromsalary
wheredepartmentidin
(
selectemployeeid
fromemployees
wheredepartmentid=
(
selectdepartmentid
fromdepartments
wheredepartmentname='财务部'
)
)
)
)
(3)连接查询的使用。
1查询每个雇员的情况及其薪水的情况。
useYGGL
go
selectemployees.*,salary.*
fromemployees,salary
whereemployees.employeeid=salary.employeeid
2使用内连接的方法查询名字为“王林”的员工所在的部门。
useYGGL
go
selectdepartmentname
fromdepartmentsjoinemployees
ondepartments.departmentid=employees.departmentid
whereemployees.name='王林'
3查找财务部收入在2000以上的雇员姓名及其薪水详情。
useYGGL
go
selectname,income,outcome
fromdepartments,salary,employees
whereemployees.employeeid=salary.employeeid
andemployees.departmentid=departments.departmentid
anddepartmentname='财务部'
andincome>2000
(5)聚合函数的使用
1求财务部雇员的平均收入。
useYGGL
go
selectavg(income)as'财务部平均收入'
fromsalary
whereemployeeidin
(
selectemployeeid
fromemployees
wheredepartmentid=
(
selectdepartmentid
fromdepartments
wheredepartmentname='财务部'
)
)
2求财务部雇员的平均实际收入。
useYGGL
go
selectavg(income-outcome)as'财务部雇员平均实际收入'
fromsalary
whereemployeeidin
(
selectemployeeid
fromemployees
wheredepartmentid=
(
selectdepartmentid
fromdepartments
wheredepartmentname='财务部'
)
)
3求财务部雇员的总人数。
useYGGL
go
selectcount(employeeid)
fromemployees
wheredepartmentid=
(
selectdepartmentid
fromdepartments
wheredepartmentname='财务部')
(6)GROUPBY、ORDERBY子句的使用。
1查找Employees表中男性和女性的人数。
useYGGL
go
selectsex,count(sex)
fromemployees
groupbysex;
2查找员工数超过2人的部门名称和员工数量。
useYGGL
go
selectemployees.departmentid,count(*)as人数
fromemployees,departments
whereemployees.departmentid=departments.departmentid
groupbyemployees.departmentid
havingcount(*)>2
3将雇员的情况按收入由高到低排列。
useYGGL
go
selectemployees.*,salary.*
fromemployees,salary
whereemployees.employeeid=salary.employeeid
Orderbyincome
实验4.2视图的使用
实验内容
(1)创建视图
1创建YGGL数据库上的视图DS_VIEW,视图包含Departments表的全部列。
createviewDS_VIEW
asselect*fromdepartments
2创建YGGL数据库上的视图Employees_view,视图包含员工号码、姓名和实际收入三列。
createviewEmployees_view(Employeeid,name,realincome)
asselectemployees.employeeid,name,income-outcome
fromemployees,salary
whereemployees.employeeid=salary.employeeid
(2)查询视图。
1从视图DS_VIEW中查询出部门号为3的部门名称。
selectdepartmentname
fromds_view
wheredepartmentid='3'
2从视图Employees_view查询出姓名为“王林”的员工的实际收入。
selectrealincome
fromemployees_view
wherename='王林'
(3)更新视图。
1向视图DS_VIEW中插入一行数据:
“6,广告部,广告业务”。
insertintods_viewvalues('6','广告部','广告业务')
2修改视图DS—VIEW,将部门号为5的部门名称修改为“生产车间”。
updateds_viewsetdepartmentname='生产车间'
wheredepartmentid='5'
3修改视图Employees_view中员工号为“000001”的员工的姓名为“王浩”
updateemployees_viewsetname='王浩'
whereemployeeid='000001'
4删除视图DS_VIEW中部门号为“1”的一行数据。
deletefromds_view
wheredepartmentid='1'
(4)删除视图DS_VIEW。
dropviewds_view