SQLSERVER2008实用教程实验参考答案(实验4)
数据库实验指导—SQL_Server_2008
目录目录 (2)实验1 SQL Server的安装及管理工具的使用 (3)实验2 交互式SQL (4)实验3 数据完整性和安全性管理 (16)实验4 触发器和存储过程实验 (26)实验5 数据库备份与恢复 (30)实验6 数据库设计综合应用 (31)实验1 SQL Server的安装及管理工具的使用一、实验目的1、通过对某个商用数据库管理系统的使用,了解DBMS的工作原理和系统构架。
在此推荐数据库管理系统SQL Server 2005,该系统已经在机房FTP上。
你也可以从微软官方网站上下载该系统。
2、熟悉对DBMS的操作二、实验内容1、根据安装文件的说明安装数据库管理系统。
在安装过程中记录安装的选择,并且对所作的选择进行思考,为何要进行这样的配置,对今后运行数据库管理系统会有什么影响。
2、学会启动和停止数据库服务,思考可以用哪些方式来完成启动和停止。
3、掌握管理工具的使用(1)SQL Server Management Studio的使用➢连接服务器的方法➢查询编辑器的使用(2)配置管理器的使用4、了解数据库系统的逻辑组件:它们主要是数据库对象,包括基本表、视图、触发器、存储过程、约束等。
今后将学习如何操作这些数据库对象。
三、实验报告要求1、给出安装过程中出现的错误及解决方法。
2、根据你所了解的SQL Server工具,写出部分主要组件的功能(以SQL Server2005为例,写出SQL Server Management Studio、配置管理器)。
实验2 交互式SQL2.1创建数据库及表一、实验目的本次实验了解SQL Server 2005的启动,熟悉如何使用SSMS和SQL建立数据库和表,并加深对于完整性的理解。
二、背景知识在使用数据库的过程中,接触最多的就是数据库中的表。
表是数据存储的地方,是数据库中最重要的部分,管理好表也就管理好了数据库。
表是由行和列组成的。
创建表的过程主要就是定义表的列的过程。
SQL server 2008数据库实验
实验九.视图和索引及数据库关系图
视图操作
创建视图view_s_grade
修改视图只显示分数大于80的人
创建索引
实验十. sql server事务管理
定义一个事务,更改s表的数据
事务处理,一条有误两条都不写入数据库
事务处理
定义一个事务,向表插入一段数据再删除,结果没有删除该数据
向s表插入数据Βιβλιοθήκη 在sc表中删除s13 c10的记录。
实验四.数据库约束实验
利用数据库关系图管理主键。
利用表设计管理主键。
利用T-SQL定义主键。
唯一性约束的设置与删除。
实验五. select数据查询
查询数学系的学生的学号和姓名。
查询每个学生的情况和所选的课程号
查询学了体育的学生的学号和姓名
学了体育的比此课程平均成绩大的学号和成绩
实验十一. Sql server安全管理
创建新的账户和用户
创建登陆账户
创建数据库用户
把查询表s的权限授给login_account_user
删除数据用户
删除登陆账户
实验十二.数据库的备份和恢复
分离数据库
分离数据库
数据库的附加
数据库备份
还原数据库
实验十三.数据的导入导出
数据的导出
数据的导入
实验一.SQL server 2008基本服务和信息
创建test表和索引
查询test表的信息
查询column的id
查看表分区信息
实验二.数据库的创建和管理
数据库的创建
数据库的创建
修改数据库属性
删除数据库
实验三.数据表的创建和管理
建立Dept-info表
SQL Server 2008 实验
实验步骤:
1、 在 SSMS 图形化界面下创建对表 Customers 进行插入、 进行插入、 、 修改和删除操作的 3 个存储 过程: 过程:insertCustomers、updateCustomers、deleteCustomers。
2、 在查询分析器中创建一个存储过程,要求输入作者的姓和名,如果存在则返回这个 、 在查询分析器中创建一个存储过程,要求输入作者的姓和名, 作者所出版的书的信息;否则给出相应的提示信息。 作者所出版的书的信息;否则给出相应的提示信息。
SET NOCOUNT ON; UPDATE Customers SET Cno=@CustomerNo1,Cname=@CustomerName, Csex=@CustomerSex,Cjian=@CustomerJ WHERE Cno=@CustomerNo END GO
③ 删除
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE deleteCustomers @CustomerNo char(10) AS BEGIN SET NOCOUNT ON; DELETE FROM WHERE END GO Customers
SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE insertCustomers @CustomerNo char(10),@CustomerName char(8), @CustomerSex char(2),@CustomerJ Varchar(50) AS BEGIN SET NOCOUNT ON; INSERT Customers VALUES (@CustomerNo,@CustomerName,@CustomerSex,@CustomerJ) END GO
SQLSERVER2008实用教程实验参考答案(综合实验)
系统开发入门实习2 VISUAL C#2008/SQL Server2008员工信息管理系统一、新建项目1. 运行Visual Stutio2008,单击菜单“文件-新建-项目”,在弹出的对话框中选择“Visual C#-Windows窗体应用程序”模板,命名为SimpleCRM,确定。
2. 新建父窗体:右击项目名“添加-Windows窗体”,选择“MDI父窗体”,确定。
3. 设计父窗体:1)父窗体的Text属性值设置为:员工管理系统。
删除父窗体中原有的menuStrip和toolStrip 控件。
2)添加菜单。
从工具箱中拖放一个menuStrip菜单控件到父窗体中,分别添加员工管理和关于菜单。
并在菜单下分别添加员工管理、工资管理和关于、帮助子菜单。
3)删除原有代码。
按F7键打开代码页,删除MDIParent1部分类中除构造函数外的所有代码。
4)添加代码。
切换到窗体设计窗口,双击员工管理子菜单,在“员工管理ToolStripMenuItem1_Click”方法中添加如下代码。
Form1 form1 = new Form1();form1.MdiParent = this;form1.Show();5)将父窗体设置为首选执行窗体。
在解决方案资源管理器中打开“Program.cs”文件,将“form1”修改为“MDIParent1”6)修改父窗体和子窗体的Size。
父窗体Size改为1024,768。
子窗体改为800,600。
二、设计员工管理窗体员工管理窗体(Form1.cs)的功能包括:员工查询、员工添加、员工修改、员工删除。
主要操作数据库YGGL下的Employees表。
1)添加控件:2个GroupBox、4个Button、9个Label、9个TextBox、1个DataGridView。
调整控件布局,修改控件Text属性值。
2)DataGridView控件设置。
打开DataGridView的属性窗口,单击DataSource属性,添加项目数据源,弹出“数据源配置向导”对话框。
sql_server实验指导 课后答案
sql_server实验指导课后答案一、实验目的1、掌握SQL Server的安装及配置;2、掌握SQL Server的基本操作;3、掌握SQL Server的数据库管理;4、掌握SQL Server的数据库设计;5、掌握SQL Server的数据库查询;6、掌握SQL Server的数据库维护;7、掌握SQL Server的数据库安全管理。
二、实验内容1、安装SQL Server首先,我们需要下载SQL Server安装文件,然后双击安装文件,按照提示安装SQL Server,安装完成后,我们就可以使用SQL Server了。
2、配置SQL Server在安装完成后,我们需要配置SQL Server,配置SQL Server的方法有很多,比如设置SQL Server的安全性、设置SQL Server的连接属性、设置SQL Server的数据库文件位置等等。
3、基本操作在配置完成后,我们就可以使用SQL Server进行基本操作了,比如创建数据库、创建表、插入数据、更新数据、删除数据等等。
4、数据库管理在使用SQL Server进行基本操作后,我们还可以使用SQL Server进行数据库管理,比如创建视图、创建存储过程、创建触发器等等。
5、数据库设计在使用SQL Server进行数据库管理后,我们还可以使用SQL Server进行数据库设计,比如设计数据库模式、设计数据库索引、设计数据库视图等等。
6、数据库查询在使用SQL Server进行数据库设计后,我们还可以使用SQL Server进行数据库查询,比如使用SELECT语句查询数据、使用JOIN语句查询数据、使用GROUP BY语句查询数据等等。
7、数据库维护在使用SQL Server进行数据库查询后,我们还可以使用SQL Server进行数据库维护,比如备份数据库、恢复数据库、优化数据库等等。
8、数据库安全管理在使用SQL Server进行数据库维护后,我们还可以使用SQL Server进行数据库安全管理,比如设置用户权限、设置数据库安全策略、设置数据库审计等等。
数据库技术与应用SQLServer2008第4章习题参考答案
数据库技术与应用SQLServer2008第4章习题参考答案第4章习题解答1.思考题(1)在SQL的查询语句SELECT中,使用什么选项实现投影运算?什么选项实现连接运算?什么选项实现选择运算?答:在SQL的查询语句中,select选项实现(投影)运算,from选项实现(连接)运算,where选项实现(选择)运算。
(2)一个子SELECT的结果作为查询的条件,即在一个SELECT 语句的WHERE子句中出现另一个SELECT语句,这种查询称为什么查询?其功能是什么?答:称为嵌套查询。
嵌套查询是T-SQL语言的高级查询,它可以用多个简单的基本查询构成复杂的查询,从而增强其查询功能。
(3)在SELECT语句中,定义一个区间范围的特殊运算符是什么?检查一个属性值是否属于一组值中的特殊运算符又是什么?答:在SELECT 语句中,定义一个区间范围的特殊运算符是BETWEEN,检查一个属性值是否属于一组值的特殊运算符是IN。
(4)在T-SQL语句中,与表达式“工资BETWEEN 2000 AND 5000”功能相同的表达式如何写?答:工资>=2000 AND 工资<=5000(5)语句“SELECT * FROM 成绩表WHERE 成绩>(SELECT avg(成绩) FROM 成绩表)”的功能是什么?答:查询成绩表中所有成绩大于平均成绩的记录2.选择题(1)在SELECT语句中,需显示的内容使用“*”,则表示(B)。
A.选择任何属性B.选择所有属性C.选择所有元组D.选择主键(2)查询时要去掉重复的元组,则在SELECT语句中使用(D)。
A.All B.UNION C.LIKE D.DISTINCT(3)在SELECT语句中使用GROUP BY C_NO时,C_NO必须(C)。
A.在WHERE子句中出现B.在FROM子句出现C.在SELECT子句中出现D.在HAVING子句中出现(4)使用SELECT语句进行分组查询时,为了去掉不满足条件的分组,应当(B)。
SQL实验(实验4至实验7的答案)
SQL实验实验41.用select 语句查询departments和salary表中的所有数据:select salary.*, departments.*from salary ,departments2、查询departments 中的departmentid:select departmentid from departmentsgo3、查询 salary中的 income,outcome:select income,outcome from salarygo4、查询employees表中的部门号,性别,要用distinct消除重复行:select distinct(departmentid), sexfrom employees5、查询月收入高于2000元的员工号码:select employeeid from salarywhere income>2000go6、查询1970年以后出生的员工的姓名和住址:select name,addressfrom employeeswhere birthday>1970go7、查询所有财务部的员工的号码和姓名:select employeeid ,namefrom employeeswhere departmentid in(select departmentid from departments where departmentname='财务部')go8、查询employees员工的姓名,住址和收入水平,2000元以下显示为低收入,2000~3000元显示为中等收入,3000元以上显示为高收入:select name,address,casewhen income-outcome<2000 then'低收入'when income-outcome>3000 then'高收入'else'中等收入'end as'收入等级'from employees,salarywhere employees.employeeid=salary.employeeidgo9、计算salary表中员工月收入的评价数:select avg(income)as'平均收入'from salary10、查找employees表中最大的员工号码:select max(employeeid)as'最大员工号码'from employees11、计算salary表中的所有员工的总支出:select sum(outcome)as'总支出'from salary12、查询财务部雇员的最高实际收入:select max(income-outcome)from salary ,employees,departmentswhere salary.employeeid=employees.employeeid andemployees.departmentid=departments.departmentid and departmentname='财务部'go13、查询财务部雇员的最低实际收入:select min(income-outcome)from salary ,employees,departmentswhere salary.employeeid=employees.employeeid andemployees.departmentid=departments.departmentid and departmentname='财务部'go14、找出所用地址中含有“中山”的雇员的号码及部门号:select employeeid ,departmentidfrom employeeswhere address like'%中山%'go15、查找员工号码中倒数第二个数字为0的员工的姓名,地址和学历:select education,address,namefrom employeeswhere employeeid like'%0_'go16、使用into字句,由表employees创建“男员工1”表,包括编号和姓名:select employeeid,nameinto男员工表from employeeswhere sex='1'go17、用子查询的方法查找收入在2500元以下的雇员的情况:select*from employeeswhere employeeid in(select employeeid from salary where income<2500)go18、用子查询的方法查找查找研发部比所有财务部雇员收入都高的雇员的姓名:SELECT Name FROM Employees WHERE EmployeeID IN(SELECT EmployeeID FROM SalaryWHERE EmployeeID IN(SELECT EmployeeId FROM EmployeesWHERE DepartmentID IN(SELECT DepartmentID FROM DepartmentsWHERE DepartmentName='研发部'))AND InCome>ALL(SELECT InCome FROM SalaryWHERE EmployeeID IN(SELECT EmployeeId FROM EmployeesWHERE DepartmentID IN(SELECT DepartmentID FROM DepartmentsWHERE DepartmentName='财务部'))))19、用子查询的方法查找所有年龄比研发部雇员都大的雇员的姓名:select namefrom employeeswhere Birthday<all(select birthdayfrom employeeswhere departmentid in(select departmentidfrom departmentswhere departmentname='研发部'))20、查询每个员工的情况及其薪水的情况:select employees.*,departments.departmentnamefrom employees,departmentswhere employees.departmentid=departments.departmentid 21、使用内连接方法查找不在财务部工作的所有员工信息:select employees.*from employees inner join departments onemployees.departmentid=departments.departmentidwhere departmentname!='财务部'22、使用外连接方法查找出所有员工的月收入:select employees.*,salary.incomefrom employees join salary on employees.employeeid=salary.employeeid 23、查找财务部雇员的最高收入:select max(income)from salarywhere employeeid in(select employeeidfrom employeeswhere departmentid in(select departmentidfrom departmentswhere departmentname='财务部'))24、查询财务部雇员的最高实际收入:select max(income-outcome)from salarywhere employeeid in(select employeeidfrom employeeswhere departmentid in(select departmentidfrom departmentswhere departmentname='财务部'))25、统计财务部收入在2500元以上的雇员人数:select count(employeeid)from employeeswhere departmentid in(select departmentid from departmentswhere departmentname='财务部')and employeeid in(select employeeidfrom salarywhere income>2500)26、按部门列出在该部门工作的员工的人数:select departmentid ,count(*)as人数from employeesgroup by departmentid27、按员工的学历分组:select education ,count(*)as人数from employeesgroup by education28、按员工的工作年份分组,统计年份人数:select workyear ,count(*)as人数from employeesgroup by workyear29、按各雇员的情况收入由低到高排列:select employees.*,salary.incomefrom employees ,salarywhere employees.employeeid=salary.employeeidorder by income30、将员工信息按出生时间从小到大排列:select*from employeesorder by birthday31、在order by 字句中使用子查询,查询员工姓名,性别和工龄信息,要求按实际收入从大到小排列:select name,sex,workyear,income-outcomefrom salary ,employeeswhere salary.employeeid=employees.employeeidorder by income-outcome desc视图部分1、创建view1:Create view view1asselect employees.employeeid,name,departmentname,(income-outcome)as comefrom employees , departments , salarywhere employees.departmentid=departments.departmentid and employees.employeeid=salary.employeeid2、查询视图employeeid:3、向视图view1中插入一行数据:insert into view1 values('111111','谎言','1','30000')4、查看视图(没有影响)基本表:实验51、定义一个变量,用于描述YGGL数据库的salary表中000001号员工的实际收入,然后查询该变量:declare @hy intset @hy=(select income-outcomefrom salarywhere employeeid='000001')select @hy2、使用运算符“>”:select namefrom employeeswhere birthday>'1974-10-10'3、判断姓名为“王林”的员工实际收入是否高于3000元,如果是则显示“高收入”,否则显示“收入不高于3000”:if((select incomefrom salary,employeeswhere salary.employeeid=employees.employeeid and ='刘明')>3000)select income as'高收入'from salary,employeeswhere salary.employeeid=employees.employeeid and ='刘明' elseselect'收入不高于'4、使用循环输出一个“*”三角形:declare @i intdeclare @j intset @j=20set @i=1while @i<@jbeginprint(space((@j-@i)/2)+replicate('*',@i))set @i=@i+2end4、按部门进行分类,使用if语句实现:Create function hy1(@departmentid1 char(3))returns char(10)asbegindeclare @hy1 char(10)if((select departmentid from departments where@departmentid1=departmentid)='1')set @hy1='财务部'if((select departmentid from departments where@departmentid1=departmentid)='2')set @hy1='人力资源部'if((select departmentid from departments where@departmentid1=departmentid)='3')set @hy1='经理办公室'if((select departmentid from departments where@departmentid1=departmentid)='4')set @hy1='研发部'if((select departmentid from departments where@departmentid1=departmentid)='5')set @hy1='市场部'return @hy1endselect employeeid,name,address,dbo.hy1(departmentid)from employees select employeeid,name,address,case departmentidwhen 1 then'财务部'when 2 then'人力资源部'when 3 then'经理办公室'when 4 then'研发部'when 5 then'市场部'end as部门号from employees6、自定义一个函数,计算一个数的阶层:create function hy(@hy2 int)returns intasbegindeclare @i intset @i=@hy2declare @j intset @j=1while @i>1beginset @j=@j*@iset @i=@i-1endreturn(@j)enddeclare @h intexec @h=dbo.hy 4select @h as'jiecheng'7、/*生成随机数*/select rand()8、/*平方*/select square(12)9、/*求财务部收入最高的员工姓名*/select max(name)from employeeswhere employeeid in(select employeeidfrom salarywhere employeeid in(select employeeidfrom employeeswhere departmentid in(select departmentidfrom departmentswhere departmentname='财务部')))select avg(income)as'平均收入'from salary/*聚合函数与group by 一起使用*/select workyear ,count(*)as人数from employeesgroup by workyear/*将字符组成字符串*/select char(123)/*返回字符串左边开始的个字符*/select left('abcdef',2)/*返回指定日期时间的天数*/select day(birthday)from employeeswhere employeeid='010000'/*获取当前时间*/select getdate()实验61、创建索引:create unique index huangyanon employees(employeeid)2、/*用create index 语句创建主键*/3、重建表employees中employeeid列上的索引alter index huangyanon employees rebuild4、删除索引:5、创建一个新表,使用一个复合列作为主键,作为表的约束,并为其命名:create table employees5( employeeid char(6)not null,name char(5)not null,sex tinyint,education char(4),constraint yan primary key(employeeid,name))为新表添加一列:alter table employees5add address char(10)6、创建新表student,性别只能包含男或女:create table student(号码char(6)not null,性别char(2)not nullcheck(性别in('男','女')))7、创建新表:create table employees7(学号char(10)not null,出生日期datetime not nullcheck(出生日期>'1980-01-01'))8、创建一个规则:9,创建salary2:create table salary2(employeeid char(6)not null primary key,income float not null,outcome float not null,foreign key(employeeid)references salary(employeeid)on update cascadeon delete cascade)10、添加一个外键,salary与employees有相关记录,则拒绝更新employees:alter table salaryadd constraint kc_forforeign key(employeeid)references employees(employeeid)on delete no actionon update no action实验71、工作年份大于6时,跟换科室到经理办公室(根据员工):Create PROC UpdateDeptByYear(@EmpId char(6))ASBEGINDECLARE @year intSELECT @year=WorkYear From Employees WHERE EmployeeID=@EmpId IF(@year>6)UPDATE EmployeesSET DepartmentID='3'WHERE EmployeeID=@EmpIdENDEXEC UpdateDeptByYear '020010'SELECT*FROM Employees WHERE Employeeid='020010'2、根据每个员工的学历将收入提高元:CREATE PROC UpdateInComeByEdu @Employeeid char(6)ASBEGINUPDATE SalarySET InCome=InCome+500FROM SalaryLEFT JOIN EmployeesON Salary.EmployeeID=Employees.EmployeeIDWHERE Salary.Employeeid=@EmployeeidENDEXEC UpdateInComeByEdu '020010'SELECT*FROM Salary where EmployeeID='020010'3、游标:CREATE PROCEDURE Employees_biliASBEGINDECLARE @i FLOATDECLARE @j FLOATDECLARE @Education CHAR(10)DECLARE Employees_cursor CURSORFOR SELECT Education FROM EmployeesSET @i=0SET @j=0OPEN Employees_cursorFETCH Employees_cursor INTO @EducationWHILE(@@FETCH_STATUS=0)BEGINIF(@Education!='大专')SET @i=@i+1SET @j=@j+1FETCH Employees_cursor INTO @EducationENDCLOSE Employees_cursorSELECT @i AS'本科及以上员工所占员工数'SELECT @j AS'员工总数'SELECT @i/@j AS'本科及以上员工所占比例'CLOSE Employees_cursorENDEXEC Employees_bili4、使用命令的方式修改存储过程的定义:5、对于YGGL数据库,表Employees的EmployeeID列与表Salary的EmployeeID列应该满足参照的完整性规则,请用触发器实现两个表的参照完整性:CREATE TRIGGER Salary_insert ON SalaryFOR INSERT,UPDATEASBEGINIF(SELECT EmployeeID FROM INSERTED)NOT IN(SELECT EmployeeID FROM Employees)ROLLBACKENDCREATE TRIGGER Employeesupdate ON EmployeesFOR UPDATEASBEGINUPDATE SalarySET EmployeeID=(SELECT EmployeeID FROM INSERTED)WHERE EmployeeID=(SELECT EmployeeID FROM DELETED)ENDCREATE TRIGGER Employeesdelete ON EmployeesFOR DELETEASBEGINDELETE FROM SalaryWHERE EmployeeID=(SELECT EmployeeID FROM DELETED)ENDINSERT INTO SalaryVALUES('000005',2000,1000)UPDATE EmployeesSET EmployeeID='000000'WHERE EmployeeID='990230'DELETE FROM EmployeesWHERE EmployeeID='000000'6.当修改表Employees时,若将Employees表中员工的工作时间增加1年,则将收入增加500,若增加2年则增加1000,依次增加。
sqlserver实验答案
sqlserver实验答案【篇一:sqlserver2008实用教程实验参考答案(实验6)】=txt>一、索引当表中数据量很大时,合理建立索引,可以提高查询的效率。
1. 对yggl数据库的employees表中的departmentid列建立索引create index em_d_ind on employees(departmentid)2. 在employees表的name列和address列上建立复合索引create index em_na_ind on employees(name,address)3. 对departments表上的departmentname列建立唯一非聚集索引create unique index de_n_ind ondepartments(departmentname)4. 重建索引alter index all on employees rebuild5. 删除索引drop index em_d_id on employees一次删除多个索引drop index employees.em_d_ind,employees.em_na_ind6. 使用界面方式创建、删除索引二、数据完整性1. 创建一个表employees5,只含有employeeid、name、sex和education列。
将name设为主键,并对employeeid列进行unique约束。
验证主键约束和唯一约束。
create table employees5()employeeid char(6) not null, name char(10) not null primary key, sex bit, education char(4) constraint uk_idunique(employeeid)2. 删除上例中创建的unique约束,删除后再验证唯一约束。
alter table employees5 drop constraint uk_id3. 创建新表,使用复合列作为主键。
SQL2008实训含答案
1.6 综合实训实训名称SQL Server 2008常用工具的使用。
实训任务(1) 启动并使用SQL Server Management Studio。
(2) 启动并使用SQL Server配置管理器。
实训目的(1) 掌握SQL Server Management Studio的基本操作方法。
(2) 掌握SQL Server配置管理器的基本操作方法。
实训环境Windows Server平台及SQL Server 2008系统。
实训容(1) 用SQL Server 2008的SSMS更改服务的状态。
(2) 用SQL Server 2008的配置管理器更改登录身份。
实训步骤操作具体步骤略,请参考相应案例。
实训结果在本次实训操作结果的基础上,分析总结并撰写实训报告。
实训步骤操作具体步骤略,请参考相应案例。
实训结果在本次实训操作结果的基础上,分析总结并撰写实训报告。
1.7 拓展项目安装自己的SQL Server 2008管理系统,并根据需求对系统进行合理配置。
2.6 综合实训实训名称创建并管理学生信息管理数据库(Students)。
实训任务(1) 使用SSMS对学生信息管理数据库(Students)进行创建、修改与删除等操作。
(2) 使用T-SQL命令对学生信息管理数据库(Students)进行创建、修改与删除等操作。
实训目的(1) 规划学生信息管理数据库(Students)的主数据文件、辅助数据文件与日志文件的名称、大小、增长方式与存储路径等属性。
(2) 在SSMS中完成学生信息管理数据库(Students)从创建、修改、分离、附加,直到删除的完整过程。
(3) 使用T-SQL语句完成学生信息管理数据库(Students)的创建、修改与删除等操作。
实训环境Windows Server平台及SQL Server 2008系统。
实训容Students数据库,该数据库包含一个主数据文件逻辑名‘StuInfo data1’,物理名‘C:\DATA\StuInfo data1.mdf’,初始容量3MB,最大容量10MB,每次增长量为15%;一个辅助数据文件逻辑名‘StuInfo data2’物理名‘D:\DATA\StuInfo data2.ndf ’,初始默认,最大容量不受限,每次增长量为2MB;一个事务日志文件逻辑名‘StuInfo log’物理名‘D:\DATA\StuInfo log.ldf ’,其他参数默认。
sql server 2008教程第04章
语法格式:
SELECT <select_list> /*指定要选择的列或行及其限定*/ [ INTO <new_table> ] /*INTO子句,指定结果存入新表*/ FROM <table_source> /*FROM子句,指定表或视图*/ [ WHERE <search_condition> ] /*WHERE子句,指定查询条件*/ [ GROUP BY <group_by_expression> ] /*GROUP BY子句,指定分组表达式*/ [ HAVING <search_condition> ] /*HAVING子句,指定分组统计条件*/ [ ORDER BY <order_expression> [ ASC | DESC ]] /*ORDER子句,指定排序表达式和顺序*/
4.1.3 连接(JOIN)
T1 1 2
T2 A B
T3 1 2
T4 3 0
T5 M N
4.1.3 连接(JOIN)
4.2 数据库的查询
要选择XSCJ为当前数据库,使用语句: USE XSCJ 一旦选择了当前数据库后,若对操作的数据库对象加以限定,则其后的 命令均是针对当前数据库中的表或视图等进行的。 下面介绍SELECT语句,它是T-SQL的核心。
用于范围比较的关键字有两个:BETWEEN和IN。 当要查询的条件是某个值的范围时,可以使用BETWEEN关键字。 BETWEEN关键字指出查询范围,格式为: expression [ NOT ] BETWEEN expression1 AND expression2
4.2.2 选择行
【例4.14】查询XSCJ数据库XS表中不在1979年出生的学生 情况。查询XSCJ数据库XS表中专业名为“计算机”或“通信 工程”或“无线电”的学生的情况。
《SQL_Server_2008_实验指导》课后作业
SQL Server 2008 实验指导课后作业问题一:创建数据库1.使用以下 SQL 语句创建一个名为myDB的数据库。
CREATE DATABASE myDB;2.使用以下 SQL 语句查询系统中的所有数据库。
SELECT name FROM sys.databases;问题二:创建表格1.在myDB数据库中,创建一个名为students的表格,包含以下字段:–id:学生编号,整数类型,主键;–name:学生姓名,字符串类型;–age:学生年龄,整数类型;–gender:学生性别,字符串类型。
USE myDB;CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(100),age INT,gender VARCHAR(10));2.使用以下SQL 语句查询students表格的结构信息。
EXEC sp_columns students;问题三:插入数据1.使用以下SQL 语句向students表格插入一条记录。
INSERT INTO students (id, name, age, gen der)VALUES (1, '张三', 20, '男');2.使用以下 SQL 语句查询students表格中的所有记录。
SELECT*FROM students;问题四:更新数据1.使用以下 SQL 语句更新students表格中的一条记录。
UPDATE studentsSET age =21WHERE id=1;2.使用以下 SQL 语句查询更新后的students表格中的记录。
SELECT*FROM students;问题五:删除数据1.使用以下 SQL 语句删除students表格中的一条记录。
DELETE FROM studentsWHERE id=1;2.使用以下 SQL 语句查询删除后的students表格中的记录。
SQLSERVER2008实用教程实验参考答案实验4
实验4 数据库的查询与视图一、SELECT语句的基本使用1、查询Employees表中所有数据2、查询Employees表中指定字段数据3、查询Employees表中的部门号与性别,要求使用Distinct消除重复行4、使用WHERE子句查询表中指定的数据查询编号为’000001’的雇员的地址与电话查询月收入高于2000元的员工号码查询1970年以后出生的员工的姓名与住址5、使用AS子句为表中字段指定别名查询Employees表中女雇员的地址与电话,并将列标题显示为地址与电话查询Employees表中男雇员的姓名与出生日期,并将列标题显示为姓名与出生日期6、使用使用CASE子句查询Employees表中员工的姓名与性别,要求Sex值为1时显示“男”,为0时显示“女”查询Employees表中员工的姓名、住址与收入水平,2000元以下显示为低收入,2000~3000地显示为中等收入,3000元以上显示为高收入。
7、使用SELECT语句进行简单计算计算每个雇员的实际收入8、使用内置函数获得员工总数计算Salary表中员工月收入的平均数获得Employees表中最大的员工号码计算Salary表中所有员工的总支出查询财务部雇员的最高与最低实际收入9、模糊查询找出所有姓王的雇员的部门号找出所有地址中含有“中山”的雇员的号码及部门号找出员工号码中倒数第二个数字为0的员工的姓名、地址与学历10、Between…And…与Or的使用找出收入在2000~3000元之间的雇员编号找出部门为“1”或“2”的雇员的编号11、使用INTO子句,由源表创建新表由表Salary创建“SalaryNew”表,要求包括编号与收入,选择收入在1500元以上的雇员由表Employees创建“EmployeesNew”表,要求包括编号与姓名,选择所有男员工二、子查询的使用1、查找在财务部工作的雇员情况2、用子查询的方法查找所有收入在2500以下的雇员的情况3、查找财务部年龄不低于研发部雇员年龄的雇员姓名4、用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名5、查找比所有财务部的雇员收入都高的雇员的姓名6、用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名三、连接查询的使用1、查询每个雇员的情况及薪水的情况2、查询每个雇员的情况及其工作部门的情况3、使用内连接的方法查询名字为“王林”的雇员所在的部门4、使用内连接的方法查找出不在财务部工作的所有雇员信息5、使用外连接方法查找出所有员工的月收入6、查找财务部收入在2000元以上的雇员姓名及其薪水详情7、查询研发部在1976年以前出生的雇员姓名及其薪水详请四、聚合函数的使用1、求财务部雇员的平均收入2、查询财务部雇员的最高与最低收入3、求财务部雇员的平均实际收入4、查询财务部雇员的最高与最低实际收入5、求财务部雇员的总人数6、统计财务部收入在2500元以上的雇员人数五、GROUP BY、ORDER BY子句的使用1、查找Employees表中男性与女性的人数2、按部门列出在该部门工作的员工的人数3、按员工的学历分组,排列出本科、大专、硕士的人数4、查找员工数超过2的部门名称与雇员数量5、按员工的工作年份分组,统计各个工作年份的人数,例如工作1年的多少人,工作2年的多少人6、将雇员的情况按收入由低到高排列7、将员工信息按出生时间从小到大排列8、在ORDER BY 子句中使用子查询,查询员工姓名、性别与工龄信息,要求按实际收入从大到小排列六、视图的使用1、创建视图(1)在数据库YGGL上创建视图Departments_View,视图包含Department表的全部列(2)创建视图Employees_Departments_View,视图包含员工号码、姓名、所在部门名称(3)创建视图Employees_Salary_View,视图包含员工号码、姓名与实际收入三列2、查询视图从视图Employees_Salary_View中查询出姓名为“王林”的员工的实际收入3、更新视图(1)向视图Departments_View中添加一条记录(‘6’,‘广告部’,‘广告业务’)执行完命令后,分别查瞧Departments_View与Department表中发生的变化(2)尝试向Employees_Departments_View中添加一条记录,瞧瞧会发生什么情况(3)尝试向Employees_Salary_View中添加一条记录,瞧瞧会发生什么情况(4)将视图Departments_View中,部门号为‘6’的部门名称修改为‘生产车间’(5)删除视图Departments_View中最新增加的的一条记录4、删除视图Employees_Departments_View5、在界面工具中操作视图一、SELECT语句的基本使用1、查询Employees表中所有数据SELECT*FROM Employees;2、查询Employees表中指定字段数据SELECT EmployeeID,Name,DepartmentID FROM Employees;3、查询Employees表中的部门号与性别,要求使用Distinct消除重复行SELECT Distinct DepartmentID,Sex FROM Employees;4、使用WHERE子句查询表中指定的数据查询编号为’000001’的雇员的地址与电话Select Address,PhoneNumber FROM Employees WHERE EmployeeID='000001';查询月收入高于2000元的员工号码SELECT EmployeeID FROM Salary WHERE InCome>2000;查询1970年以后出生的员工的姓名与住址SELECT Name,Address FROM Employees WHERE YEAR(Birthday)>'1970'; SELECT Name,Address FROM Employees WHERE Birthday>'1970';5、使用AS子句为表中字段指定别名查询Employees表中女雇员的地址与电话,并将列标题显示为地址与电话SELECT Address AS地址,PhoneNumber AS电话FROM Employees;查询Employees表中男雇员的姓名与出生日期,并将列标题显示为姓名与出生日期SELECT Name AS姓名,Birthday AS出生日期FROM Employees WHERE Sex=1;6、使用使用CASE子句查询Employees表中员工的姓名与性别,要求Sex值为1时显示“男”,为0时显示“女”SELECT Name AS姓名,CASEWHEN Sex=1 THEN'男'WHEN Sex=0 THEN'女'ENDAS性别FROM Employees;查询Employees表中员工的姓名、住址与收入水平,2000元以下显示为低收入,2000~3000地显示为中等收入,3000元以上显示为高收入。
SQL Server实验指导书(答案)
SQL Server数据库实验指导书目录实验一SQL Server常用管理工具的使用 (1)实验二数据库设计方法 (3)实验三数据库的管理 (6)实验四表的管理 (12)实验五数据查询1 (17)实验五数据查询2 (20)实验六视图的使用 (23)实验七索引 (25)实验八T-SQL语言 (26)实验九存储过程 (30)实验十触发器 (32)实验十一安全管理 (34)实验十二数据库的备份与恢复 (37)实验一SQL Server常用管理工具的使用实验目的1、理解服务的概念,掌握SQL Server服务的启动、暂停和停止;2、熟悉SQL Server数据库结构,掌握企业管理器的基本操作;3、理解查询分析器的作用,掌握查询分析器的常用用法;4、掌握联机丛书的用法。
实验内容与步骤1、服务管理器的用法SQL Server 是作为Windows 网络操作系统的一个服务运行的。
通过设置,可以在启动操作系统时自动启动SQL Server,也可以远程启动和停止SQL Server。
可以使用下列工具手工启动、暂停和停止SQL Server服务:●SQL Server企业管理器●SQL Server服务管理器●控制面板中的“服务”●在命令提示符中使用net命令net pause mssqlservernet continue mssqlservernet stop mssqlserver其中,服务管理器是最常用的图形界面工具。
实验要求1:使用SQL Server服务管理器查看SQL Server服务是否正在运行,若正在运行,将其停止。
实验要求2:使用控制面板中的“服务”管理控制台将已停止的SQL Server服务启动。
2、企业管理器的使用企业管理器是SQL Server提供的最主要的数据库管理图形界面工具,它以树形结构来组织数据库服务器、数据库和数据库中的对象,大部分的数据库管理工作都可以使用它来完成。
实验要求3:启动企业管理器,查看SQL Server的注册属性。
sql server 2008 数据库应用与开发教程 课后习题参考答案
SQL Server 2008数据库应用与开发教程(第二版)第一章习题参考答案1.简述SQL Server 2008系统中主要数据库对象的特点。
答:主要的数据库对象包括数据库关系图、表、视图、同义词、存储过程、函数、触发器、程序集、类型、规则和默认值等。
“表”节点中包含了数据库最基本、最重要的对象——表。
表实际用来存储系统数据和用户数据,是最核心的数据库对象。
“视图”节点包含了数据库中的视图对象。
视图是一种虚拟表,用来查看数据库中的一个或多个表,视图是建立在表基础之上的数据库对象,它主要以SELECT语句形式存在。
在“同义词”节点中包含了数据库中的同义词对象。
这是Microsoft SQL Server 2008系统新增的一种对象。
“可编程性”对象是一个逻辑组合,它包括存储过程、函数、触发器、程序集、类型、规则和默认值等对象。
数据库中的函数对象包含在“函数”节点中。
函数是接受参数、执行复杂操作并将结果以值的形式返回的例程。
2.SQL Server 2008数据库管理系统产品分为哪几个版本,各有什么特点?答:SQL Server 2008数据库管理系统产品的服务器版本包括了企业版和标准版,专业版本主要包括以下版本:工作组版(Workgroup)、开发人员版(Developer)、免费精简版(Express)、Web版,以及免费的集成数据库SQL Server Compact 3.5。
3.SQL Server 2008包含哪些组件,其功能各是什么?答:SQL Server 2008的体系结构是对SQL Server的组成部分和这些组成部分之间的描述。
Microsoft SQL Server 2008系统由4个组件组成,这4个组件被称为4个服务,分别是数据库引擎、Analysis Services、Reporting Services和Integration Services。
数据库引擎是Microsoft SQL Server 2008系统的核心服务,负责完成数据的存储、处理、查询和安全管理等操作。
SQL-2008实训含标准答案
1.6综合实训实训名称SQL Server 2008常用工具的使用。
实训任务(1)ﻩ启动并使用SQL Server Management Studio。
(2)启动并使用SQL Server配置管理器。
实训目的(1) 掌握SQL Server Management Studio的基本操作方法。
(2)掌握SQL Server配置管理器的基本操作方法。
实训环境Windows Server平台及SQL Server 2008系统。
实训内容(1)ﻩ用SQL Server 2008的SSMS更改服务的状态。
(2) 用SQL Server 2008的配置管理器更改登录身份。
实训步骤操作具体步骤略,请参考相应案例。
实训结果在本次实训操作结果的基础上,分析总结并撰写实训报告。
实训步骤操作具体步骤略,请参考相应案例。
实训结果在本次实训操作结果的基础上,分析总结并撰写实训报告。
1.7 拓展项目安装自己的SQL Server 2008管理系统,并根据需求对系统进行合理配置。
2.6综合实训实训名称创建并管理学生信息管理数据库(Students)。
实训任务(1) 使用SSMS对学生信息管理数据库(Students)进行创建、修改与删除等操作。
(2) 使用T-SQL命令对学生信息管理数据库(Students)进行创建、修改与删除等操作。
实训目的(1)规划学生信息管理数据库(Students)的主数据文件、辅助数据文件与日志文件的名称、大小、增长方式与存储路径等属性。
(2)在SSMS中完成学生信息管理数据库(Students)从创建、修改、分离、附加,直到删除的完整过程。
(3) 使用T-SQL语句完成学生信息管理数据库(Students)的创建、修改与删除等操作。
实训环境WindowsServer平台及SQL Server 2008系统。
实训内容Students数据库,该数据库包含一个主数据文件逻辑名‘StuInfodata1’,物理名‘C:\DATA\StuInfodata1.mdf’,初始容量3MB,最大容量10MB,每次增长量为15%;一个辅助数据文件逻辑名‘StuInfodata2’物理名‘D:\DATA\StuInfodat a2.ndf ’,初始默认,最大容量不受限,每次增长量为2MB;一个事务日志文件逻辑名‘St uInfolog’物理名‘D:\DATA\StuInfolog.ldf ’,其他参数默认。
sql server 2008案例教程及实训 第4章 表操作
练习:
1. 为BookInfo表添加‘图书页数’字段,类 型int,允许空。 2. 修改‘图书页数’类型为smallint,非空; 3. 删除’图书页数‘字段。
4.2.3 删除表
【例4.3】使用SQL Server Management Studio图形化 工具删除表BookInfo。
(1) 打开SSMS,连接到数据库服务器,展开“数据库”文 件夹,找到图书借阅信息管理系统。 (2) 展开“表”,选中要删除的表BookInfo,单击鼠标右 键,选择“删除”命令。 (3) 在弹出的“删除对象”对话框中,单击“确定”按钮。
)
4.3.2 修改表结构
修改表结构使用ALTER TABLE语句。其语法 格式如下:
ALTER TABLE 表名 {
[Add 新字段名 字段类型] | [Drop column 原字段名] | [Alter column 原字段名 字段类型] }
4.3.2 修改表结构
1. 添加字段
【例4.6】为表ReaderCard表添加一列“联系 电话”,数据类型为varchar(11),可以为空。
4.3.2 修改表结构
3. 删除字段
【例4.8】将ReaderCard表中的“联系电话” 字段删除。
ALTER TABLE ReaderCard drop column 联系电话
4.3.3 删除表
【例4.9】删除表CardType。 DROP TABLE CardType
Drop table删除的是整张表,删除成功后, 表在数据库中就不存在了。
4.3 用命令操作表
创建表使用CREATE TABLE语句, 语法格式如下:
CREATE TABLE 表名 (
列名1 数据类型 [列限定], 列名2 数据类型 [列限定], …… 列名n 数据类型 [列限定] )
(修改)SQL_Server_2008实验指导书
SQL Server 2008实验指导手册2015.4SQL Server 2008 的安装和环境介绍 (2)●实验指导——安装SQL Server 2008 (2)实验一创建和删除数据库数据表 (10)实验目的 (10)实验准备 (10)实验要求 (10)实验内容 (10)●实验指导——使用SQL语句创建和删除数据库数据表 (16)实验二交互式SQL (18)实验三视图与数据更新 (19)SQL Server 2008 的安装和环境介绍●实验指导——安装SQL Server 20081.根据安装机器软硬件的要求,选择一个合适的版本,以下以开发版为例2.将 SQL Server 2008 DVD 插入 DVD 驱动器。
如果DVD驱动器的自动运行功能无法启动安装程序,请导航到 DVD 的根目录然后启动splash.hta。
3.在自动运行的对话框中,单击“运行 SQL Server 安装向导”。
4.在“最终用户许可协议”页上,阅读许可协议,再选中相应的复选框以接受许可条款和条件。
接受许可协议后即可激活“下一步”按钮。
若要继续,请单击“下一步”若要结束安装程序,请单击“取消”。
如下图:5.在“SQL Server 组件更新”页上,安装程序将安装 SQL Server 2008 的必需软件。
有关组件要求的详细信息,请单击该页底部的“帮助”按钮。
若要开始执行组件更新,请单击“安装”。
更新完成之后若要继续,请单击“下一步”。
6.在“系统配置检查 (SCC)”页上,将扫描安装计算机,以检查是否存在可能妨碍安装程序的条件。
7.在“要安装的组件”页上,请选择要安装的组件。
选择各个组件组时,“要安装的组件”窗格中会显示相应的说明。
您可以选中任意一些复选框。
建议全选。
然后单击“下一步”继续。
8.在“实例名”页上,请为安装的软件选择默认实例或已命名的实例。
计算机上必须没有默认实例,才可以安装新的默认实例。
若要安装新的命名实例,请单击“命名实例”,然后在提供的空白处键入一个唯一的实例名。
数据库管理实验
实验报告课程名称:数据库原理实验类型:设计型实验项目名称:数据库管理实验学生姓名:专业:班级:班学号:实验地点:1560 实验日期:2013 年 4 月9 日一、实验目的和要求1、能根据要求写出相应的SQL语句。
2、能熟练掌握各种查询语句的使用。
3、能灵活运用多表查询和子查询。
二、实验内容1.查询“图书”表中所有图书的图书号、图书名、出版社和价格。
2.查询“图书”表中所有图书的图书号、图书名、出版社和图书的会员价,其中图书的会员价是图书原价的八五折。
3.查询“图书”表中“人民文学出版社”或“人民出版社”出版的图书的图书号、图书名、价格及出版社。
4.查询“图书”表中图书名以“三国”开头的图书的图书号、图书名、出版社信息。
5.查询价格最高的三本图书的信息。
6.分类统计各出版社中平均价格大于20元的图书的出版社及图书书目的数量。
7.查询所有图书的图书号、图书名、出版社、价格和数量。
8.查询所有图书价格低于30元的图书的借阅者号、借阅者姓名及所属单位。
9.在图书表中查询所有图书的价格,列出图书名和价格及价格区间,同时对价格做如下处理:▪当价格大于等于35元时,在结果中显示'价格较贵';▪当价格在20~35元时,在结果中显示'价格合理';当价格小于20元时,在结果中显示'价格便宜'。
三、实验环境(所使用的平台和相关软件)PC机;WINDOWS XP ;SQL SERVER 2008四、实验过程及实验结果1. SELECT*from Books2. SELECT出版社,书名,馆藏号,定价*0.85 会员价from Books3. SELECT书名,馆藏号,出版社,定价from Bookswhere出版社='人民文学出版社'or出版社='人民出版社'4.SELECT书名,馆藏号,出版社from Bookswhere书名like'[三国]%'5.SELECT TOP 3 *from Booksorder by定价DESC6. SELECT出版社,count(*)图书书目的数量from Bookswhere定价>20group by出版社7.SELECT馆藏号,ISBN,书名,出版社,定价,count(*)数量from Booksgroup by馆藏号,ISBN,书名,出版社,定价8. SELECT Readers.借书证号,所属单位,姓名from Borrowing join Readers on Borrowing.借书证号=Readers.借书证号join Books on Borrowing.馆藏号=Books.馆藏号where定价>209.SELECT书名,定价,casewhen定价>35 then'价格较贵'when定价between 20 and 35 then'价格合理'when定价<20 then'价格便宜'end as价格区间from books五、总结(对试验结果进行分析、问题解答、实验心得体会及改进意见。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验 4 数据库的查询和视图一、SELECT语句的基本使用1. 查询Employees 表中所有数据2. 查询Employees 表中指定字段数据3. 查询Employees 表中的部门号和性别,要求使用Distinct 消除重复行4. 使用WHERE子句查询表中指定的数据查询编号为 '000001 '的雇员的地址和电话查询月收入高于2000 元的员工号码查询1970 年以后出生的员工的姓名和住址5. 使用AS 子句为表中字段指定别名查询Employees 表中女雇员的地址和电话,并将列标题显示为地址和电话查询Employees 表中男雇员的姓名和出生日期,并将列标题显示为姓名和出生日期6. 使用使用CASE子句查询Employees 表中员工的姓名和性别,要求Sex值为 1 时显示“男” ,为0 时显示“女” 查询Employees 表中员工的姓名、住址和收入水平,2000 元以下显示为低收入,2000~3000 地显示为中等收入,3000 元以上显示为高收入。
7. 使用SELECT语句进行简单计算计算每个雇员的实际收入8. 使用内置函数获得员工总数计算Salary 表中员工月收入的平均数获得Employees 表中最大的员工号码计算Salary 表中所有员工的总支出查询财务部雇员的最高和最低实际收入9. 模糊查询找出所有姓王的雇员的部门号找出所有地址中含有“中山”的雇员的号码及部门号找出员工号码中倒数第二个数字为0 的员工的姓名、地址和学历10. Between ⋯And⋯和Or 的使用找出收入在2000~3000 元之间的雇员编号找出部门为“ 1”或“ 2”的雇员的编号11. 使用INTO 子句,由源表创建新表由表Salary 创建“ SalaryNew”表,要求包括编号和收入,选择收入在1500 元以上的雇员由表Employees 创建“ EmployeesNew ”表,要求包括编号和姓名,选择所有男员工二、子查询的使用1. 查找在财务部工作的雇员情况2. 用子查询的方法查找所有收入在2500 以下的雇员的情况3. 查找财务部年龄不低于研发部雇员年龄的雇员姓名4. 用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名5. 查找比所有财务部的雇员收入都高的雇员的姓名6. 用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名三、连接查询的使用1. 查询每个雇员的情况及薪水的情况2. 查询每个雇员的情况及其工作部门的情况3. 使用内连接的方法查询名字为“王林”的雇员所在的部门4. 使用内连接的方法查找出不在财务部工作的所有雇员信息5. 使用外连接方法查找出所有员工的月收入6. 查找财务部收入在2000 元以上的雇员姓名及其薪水详情7. 查询研发部在1976 年以前出生的雇员姓名及其薪水详请四、聚合函数的使用1. 求财务部雇员的平均收入2. 查询财务部雇员的最高和最低收入3. 求财务部雇员的平均实际收入4. 查询财务部雇员的最高和最低实际收入5. 求财务部雇员的总人数6. 统计财务部收入在2500 元以上的雇员人数五、GROUP BY、ORDER BY子句的使用1. 查找Employees 表中男性和女性的人数2. 按部门列出在该部门工作的员工的人数3. 按员工的学历分组,排列出本科、大专、硕士的人数4. 查找员工数超过 2 的部门名称和雇员数量5. 按员工的工作年份分组,统计各个工作年份的人数,例如工作 1 年的多少人,工作 2 年的多少人6. 将雇员的情况按收入由低到高排列7. 将员工信息按出生时间从小到大排列8. 在ORDER BY 子句中使用子查询,查询员工姓名、性别和工龄信息,要求按实际收入从大到小排列六、视图的使用1. 创建视图(1)在数据库YGGL上创建视图Departments_View ,视图包含Department 表的全部列(2)创建视图Employees_Departments_View ,视图包含员工号码、姓名、所在部门名称(3)创建视图Employees_Salary_View,视图包含员工号码、姓名和实际收入三列2. 查询视图从视图Employees_Salary_View 中查询出姓名为“王林”的员工的实际收入3. 更新视图(1)向视图Departments_View 中添加一条记录(‘ 6',‘广告部',‘广告业务' )执行完命令后,分别查看Departments_View 和Department 表中发生的变化(2)尝试向Employees_Departments_View 中添加一条记录,看看会发生什么情况(3)尝试向Employees_Salary_View 中添加一条记录,看看会发生什么情况(4)将视图Departments_View 中,部门号为‘ 6'的部门名称修改为‘生产车间' (5)删除视图Departments_View 中最新增加的的一条记录4. 删除视图Employees_Departments_View5. 在界面工具中操作视图一、SELECT语句的基本使用1. 查询Employees 表中所有数据SELECT * FROM Employees ;2. 查询Employees 表中指定字段数据SELECT EmployeeID , Name, DepartmentID FROM Employees ;3. 查询Employees 表中的部门号和性别,要求使用Distinct 消除重复行SELECT Distinct DepartmentID , Sex FROM Employees ;4. 使用WHERE子句查询表中指定的数据查询编号为 '000001 '的雇员的地址和电话Select Address , PhoneNumber FROM Employees WHERE EmployeeID = '000001'; 查询月收入高于2000 元的员工号码SELECT EmployeeID FROM Salary WHERE InCome >2000 ;查询1970 年以后出生的员工的姓名和住址SELECT Name,Address FROM Employees WHERE YEAR(Birthday)>'1970';SELECT Name, Address FROM Employees WHERE Birthday > '1970';5. 使用AS 子句为表中字段指定别名查询Employees 表中女雇员的地址和电话,并将列标题显示为地址和电话SELECT Address AS 地址, PhoneNumber AS 电话FROM Employees ;查询Employees 表中男雇员的姓名和出生日期,并将列标题显示为姓名和出生日期SELECT Name AS 姓名, Birthday AS 出生日期FROM Employees WHERE Sex =1;6. 使用使用CASE子句查询Employees 表中员工的姓名和性别,要求Sex值为 1 时显示“男” ,为0 时显示“女” SELECT Name AS 姓名,CASEWHEN Sex =1 THEN ' 男'WHEN Sex =0 THEN ' 女'ENDAS 性别FROM Employees ;查询Employees 表中员工的姓名、住址和收入水平,2000 元以下显示为低收入,2000~3000 地显示为中等收入,3000 元以上显示为高收入。
SELECTa. Name AS 姓名, a. Address as 住址,CASEWHEN b. InCome <2000 THEN ' 低收入'WHEN b. InCome BETWEEN 2000 AND 3000 THEN ' 中等收入'WHEN b. InCome >3000 THEN ' 高收入'ENDAS 收入水平FROM Employees a, Salary bWHERE a. EmployeeID =b. EmployeeID ;7. 使用SELECT语句进行简单计算在Salary 表中,计算每个雇员的实际收入,并显示雇员编号和实际收入SELECT EmployeeID AS 雇员编号, InCome - OutCome AS 实际收入FROM Salary ;8. 使用聚合函数获得员工总数SELECT COUNT(*) FROM Employees ;计算Salary 表中员工月收入的平均数SELECT AVG( InCome ) AS 平均收入FROM Salary ;获得Employees 表中最大的员工号码SELECT MAX( EmployeeID ) AS 雇员编号FROM Employees ;计算Salary 表中所有员工的总支出SELECT SUM( OutCome ) AS 总支出FROM Salary ; 查询财务部雇员的最高和最低实际收入SELECT MAX( InCome - OutCome ) AS 最高收入, MIN ( InCome - OutCome ) AS 最低收入FROM Salary ;9. 模糊查询找出所有姓王的雇员的部门号SELECT DepartmentID AS 部门号FROM Employees WHERE Name like ' 王%' ; 找出所有地址中含有“中山”的雇员的编号及部门号SELECT EmployeeID AS 雇员编号, DepartmentID AS 部门号FROM Employees WHERE Address like '% 中山%' 找出雇员编号中倒数第二个数字为0 雇员的编号的姓名、地址和学历SELECT EmployeeID AS 雇员编号, Name AS 姓名, Address AS 地址, Education AS 学历FROM Employees WHERE SUBSTRING ( EmployeeID , 5, 1)= '0' ;10. Between ⋯And⋯和Or 的使用找出收入在2000~3000 元之间的雇员编号SELECT EmployeeID , InCome FROM Salary WHERE InCome BETWEEN 2000 AND 3000 ; 找出部门为“ 1”或“ 2”的雇员的编号SELECT EmployeeID , DepartmentID FROM Employees WHERE DepartmentID ='1' OR DepartmentID ='2' ;11. 使用INTO 子句,由源表创建新表由表Salary 创建“ SalaryNew”表,要求包括编号和收入,选择收入在1500 元以上的雇员SELECT EmployeeID , InComeINTO SalaryNewFROM SalaryWHERE InCome >1500 ;由表Employees 创建“ EmployeesNew ”表,要求包括编号和姓名,选择所有男员工SELECT EmployeeID , NameINTO EmployeesNewFROM EmployeesWHERE Sex =1;二、子查询的使用1. 查找在财务部工作的雇员情况-- 分析: 雇员表和部门表通过DepartmentID 进行关联--1) 在Departments 表中查找财务部的编号--2) 在Employees 表中查找部门的雇员情况SELECT * FROM Employees WHERE DepartmentID =(SELECT DepartmentID FROM Departments WHERE DepartmentName =' 财务部 ' );2. 用子查询的方法查找所有收入在 2500 以下的雇员的情况-- 分析 : 员工表和收入表通过 EmployeeID 进行关联 SELECT * FROM Employees WHERE EmployeeID IN ( SELECT EmployeeID FROM Salary WHERE InCome <2500 );3. 查找财务部年龄不低于研发部雇员年龄的雇员姓名-- 分析 : 雇员表和部门表通过 DepartmentID 进行关联--1) --2) --3)雇员年龄SELECT 6. 用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名先找到研发部的部门编号 再通过部门编号找到研发部的雇员年龄 再找到财务部的部门编号 , 并通过部门编号查找雇员姓名, 条件是年龄不低于所有研发部WHERE DepartmentIDWHERE SELECT Name FROM EmployeesSELECT DepartmentID FROM Departments AND Birthday !> ALL(SELECT Birthday FROM Employees WHERE in (DepartmentNameDepartmentID in(WHERE DepartmentName=' 财务部 ' )SELECT DepartmentID FROM Departments4. 用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名 --1)--2)--3) =' 研发部 ' ));SELECT 查找财务部雇员的收入 查找研发部雇员的编号 , 条件是收入比所有财务部雇员收入都高 通过编号找到雇员姓名Name FROM SELECT SELECT EmployeeID EmployeeID Employees WHERE EmployeeID IN ( FROM Salary WHERE EmployeeID IN( FROM Employees WHERE DepartmentID =(DepartmentID> ALL( SELECT InCome FROM Salary WHERE EmployeeID IN(SELECT EmployeeID FROM Employees WHERE DepartmentID =( SELECT DepartmentID FROM Departments WHERE DepartmentName 5. 查找比所有财务部的雇员收入都高的雇员的姓名-- 分析 :1) 查找所有财务部的雇员收入--2) 查找其他雇员编号--3) 通过编号找到姓名 SELECT AND InComeName FROM SELECT SELECT SELECT FROM Departments WHERE DepartmentName, 条件是收入比所有财务部的雇员收入都高EmployeeIDInCome FROM Salary EmployeeID Employees WHERE EmployeeID FROM Salary WHERE InComeWhere EmployeeIDFROM EmployeesIN(>ALL( IN ( Where DepartmentID =( =' 研发部 ' ))=' 财务部 ' ))));=' 财务部 ' ))));DepartmentID FROM Departments WHERE DepartmentName-- 分析: 年龄都大等价于生日都小--1) 找到所有研发部雇员的生日--2) 找到其他部门雇员的姓名, 条件是生日比研发部的所有雇员的生日都小SELECT Name FROMEmployees WHERE Birthday < ALL ( SELECT Birthday FROM Employees WHERE DepartmentID IN ( SELECT DepartmentIDFROM Departments WHERE DepartmentName = ' 研发部' ));三、连接查询的使用1. 查询每个雇员的情况及薪水的情况SELECT a.*, b.*FROM Employees a, Salary bWHERE a. EmployeeID =b. EmployeeID ;2. 查询每个雇员的情况及其工作部门的情况SELECT a.*, b.*FROM Employees a, Departments bWHERE a. DepartmentID =b. DepartmentID ;3. 使用内连接的方法查询名字为“王林”的雇员所在的部门SELECT b. DepartmentName FROM Departments b INNER JOIN Employees aON a. DepartmentID =b. DepartmentIDWhere a. Name= ' 王林' ;4. 使用内连接的方法查找出不在财务部工作的所有雇员信息SELECT a.* FROM Employees a INNER JOIN Departments b ON a. DepartmentID =b. DepartmentIDWHERE b. DepartmentName != ' 财务部' ;5. 使用外连接方法查找出所有员工的月收入SELECT * FROM Employees a LEFT OUTER JOIN Salary b ON a. EmployeeID =b. EmployeeID ;6. 查找财务部收入在2000 元以上的雇员姓名及其薪水详情SELECT a.*, b. InCome FROM Employees aINNER JOIN Salary b ON a. EmployeeID =b. EmployeeID INNER JOIN Departments c ON a. DepartmentID =c. DepartmentIDWHERE b. InCome >2000 AND c. DepartmentName =' 财务部' ;7. 查询研发部在1976 年以前出生的雇员姓名及其薪水详请SELECT a.*, b. InCome FROM Employees a INNER JOIN Salary bON a. EmployeeID =b. EmployeeIDINNER JOIN Departments cON a. DepartmentID =c. DepartmentIDWHERE c. DepartmentName =' 研发部' AND a. Birthday >'1976'四、聚合函数的使用1. 求财务部雇员的平均收入SELECT AVG( a. InCome ) FROM Salary a INNER JOIN Employees bON a. EmployeeID =b. EmployeeIDINNER JOIN Departments cON c. DepartmentID =b. DepartmentID WHERE c. DepartmentName =' 财务部' ;2. 查询财务部雇员的最高和最低收入SELECT MIN ( a. InCome ), MAX( a. InCome ) FROM Salary aINNER JOIN Employees bON a. EmployeeID =b. EmployeeIDINNER JOIN Departments cON c. DepartmentID =b. DepartmentID WHERE c. DepartmentName =' 财务部' ;3. 求财务部雇员的平均实际收入SELECT AVG( a. InCome - a. OutCome ) FROM Salary aINNER JOIN Employees b ON a. EmployeeID =b. EmployeeIDINNER JOIN Departments c ON c. DepartmentID =b. DepartmentID WHERE c. DepartmentName =' 财务部' ;4. 查询财务部雇员的最高和最低实际收入SELECT MIN( a. InCome - a. OutCome ), MAX( a. InCome - a. OutCome ) FROM Salary a INNER JOIN Employees bON a. EmployeeID =b. EmployeeIDINNER JOIN Departments cON c. DepartmentID =b. DepartmentID WHERE c. DepartmentName =' 财务部' ;5. 求财务部雇员的总人数SELECT COUNT( a. EmployeeID ) FROM Employees aINNER JOIN Departments bON a. DepartmentID =b. DepartmentID WHERE b. DepartmentName =' 财务部' ;6. 统计财务部收入在2500 元以上的雇员人数SELECT COUNT( a. EmployeeID ) FROM Employees aINNER JOIN Departments bON a. DepartmentID =b. DepartmentIDINNER JOIN Salary cON c. EmployeeID =A. EmployeeIDWHERE c. InCome >2500 AND b. DepartmentName =' 财务部' ;五、GROUP BY、ORDER BY子句的使用1. 查找Employees 表中男性和女性的人数SELECT Sex , COUNT( Sex ) FROM Employees GROUP BY Sex ;2. 按部门列出在该部门工作的员工的人数-- 使用内连接的方法SELECT b. DepartmentName , COUNT( a. EmployeeID ) FROM Employees aINNER JOIN Departments bON a. DepartmentID =b. DepartmentID GROUP BY b. DepartmentName ;-- 使用多表查询方法,GROUP BY 后面的字段, 必须出现在SELECT 语句要查询的字段中。