SQLSERVER2008实用教程实验参考答案(实验4)
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 2008)全书答案 清华大学出版社 马建红 李占波主编第四章习题及实验答案
第四章习题及实验答案习题答案一、选择题1、D2、A3、B4、B5、B6、D7、A8、B9、C10、C二、填空题1、系统数据库、用户数据库2、master、model、msdb、tempdb3、主文件组(primary)、用户定义文件组,默认文件组(default)4、使用SQL Server Management Studio工具、使用CREATE DATABASE语句5、完全数据库备份、差异数据库备份、事务日志备份、文件或文件组备份三、简答题1、答:在SQL SERVER中常用的对象主要有:表、视图、索引、存储过程、触发器、函数等。
2、答:SQL SERVER中数据库文件包括数据文件和事务日志文件。
其中,数据文件用于存放数据库的数据和各种对象,数据文件又可以分成主数据文件和次数据文件两种形式。
主数据文件是数据库的起点,用来存储数据库的启动信息和部分或全部数据,每一个数据库都有且仅有一个主数据文件。
主数据文件名称的默认后缀是mdf。
次数据文件是可选的,它们可以存储不在主数据文件中的全部数据和对象。
而事务日志文件用于存放事务日志。
事务日志记录了对数据库的所有修改操作。
日志记录了每一个事务的开始、对数据的改变和取消修改的足够信息。
3、答:通常根据以下事实进行计算:(1)一个数据库的最小尺寸必须等于或大于model数据库的大小。
因为新建数据库是model数据库的拷贝。
(2)估算数据库的大小。
在Microsoft SQL Server系统中,最基本的数据存储单元是数据页,每一个页的大小是8KB,即8192字节。
每页除去96字节的头部(它是用来存储有关的页信息,如页类型、可用空间等),剩下的8096字节用来存储数据,且数据从紧接页头的位置开始,按行的顺序分布在数据页上,但在表中,数据行不能跨页存储。
这就意味着SQL Server数据库可以在1MB字节的空间里存储128页(即1M=1024KB=128×8KB)。
数据库技术与应用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. 创建新表,使用复合列作为主键。
sql server 2008表数据操作答案
Vmare Workstation 8及linux系统安装实验报告一、实验目的掌握虚拟机软件的安装和使用掌握Linux的安装掌握Linux的基本配置二、实验环境一台运行Windows的计算机(硬盘剩余空间在10G以上)、虚拟机软件Vmware、Linux安装软件。
三、实验内容安装虚拟机软件Vmware在Vmware中安装Linux。
四、主要步骤VMware安装完成后,重启机器后,打开VMware,如图1图1 VMware Workstation 主界面在VMware中新建一台虚拟机的主要步骤:1.选择File->New->Virtual Machine(或直接按ctrl+n键),出现新建虚拟机向导,如图2所示:图2 新建虚拟机向导2.选择”Custom(advanced)”3.Choose the Vitual Machine Hardware Compatability(选择虚拟机硬件兼容性),”Hardware compatability”选”Worksation 6.5-7.0”4.Guest Operating System Installation(寄宿操作系统安装,即虚拟机上安装的操作系统),如图3:图3 Guest OS 安装选项在”Install from”部分选取安装源,可从光盘驱动器(”Installer disc”)或光盘映像(“Installer disc image file(iso)”)安装,此处选择Fedora-8-i386-DVD.iso。
5.Name the Virtual Machine(命名虚拟机),如图4:图4 虚拟机名称及目录设置“Virtual machine name”设置此虚拟机的名称。
“Location”设置此虚拟机的安装位置。
6.Processor Configuration(处理器设置)“Number of processor”设置虚拟机使用的处理器数“Number of cores per processor”设置每处理器核心数7.Memory for the Virtual Machine(虚拟机内存设置)建议最小设置为512M推荐为虚拟机分配1G以上内存8.Network Type(虚拟机网络设置)此项设置为:”Use network address translation(NA T)”(使用网络地址转换),虚拟机操作系统共享宿主主机的网络IP地址与外部网络连接。
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表中专业名为“计算机”或“通信 工程”或“无线电”的学生的情况。
实验4.SQLServer数据表的管理_2-参考答案
实验4 SQL Server数据表的管理_2二、实验内容及步骤1.使用Transact-SQL语句CREA TE TABLE在选课数据库中创建student,course ,SC 表。
参见教材p852.SQL Server管理平台添加教材p82所示的数据略3 创建数据库关系图,建立数据库的完整备份,并上交该备份略4.使用Transact-SQL语句ALTER TABLE修改course表的“Cno”列,使之为非空。
ALTER TABLE courseALTER COLUMN Cno NOT NULL5.使用Transact-SQL语句ALTER TABLE修改SC表的“grade”列,使其数据类型为real。
ALTER TABLE SCALTER COLUMN分数real6.使用Transact-SQL语句ALTER TABLE修改选课表的”Sname”列,使其列名为“姓名”,数据类型为vachar(10),非空。
alter table student add姓名varchar(10) NOT NULL;update student set 姓名= Snamealter table student drop column Sname;7.使用Transact-SQL语句ALTER...ADD为选课数据库的SC表添加一个名为“备注”的数据列,其数据类型为V ARCHAR(20)。
ALTER TABLE SC ADD 备注V ARCHAR(20) NULL8.分别使用SQL Server管理平台和Transact-SQL语句DROP TABLE删除student数据库中SC表。
DROP TABLE student.dbo.SC9.分别使用SQL Server管理平台和SQL语句CREA TE INDEX 为SC表的“grade”字段创建一个非聚集索引,命名为SC_ grade。
CREATE INDEX SC_ grade ON SC (grade)10分别使用SQL Server管理平台和SQL语句CREA TE INDEX 为Course表的“Cname”创建一个唯一索引,命名为Course_id_Cname。
《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表格中的记录。
(word完整版)SQLServer2008数据库案例教程课后习题答案
(word完整版)SQLServer2008数据库案例教程课后习题答案《SQL Server 2008数据库案例教程》练习题及模拟试卷答案第1章⼀、判断题1. 数据库技术是是计算机数据处理与信息管理系统的核⼼。
(√)2. 数据是⽤于描述现实世界中具体事物或抽象概念,可存储的数字符号。
(×)3. 数据库是⼀个长期存储在计算机内的、有组织的、有共享的、统⼀管理的数据集合。
(√)4. 数据库管理系统是⼀个按数据结构来存储和管理数据的服务器管理系统。
(×)5. 关系数据库,是建⽴在关系模型基础上的数据库。
(√)⼆、单选题1. 数据(Data)是⼀些可存储并具有明确意义的(A)A. 符号B.图形C.⽂字D.数字2. ⼈⼯阶段计算机⽤于数值计算,没有操作系统及管理数据的软件。
这⼀阶段的年代是(C)A. 19世纪80年代B. 20世纪20年代C.20世纪50年代D. 20世纪80年代3. 在⽹页中常⽤的图像格式是(D)A..bmp和.jpgB..gif和.bmpC. .png和.bmpD. .gif和.jpg4.数据库系统的重要特征是什么?(D)A. 数据的独⽴性和动态性 B.数据的静态性和独⽴性C.数据的动态性和共享性 D.数据的独⽴性和共享性三、多选题1.与数据库技术密切相关的基本概念有(ABCD)A. 数据B. 数据库C. 数据库管理系统D. 数据库系统2.数据库可分为哪⼏种类型?(ABC)A. 关系型数据库B. ⽹状数据库C. 层次数据库D.树形数据库3. DBMS提供数据操作语⾔DML,为⽤户提供了哪些操作?(ABCD)A.数据的追加B.数据的删除C.数据的更新D.数据的查询4.DBMS要分类组织、存储和管理各种数据,包括哪些内容?(ABC)A. 数据字典B. ⽤户数据C. 存取路径D.服务器5. ⽬前,DBMS常见品牌有哪些公司?(ABC)A.微软公司的SQL Server B.IBM公司的DB2 C.甲⾻⽂公司的ORACLE D.索尼公司的MySQL四、填空题1.数据库(管理)技术经历了⼈⼯管理阶段和⽂件管理阶段。
sql_server实验指导 课后答案
sql_server实验指导课后答案一、实验题目1. 什么是SQL Server?答:SQL Server是一种关系型数据库管理系统(RDBMS),由微软公司开发,用于存储和管理大量的数据。
它可以处理复杂的数据查询,提供高性能的数据存储和管理,并且可以支持多种编程语言,如T-SQL、C#、Java等。
2. SQL Server的优势有哪些?答:SQL Server的优势有:(1)高性能:SQL Server提供了高性能的数据存储和管理,可以满足大量数据的需求。
(2)安全性:SQL Server提供了多种安全性功能,可以有效保护数据安全。
(3)可扩展性:SQL Server可以根据用户的需求进行扩展,满足不同的业务需求。
(4)可移植性:SQL Server可以跨多种操作系统运行,可以满足不同的环境需求。
(5)可维护性:SQL Server提供了多种维护功能,可以有效管理数据库。
3. 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数据库分析服务:用于分析数据库中的数据。
(8)SQL Server数据库服务器:用于管理数据库服务器。
sqlserver2008数据库应用与开发教程课后习题参考答案
sqlserver2008数据库应用与开发教程课后习题参考答案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。
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元以上显示为高收入。
SQLServer课后实训参考答案
课后实训参考答案单元1(SQL Server概述)1、使用SQL语句。
在Sale数据库中创建名为MyDataType的用户定义数据类型,数据类型为NV ARCHAR,长度为20,该列允许为NULL。
USE SaleGOEXEC sp_addtype MyDataType,'NVARCHAR(20)','NULL' GO单元2(单表数据)使用查询窗口或sqlcmd实施查询。
本实训使用Xk数据库。
--1.查看系部编号为“03”的系部名称。
USE XkGOSELECT DepartNameFROM DepartmentWHERE DepartNo='03'GO--2.查看系部名称中包含有“工程”两个字的系的全名。
USE XkGOSELECT DepartNameFROM DepartmentWHERE DepartName LIKE'%工程%' GO--3.显示共有多少个系部。
USE XKGOSELECT'系部总数'=COUNT(*)FROM DepartmentGO--4.显示“01”年级共有多少个班级。
USE XKGOSELECT'01 级班级数'=COUNT(*)FROM ClassWHERE ClassNo LIKE'2001%'GOSELECT'01 级班级数'=COUNT(*)FROM ClassWHERE ClassName LIKE'01%'GOSELECT'01 级班级数'=COUNT(*)FROM StudentWHERE ClassNo LIKE'2001%'GO--5.查看在“周二晚”上课的课程名称和教师。
USE XKGOSELECT'课程名称'=CouName,'任课教师'=TeacherFROM CourseWHERE SchoolTime='周二晚'GO--6.查看姓“张”、“陈”、“黄”同学的基本信息,要求按照姓名降序排序查询结果。
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实验指导书(答案)
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的注册属性。
数据库管理实验
实验报告课程名称:数据库原理实验类型:设计型实验项目名称:数据库管理实验学生姓名:专业:班级:班学号:实验地点: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五、总结(对试验结果进行分析、问题解答、实验心得体会及改进意见。
SQL Server 2008 第4次课
1、启动SQL Server 服务;
2、建立到SQL Server的连接;
2.3 SQL Server管理工具
2.3.1 SQL Server 配置管理器
2.3.2 SQL Server Management Studio
2.3.3 联机丛书
第1章 结束
系模式是_____。
A.第二范式表 B.第三范式表 C.第一范式表 D.都不是
练习
6.物理独立性是指当_________。 A、当内模式发生变化时,模式可以不变
B、当内模式发生变化时,应用程序可以不变
C、当模式发生变化时,应用程序可以不变
D、当模式发生变化时,内模式可以不变
练习
7、如果表T是2NF,则它____________。 A. 一定不存在传递依赖关系
练习
2.数据库中的视图对应三级模式中的_________。
A. 外模式
B. 内模式 C. 模式 D. 其他
练习
3.逻辑独立性是指当_________。 A、当内模式发生变化时,模式可以不变
B、当内模式发生变化时,应用程序可以不变
C、当模式发生变化时,应用程序可以不变
D、当模式发生变化时,内模式可以不变
工作站1
应用程序
应用程序
数据库
工作站N
应用程序
文件服务器结构特点
共享数据资源集中管理,应用程序分散安排在客户工作 站上。
优点:实现费用比较低廉,且配置很灵活(可方便地增
减客户端工作站)。
缺点:由于文件服务器只提供文件服务,所有的应用处 理都要在客户端完成,因此,对客户端计算机的要求较 高(以便能执行所需要的任何应用程序)。
- 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元以上显示为高收入。
SELECT 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 BETWEEN2000 AND3000;找出部门为“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 Name FROM Employees WHERE DepartmentID in(SELECT DepartmentID FROM Departments WHERE DepartmentName='财务部') AND Birthday!>ALL(SELECT Birthday FROM Employees WHERE DepartmentID in(SELECT DepartmentID FROM Departments WHERE DepartmentName='研发部')); 4. 用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名--1)查找财务部雇员的收入--2)查找研发部雇员的编号,条件是收入比所有财务部雇员收入都高--3)通过编号找到雇员姓名SELECT Name FROM Employees WHERE EmployeeID IN(SELECT EmployeeID FROM Salary WHERE EmployeeID IN(SELECT EmployeeID FROM Employees WHERE DepartmentID=(SELECT DepartmentID FROM Departments WHERE DepartmentName='研发部')) AND InCome>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 Name FROM Employees WHERE EmployeeID IN(SELECT EmployeeID FROM Salary WHERE InCome>ALL(SELECT InCome FROM Salary Where EmployeeID IN(SELECT EmployeeID FROM Employees Where DepartmentID=(SELECT DepartmentID FROM Departments WHERE DepartmentName='财务部'))));6. 用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名--分析:年龄都大等价于生日都小--1)找到所有研发部雇员的生日--2)找到其他部门雇员的姓名,条件是生日比研发部的所有雇员的生日都小SELECT Name FROM Employees WHERE Birthday<ALL(SELECT Birthday FROM Employees WHERE DepartmentID IN(SELECT DepartmentID FROM 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 bINNER JOIN Employees aON a.DepartmentID=b.DepartmentIDWhere ='王林';4. 使用内连接的方法查找出不在财务部工作的所有雇员信息SELECT a.*FROM Employees aINNER JOIN Departments bON a.DepartmentID=b.DepartmentIDWHERE b.DepartmentName!='财务部';5. 使用外连接方法查找出所有员工的月收入SELECT*FROM Employees aLEFT OUTER JOIN Salary b ONa.EmployeeID=b.EmployeeID;6. 查找财务部收入在2000元以上的雇员姓名及其薪水详情SELECT a.*,b.InCome FROM Employees aINNER JOIN Salary bON a.EmployeeID=b.EmployeeIDINNER JOIN Departments cON a.DepartmentID=c.DepartmentIDWHERE b.InCome>2000 AND c.DepartmentName='财务部';7. 查询研发部在1976年以前出生的雇员姓名及其薪水详请SELECT a.*,b.InCome FROM Employees aINNER 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 aINNER JOIN Employees bON a.EmployeeID=b.EmployeeIDINNER JOIN Departments cON c.DepartmentID=b.DepartmentIDWHERE 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.DepartmentIDWHERE c.DepartmentName='财务部';3. 求财务部雇员的平均实际收入SELECT AVG(a.InCome-a.OutCome)FROM Salary aINNER JOIN Employees bON a.EmployeeID=b.EmployeeIDINNER JOIN Departments cON c.DepartmentID=b.DepartmentIDWHERE 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.DepartmentIDWHERE c.DepartmentName='财务部';5. 求财务部雇员的总人数SELECT COUNT(a.EmployeeID)FROM Employees aINNER JOIN Departments bON a.DepartmentID=b.DepartmentIDWHERE 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.DepartmentIDGROUP BY b.DepartmentName;--使用多表查询方法,GROUP BY后面的字段,必须出现在SELECT语句要查询的字段中。