数据库实验答案实验二Sql
《数据库》实验二SQL查询代码
)
)
);
Q23. List the names of managers who have at least one dependent.
查询至少有一个家属的部门经理姓名。
SELECT FNAME,LNAME FROM EMPLOYEE
WHERE SSN IN (
ORDER BY FNAME ASC;
Q2. 查询不重复的员工工资值。
SELECT DISTINCT SALARY FROM EMPLOYEE
Q3. 查询没有直接上司的员工姓名。
SELECT FNAME,LNAME FROM EMPLOYEE
WHERE SUPERSSN IS NULL;
查询至少参与了所有John Smith参与项目的员工姓名。
SELECT FNAME,LNAME FROM EMPLOYEE
WHERE SSN IN (
SELECT ESSN FROM WORKS_ON
WHERE PNO=ANY (
SELECT PNUMBER FROM PROJECT
Q16. Select all combinations of EMPLOYEE SSN and DEPARTMENT DNAME in the Company database.
查询Company数据库中所有员工SSN与DNAME(部门名称)的组合。
SELECT E.SSN,D.DNAME
WHERE SALARY>=30000 GROUP BY D.DNAME
HAVING COUNT(SALARY)>=2;
Q18. Retrieve the names of all employees who do not work on any project controlled by department number 5.
SQL数据库实验报告实验二
SQL数据库实验报告实验二第一篇:SQL数据库实验报告实验二实验2SQL Server数据库的管理1.实验目的(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。
(2)掌握使用SQL Server管理平台对数据库进行管理的方法。
(3)掌握使用Transact-SQL语句对数据库进行管理的方法。
2.实验内容及步骤(1)在SQL Server管理平台中创建数据库。
① 运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。
② 右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。
在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。
(2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。
(3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。
指定“最大文件大小”为5MB。
修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。
(4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL语句CREATE DATABASE创建studb数据库。
然后通过系统存储过程sp_helpdb查看系统中的数据库信息。
(5)在查询设计器中使用Transact-SQL语句ALTER DATABASE 修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。
(6)在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。
(7)使用SQL Server管理平台将studb数据库的名称更改为student_db。
(8)使用Transact-SQL语句DROP DATABASE删除student_db数据库。
数据库SQL实验操作答案
数据库SQL实验操作答案1、创立数据库:创立一个教学管理数据库,以自己的名字拼音首字母+下划线+SC作为库名〔如名字叫张三,那么:ZC_SC〕,〔1〕确定数据库名称;数据库用于学生管理,命名为如ZS_SC〔2〕确定数据库的位置;要求:数据文件和日志文件分别存储在E盘自己的目录下。
〔3〕确定数据库的大小;根据实际的数据量确定数据文件的初始大小为30MB,日志文件的初始大小为3MB。
〔4〕确定数据库的增长;根据实际情况,确定数据文件按20%增长,日志文件按1MB增长。
请利用查询分析器〔Query Analyzer〕,使用SQL语句指定参数创立数据库,给出实现代码和截图。
实现代码及截图样例: SQL语句: create database CYR_SC on primary ( name='CYR_SC_DATA', filename='E:\\CYR_SC_DATA.MDF', size=30MB, filegrowth=20% ) log on ( name='CYR_SC_LOG',filename='E:\\CYR_SC_LOG.LDF', size=3mb, filegrowth=1mb )……………查询分析器执行情况: SQL语句及执行结果截图显示 2、创立根本表:〔注意:请在表名前加上自己的姓名拼音的首字母,主键前加上自己的姓名拼音的首字母,例如张三为ZC_〕其描述的信息有:学生信息、课程信息、教师信息、学生选课成绩、授课信息、班级信息、系部信息、专业信息。
创立:student表(学生信息表)、course表〔课程信息表)、teacher表〔教师信息表)、student _course表〔学生选课成绩表)、teacher_course表〔教师上课课表〕等。
请利用查询分析器,使用SQL语句将下面各表建立到教学管理数据库中。
写出SQL语句〔注意级联删除设置〕,查看各数据表之间的关系,画出实体关系图〔ER图〕。
SQL实验的题目和答案全解
数据库实验总汇二、使用SQL Server 工具在管理数据库系统和运行SQL查询的两个主要工具是企业管理器和查询分析器三、实验目的1.熟悉数据库的交互式SQL工具。
2.熟悉通过SQL对数据库进行操作。
3.完成上机练习。
四、实验内容(打※为选做题)Part A1.使用CREATE语句创建数据库2. 使用CREATE语句创建基本表3.更改基本表的定义,增加列,修改列的数据类型。
4.创建表的索引,取消表的索引1、数据库的建立使用SQL 语句建立关系数据库schooldemo2、基本表的建立在数据库schooldemo下,使用SQL 语句建立关系数据库表:人员表PERSON(Pno,Pname, Page),房间表ROOM(Rno,Rname,Rarea),表PR(Pno,Rno,Date).其中,表PERSON :Pno(CHAR(8),主码,非空,唯一),Pname(CHAR(20),非空),Page(INT);表ROOM:Rno(CHAR(8),主码,非空,唯一),Rname(CHAR(20)),Rarea(FLOAT (10));表PR:Pno(CHAR(8),非空,唯一),Rno(CHAR(8),非空,唯一),Date (DATETIME);(三个表之间有联系)3、更改基本表的定义,增加列,删除列,修改列的数据类型。
更改表PERSON,增加属性Ptype(类型是CHAR ,长度为10),把表ROOM中的属性Rname的数据类型改为长度为40。
4、创建表的索引,取消表的索引为ROOM表创建按Rno降序排列的索引创建PERSON表按Pname升序排列的唯一性索引取消PERSON表Pname升序索引5、删除表ROOM实验过程(1.a)1、数据库的建立使用SQL 语句建立关系数据库schooldemocreate database schooldemoon(name=schooldemo,filename='e:\123\school_data.mdf',size=5mb,maxsize=15mb,filegrowth=10%)log on(name=schooldemo_log,filename='e:\123\schooldemo.ldf',size=5mb,maxsize=15mb,filegrowth=4mb)2、基本表的建立在数据库schooldemo下,使用SQL 语句建立关系数据库表:人员表PERSON(Pno,Pname, Page),房间表ROOM(Rno,Rname,Rarea), 表PR(Pno,Rno,Date).其中,表PERSON :Pno(CHAR(8),主码,非空,唯一),Pname(CHAR(20),非空),Page(INT);表ROOM:Rno(CHAR(8),主码,非空,唯一),Rname(CHAR(20)),Rarea(FLOAT(10));表PR:Pno(CHAR(8),非空,唯一),Rno(CHAR(8),非空,唯一),Date(DATETIME);(三个表之间有联系)create table person(pno char (8)primary key,pname char (20),page int);create table room(rno char (8) primary key,rname char(20),rarea float(10));create table pr(pno char (8),rno char (8),date datetime,primary key(pno,rno),foreign key(pno) references person(pno),foreign key(rno) references room(rno));3、更改基本表的定义,增加列,删除列,修改列的数据类型。
数据库实验二作业及答案
数据库实验二作业及答案实验2 SQL Server 数据库的管理一、实验目的1.了解SQL Server数据库的逻辑结构和物理结构的特点。
2.学会使用企业管理器对数据库进行管理。
3.学会使用Transact-SQL语句对数据库进行管理。
二、实验准备1.确定能够创建数据库的用户是系统管理员,或是被授权使用CREATE DATABASE语句的用户。
2.确定要创建的数据库名、所有者(即创建数据库的用户)、数据库大小(最初的大小、最大的大小、是否允许增长即增长的方式)和存储数据的文件。
3.了解常用的创建数据库方法。
三、实验内容及步骤1.在企业管理器中创建studentsdb数据库。
(1)运行SQL Server管理器,启动企业管理器,展开服务器“(LOCAL)(Windows NT)”。
(2)右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。
在新建数据库对话框的名称文本框中输入学生管理数据库名studentsdb。
2.选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“数据文件”、“事务日志”、“文件组”、“选项”和“权限”页面。
3.打开studentsdb数据库的“属性”对话框,在“数据文件”选项卡中修改studentsdb数据文件的“分配空间”大小为2MB。
指定“最大文件大小”为5MB.在“事务日志”选项卡中修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。
4.启动查询分析器,在查询分析器中使用Transact-SQL语句CREATE DATABASE创建studb数据库。
然后通过系统存储过程sp_helpdb查看系统中的数据库信息。
CREATEdatabase studbON(NAME=studb,FILENAME='C:\database')exec sp_helpdb5.在查询分析器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小文1MB。
数据库实验二
实验(二): 熟练掌握SQL语言1.求选修了课程的学生的学号,要求:(1) 不使用distinct语句,消除重复元组,写出其SQL语句select SC.Sno from SC;(2)使用distinct语句,消除重复元组,写出其SQL语句selectdistinct(SC.Sno)from SC;(3)如果该查询写成:select Student.Sno from Student, SC where Student.Sno=SC.Sno 请问该查询结果和上面哪个结果是相同的?select Student.Sno from Student,SCwhere Student.Sno=SC.Sno;查询结果和第一个结果相同。
2.求开设的课程号、课程名、学时和学分,要求对查询结果的列重新命名。
select Cno '课程号',Cname '课程名',Ctime '学时',Ccredit '学分'from Course;3.求计算机系和数学系的学生学号、姓名和年龄。
select Sno,Sname,Sagefrom Studentwhere Sdept='计算机系'or Sdept='数学系';4.求不是数学系、计算机系的学生的情况,要求select后写*代替列出所有的列名。
select*from Studentwhere Sdept!='计算机系'and Sdept!='数学系';5.求全体学生的信息,要求按年龄升序排列。
select*from Studentorderby Sage;6.求计算机系年龄在18~20岁之间的学生姓名和年龄。
select Sname,Sagefrom Studentwhere Sdept='计算机系'and Sage>=18 and Sage<=20;7.求姓名是以”李”开头的计算机系学生。
SQL数据库 综合实训2 参考解答
一、实训目的通过完成以下实践与操作,牢固掌握SQL Server 中数据库的创建与管理、数据表的创建与管理、约束的分析与创建、表中数据的输入与删除;二、实训环境PC机+Windows XP操作系统+SQL Server 2000;三、实训内容与要求实践1:设有一数据库GradeManager(成绩管理),包括四个表:学生表(Student)、课程表(Course)、班级表(Class)以及成绩表(Grade)。
四个表的结构如下:根据需要,定义好各个表的约束,比如在Student表中,性别只能是“男”或“女”;在Grade表中,成绩的取值范围为0-100;建立好四个数据表之间的参照完整性关系;用SQL语句创建库与四个表(在创建表结构同时定义各种约束)。
create database GradeManagergouse GradeManagercreate table Student(Sno char(7) not null constraint prik_Sno primary key clustered,Sname varchar(20) not null ,Ssex char(2) not null constraint Ssex_sex check(Ssex='男' or Ssex='女'),Sage smallint,Clno char(5) not null)create table Course(Cno char(1) not null constraint prik_Cno primary key clustered,Cname varchar(20) not null ,Credit smallint)create table Class(Clno char(5) not null constraint prik_Clno primary key clustered, Speciality varchar(20) not null,Inyear char(4) not null,Number int,Moniter char(7) foreign key references Student(Sno))create table Grade(Sno char(7) not null foreign key references Student(Sno),Cno char(1) not null foreign key references Course(Cno),Gmark decimal(4,1) constraint Grade_Gmark check(Gmark<=100 and Gmark>=0))Go实践2:给学生表增加一属性Nation(民族),数据类型为Varchar(20);用select语句查询,查看是否确实已经增加了一个字段;然后删除学生表中的属性Nation,之后用select语句查询操作结果;use GradeManageralter table Student add Nation varchar(20)gouse GradeManagerselect * from Studentgouse GradeManageralter table Student drop column Nationgouse GradeManagerselect * from Studentgo实践3:向四个表中分别插入如下记录,之后用select语句查询操作结果;(此处输入SQL代码及运行结果)--向表Student中输入数据use GradeManagerinsert into Student values('2000101','李勇','男',20,'00311') insert into Student values('2000102','刘诗晨','女',19,'00311') insert into Student values('2000103','王一鸣','男',20,'00312') insert into Student values('2000104','张婷婷','女',21,'00312') insert into Student values('2001101','李勇敏','女',19,'01311') insert into Student values('2001102','贾向东','男',22,'01311') insert into Student values('2001103','陈宝玉','男',20,'01311') go--向表Course中输入数据use GradeManagerinsert into Course values('1','数据库',4)insert into Course values('2','离散数学',3)insert into Course values('3','管理信息系统',2)insert into Course values('4','操作系统',4)insert into Course values('5','数据结构',4)insert into Course values('6','数据处理',2)insert into Course values('7','C语言',4)go--向表Class中输入数据use GradeManagerinsert into Class values('00311','计算机软件','2000',120,'2000101') insert into Class values('00312','计算机应用','2000',140,'2000103') insert into Class values('01311','计算机软件','2001',220,'2001103') go--向表Grade中输入数据use GradeManagerinsert into Grade values('2000101','1',92)insert into Grade values('2000101','3',88)insert into Grade values('2000101','5',86)insert into Grade values('2000102','1',78)insert into Grade values('2000102','6',55)insert into Grade values('2000103','3',65)insert into Grade values('2000103','6',78)insert into Grade values('2000103','5',66)insert into Grade values('2000104','1',54)insert into Grade values('2000104','6',83)insert into Grade values('2001101','2',70)insert into Grade values('2001101','4',65)insert into Grade values('2001102','2',80)insert into Grade values('2001102','4',90)insert into Grade values('2001102','6',83)insert into Grade values('2001103','4',76)insert into Grade values('2001103','6',56)go实践4:把学号为”2001101”的学生的成绩修改为70分,之后用select语句查询操作结果;use GradeManagerupdate Grade set Gmark='70' where Sno='2001101'gouse GradeManagerselect * from Grade where Sno='2001101'go实践5:删除学号为”2001101”的学生的成绩记录,之后用select语句查询操作结果;use GradeManagerdelete from Grade where Sno='2001101'gouse GradeManagerselect * from Grade where Sno='2001101'go实践6:将01311班的全体学生的成绩置零,之后用select语句查询操作结果;use GradeManagerselect Sno from Student where Clno='01311'go--得到三个学号2001101、2001102、2001103,然后用update命令更新Grade 表:use GradeManagerupdate Grade set Gmark='0' where (Sno='2001101' or Sno='2001102' or Sno='2001103')go--验证update操作结果use GradeManagerselect * from Grade where (Sno='2001101' or Sno='2001102' orSno='2001103')go实践7:删除2001级计算机软件的全体学生的选课记录,之后用select语句查询操作结果;--先从表Class中查出2001级的计算机软件专业班级号use GradeManagerselect Clno from Class where (Speciality='计算机软件' and Inyear='2001') go//查到班级号01311,再用班级号从表Student中查出这个班级的学生学号use GradeManagerselect * from Student where Clno='01311'go--得到三个学号2001101、2001102、2001103,然后用delete命令删除Grade 表中有关成绩记录:use GradeManagerdelete from Grade where (Sno='2001101' or Sno='2001102' or Sno='2001103') go--验证delete操作结果use GradeManagerselect * from Grade where (Sno='2001101' or Sno='2001102' orSno='2001103')go实践8:学生李勇已退学,从数据库中删除有关他的记录,之后用select语句查询操作结果。
SQLSERVER2008实用教程实验参考答案(实验2)
实验2 创建数据库和表1、在D盘根目录下新建文件夹,并命名为Data,用来存储实验环境新建的数据库。
2、使用T-SQL语句创建数据库:USE masterGO--YGGL数据库如果存在,则将其删除IF EXISTS(SELECT name FROM sys.databases WHERE name='YGGL') DROP DATABASE YGGLGOUSE masterGO--新建数据库CREATE DATABASE YGGLON(NAME='YGGL_Data',FILENAME='D:\Data\YGGL.mdf',SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=5%)LOG ON(NAME='YGGL_Log',FILENAME='D:\Data\YGGL_log.ldf',SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)3、在YGGL数据库下建三个表Employees、Departments、Salary。
--切换到数据库YGGL下USE YGGLGO--新建Employees表CREATE TABLE Employees(EmployeeID char(6)NOT NULL PRIMARY KEY,Name char(10)NOT NULL,Education char(4)NOT NULL,Birthday date NOT NULL,Sex bit NOT NULL DEFAULT 1,WorkYear tinyint NULL,Address varchar(40)NULL,PhoneNumber char(12)NULL,DepartmentID char(3)NOT NULL)--新建Departments表CREATE TABLE Departments(DepartmentID char(3)NOT NULL PRIMARY KEY,DepartmentName char(20)NOT NULL,Note varchar(100)NULL)--新建Salary表CREATE TABLE Salary(EmployeeID char(6)NOT NULL PRIMARY KEY,InCome float NOT NULL,OutCome float NOT NULL)--建立Employees表的外键ALTER TABLE Employees WITH CHECK ADD CONSTRAINTFK_Employees_Departments FOREIGN KEY(DepartmentID)REFERENCES Departments(DepartmentID)--启用外键约束ALTER TABLE Employees CHECK CONSTRAINT FK_Employees_Departments--建立Salary表的外键ALTER TABLE Salary WITH CHECK ADD CONSTRAINT FK_Salary_Employees FOREIGN KEY(EmployeeID)REFERENCES Employees(EmployeeID)--启用外键约束ALTER TABLE Salary CHECK CONSTRAINT FK_Salary_Employees。
实验二 参考答案
实验二SQL语言——数据查询操作实验内容参考答案六、实验内容1.查询为工程J1供应零件的供应商号码SNOuse MyDBgoselect snofrom spjwhere jno='j1'2.查询为工程J1供应零件P1的供应商号码SNOuse MyDBgoselect snofrom spjwhere jno='j1' and pno='p1'3.查询为工程J1供应红色零件的供应商号码SNOuse MyDBgoselect snofrom spjwhere jno='j1' and pno in (select pnofrom pwhere color='红')4.查询没有使用天津供应商生产的零件并且当前工程所使用零件的颜色全部为红色的工程号JNO use MyDBgoselect jnofrom spjwhere sno in (select snofrom swhere city<>'天津') andpno in (select pnofrom pwhere color='红')5.查询至少选用了供应商S1所供应的全部零件的工程号JNOuse MyDBgoselect jnofrom spjwhere sno='s1' and pno =all (select pnofrom p)6.找出所有供应商的名称和所在城市use MyDBgoselect sname,cityfrom s7.找出所有零件的名称、颜色和重量use MyDBgoselect pname,color,weightfrom p8.找出使用供应商S1所供应零件的工程号码jnouse MyDBgoselect jnofrom spjwhere sno='s1'9.找出工程项目J2使用的各种零件的名称及其重量use MyDBgoselect pname,weightfrom p,spjwhere spj.jno='j2' and spj.pno=p.pno10.找出上海厂商供应的所有零件号码use MyDBgoselect pnofrom spjwhere sno=(select snofrom swhere city='上海')11.找出使用上海产的零件的工程名称use MyDBgoselect jnamefrom s,j,spjwhere spj.jno=j.jno and spj.sno=(select s.snofrom swhere s.city='上海') 12.找出没有使用天津产的零件的工程号码use MyDBgoselect jnofrom spjwhere sno in (select snofrom swhere city<>'天津')13.找出重量最轻的红色零件的零件编号PNOuse MyDBgoselect pnofrom pwhere weight=(select min(weight)from pwhere color='红')14.找出供应商与工程所在城市相同的供应商提供的零件号码use MyDBgoselect pnofrom s,j,spjwhere s.sno=spj.sno and j.jno=spj.jno and s.city=j.city15.找出供应商S1为工程名中含有“厂”字的工程供应的零件数量总和use MyDBgoselect sum(qty) TotalQYTfrom spjwhere sno='s1' and jno in(select jnofrom jwhere jname like '%厂%')16.找出为工程供应零件的总数量不低于500的供应商号码及供应总数量,结果按供应商号码分类并且按供应总数量降序排列use MyDBgoselect sno,sum(qty) TotalQTYfrom spjgroup by snohaving sum(qty)>=500order by TotalQTY desc。
SQL实验二:数据库查询实验报告
实验二数据库的查询实验实验目的和要求(1)掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。
(2)熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
(3)熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
实验内容和原理在实验一定义的“学生成绩数据库”中,使用T-SQL 语句完成以下查询:(1 )求计算机系学生的学号和姓名。
(2)求选修了数学的学生学号、姓名和成绩。
(3)求选修01 课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
(4)查找选修课程的平均成绩位于前三名的学生的学号。
(5)查询计算机系的姓刘且单名的学生的信息。
(6)查询至少选修两门课程的学生学号。
(7)查询学生的学号、课程号以及对应成绩与所有学生所有课程的最高成绩的百分比。
(8)查询选修“数据库”课程,且成绩在80 分以上的学生的学号和成绩。
(9)查询所有姓“王”的同学没有选修的课程名。
(请分别用exists和in完成该查询) (10)查询选修了全部课程的学生的姓名。
(请至少写出两种查询语句)(11)求选修了学生“ 95001”所选修的全部课程的学生学号和姓名。
(12)查询每一门课的间接先修课。
(13)列出所有学生所有可能的选课情况。
(14)列出每个学生的学号及选修课程号,没有选修的学生的学号也一并列出。
(15)输出与“张三”同性别并位于同一个系的所有同学的姓名。
(请至少写出两种查询语句)(16)查询至少被两名男生选修的课程名。
(17)对被两名以上学生所选修的课程统计每门课的选课人数。
要求输出课程号和选修人数,查询结果按人数降序排列;若人数相同,按课程号升序排列。
(18)列出选修课程超过 3 门的学生姓名及选修门数。
(19)检索至少选修课程号为01 和03 的学生姓名。
(20)检索至少选修课程“数学”和“操作系统”的学生学号。
(21 )查询‘操作系统'课程的最高分的学生的姓名、性别、所在系(22)查询数据结构的成绩低于操作系统的成绩的学生姓名及该生的这两门课的成绩(23)所有成绩都在70 分以上的学生姓名及所在系。
数据库实验2 数据定义 答案
实验二数据定义一、实验目的1、掌握使用SQL语句创建和删除数据库;2、掌握使用SQL语句创建和删除数据表,创建各种完整性约束,修改表的结构;3、掌握索引的创建和删除方法。
二、实验内容(一)数据库的建立使用CREATE DATABASE语句创建名为“gongcheng”的数据库。
(二)数据表操作1.建立数据表create table s(SNO nchar(20)primary key,SNAME nchar(20)unique,CITY nchar(20),);create table P(PNO nchar(20)primary key,PNAME nchar(20),COLOR nchar(20),WEIGHT nchar(20)check(weight>=0 and weight<=50),);create table J(JNO nchar(20)primary key,JNAME nchar(20)not null unique,CITY nchar(20),);create table SPJ(SNO nchar(20),PNO nchar(20),JNO nchar(20),QTY int,primary key (SNO,PNO,JNO),foreign key (SNO)references S(SNO),foreign key (PNO)references P(PNO),foreign key (JNO)references J(JNO),);在创建的“gongcheng”数据库中使用SQL语句建立4个关系,如下:供应商表S (Sno,Sname,City)零件表P(Pno,Pname,Color,Weight)工程项目表J(Jno,Jname,City)供应情况表SPJ(Sno,Pno,Jno,QTY)其中:供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商所在城市(CITY)组成;零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成;供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量组成(QTY),表示某供应商供应某种零件给某工程项目的数量为QTY。
SQL数据库原理实验指导书及答案
SQL数据库原理实验指导书及答案数据库原理SQLServer实验指导书1数据库系统原理实验一、基本操作实验实验1:数据库的定义实验本实验的实验目的是要求学生熟练掌握和使用SQL、T-SQL、SQL Server Enterpriser Manager Server 创建数据库、表、索引和修改表结构,并学会使用SQL Server Query Analyzer,接收T-SQL语句和进行结果分析。
本实验的内容包括:l)创建数据库和查看数据库属性。
2)创建表、确定表的主码和约束条件,为主码建索引。
3)查看和修改表结构。
4)熟悉SQL Server Enterpriser Manager和 Query Analyzer工具的使用方法具体实验任务如下。
1.基本提作实验1)使用Enterpriser Manager建立图书读者数据库2)在Enterpriser Manager中查看图书读者数据库的属性,并进行修改,使之符合要求。
3)通过Enterpriser Manager,在建好了图书借阅数据库中建立图书、读者和借阅3个表,其结构为:图书(书号,类别,出版社,作者,书名,定价,版次);读者(编号,姓名,单位,性别,电话):借阅(书号,读者编号,借阅日期人)要求为属性选择合适的数据类型,定义每个表的主键,Allow Null(是否允许空值)和 Default Value(缺省值)等列级数据约柬。
4)在Enterpriser Manager建立图书、读者和借阅3个表的表级约束:每个表的PrimaryKey2(主键)约束;借阅表与图书表间、借阅表与读者表之间的FOREIGNKEY(外码)约柬,要求按语义先确定外码约束表达式,再通过操作予以实现;实现借阅表的书号和读者编号的UNIQUE(惟一性)约束;实现读者性别只能是“男”或“女”的check (检查)约束。
2.提高操作实验建立学生_课程库操作,在查询分析器中用SQL命令实现。
《数据库原理》实验2——有答案
《数据库原理》实验2——有答案实验二:管理SQL Server 2000数据库一、实验目的1.了解数据库常用对象及组成;2.熟悉SQL的基本概念和特点;3.熟练掌握T-SQL 语句中的数据定义的使用方法;4.熟悉在SQL Server 2000中创建及编辑数据库;5.熟练掌握SQL的数据定义子句的使用方法。
二、实验环境已安装SQL Server 2000企业版的计算机;具有局域网网络环境,有固定ip地址;三、实验学时2学时四、实验要求1.熟练使用Management Stuio界面方式创建及编辑数据库;2.熟练使用T-SQL 语句创建及编辑数据库;3.完成实验报告。
五、实验准备知识(也可参考SQL Server联机丛书)1.数据库相关属性1)逻辑名称:数据文件和日志文件名称2)文件类型:数据文件及日志文件3)文件组:各个数据文件所属的文件组名称4)初始大小:文件的最原始大小5)自动增长:文件按指定的大小增长,也可限制到最大容量。
6)路径:存放文件的物理目录7)文件名:显示数据文件和日志文件的物理名称2.默认数据库属性1)主数据文件为xx.mdf ,日志文件为xx_log.ldf;2)只有一个文件组Primary;3)主数据文件初始大小为3MB,增量为1MB;4)日志文件初始大小为1MB,增量为10%;5)主数据文件和日志文件都存放在C:\Program Files\Microsoft SQLServer\MSSQL.2\MSSQL\DATA目录下,文件分别为xx.mdf 和xx_log.ldf 。
3.使用界面创建数据库步骤【SQL Server Management Studio】→【对象资源管理器】→【数据库】→【新建数据库】→设置数据库相关属性(名称、大小、位置)4.启动SQL Server 2005查询分析器【SQL Server Management Studio】→【新建查询】5.命令方式下创建数据库CREATE DATABASE database_name /*指定数据库名*/[ON 子句] /*指定数据库文件和文件组属性[LOG ON 子句] /*指定日志文件属性*/6.命令方式修改数据库Alter database database_name{add file [,…n] [to filegroup filegroupname]|add log file [,…n]|remove file logical_file_name [with delete]|modify file六、实验内容及步骤1、假设SQL Server服务已启动,并以Administrator身份登录计算机(文件名称自定);请分别使用Management界面方式和T-SQL语句实现以下操作:1)要求在本地磁盘D创建一个学生-课程数据库(名称为student),只有一个数据文件和日志文件,文件名称分别为stu和stu_log,物理名称为stu_data.mdf 和stu_log.ldf,初始大小都为3MB,增长方式分别为10%和1MB,数据文件最大为500MB,日志文件大小不受限制。
数据库实验二,sql查询语句
实验二:数据查询语言实验内容SQL数据查询语句:例5-1:(选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。
select sno,sname,sex,sage from student;例5-2:(不选择重复行) 求选修了课程的学生学号。
select distinct cno from sc where cno is not null;例5-3:(选择表中的所有列) 求全体学生的详细信息。
select * from student;例5-4:(使用表达式) 求全体学生的学号、姓名和出生年份。
select sno,sname,birthday from student;例5-5:(使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。
select sno as"学号",birthday as"出生年份" from student;例5-6:(比较大小条件) 求年龄大于19岁的学生的姓名和年龄。
select sname,age from studentwhere age>19;例5-7:(比较大小条件) 求计算机系或经济管理系年龄大于18岁的学生的姓名、系和年龄。
select sname,depname ,agefrom student,departmentwhere student.depno=department.depnoand age>18;例5-8:(确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。
select sno,age from studentwhere age in(19,22);例5-9:(确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。
select sno,age from studentwhere age not in(19,22);例5-10:(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。
实验二 参考答案
实验二SQL Sever中的单表查询参考答案1. 查询所开课程的课号,课程名。
SELECT CNO,CNAMEFROM COURSE2. 查询计算机系年龄不到21岁的所有男生的姓名和出生年份。
SELECT SNAME 姓名,YEAR(GETDA TE())-SAGE 出生年份FROM STUDENTWHERE SDEPT='CS' AND SAGE<213. 查询已被学生所选课的课号。
SELECT DISTINCT CNOFROM SC4. 查询所有有成绩的学生学号和课程号,并为各列分别取相应的中文别名。
SELECT SNO 学号,CNO 课程号FROM SCWHERE GRADE IS NOT NULL(2) 按照《数据库系统概论》P75页中的SPJ数据库及数据实现以下查询:1. 查询使用各种零件的数量在100和300(包括100和300)之间的项目号,分别采用比较大小和确定范围两种方法实现。
SELECT DISTINCT JNOFROM SPJWHERE QTY>=100 AND QTY <=300SELECT DISTINCT JNOFROM SPJWHERE QTY BETWEEN 100 AND 3002. 查询地点在‘北京’、‘上海’的供应商代码和供应商名字。
SELECT SNO,SNAMEFROM SWHERE CITY IN('北京','上海')或SELECT SNO,SNAMEFROM SWHERE CITY='北京' OR CITY='上海'3. 查询供应商名中包含‘方’这个汉字的供应商信息。
SELECT *FROM SWHERE SNAME LIKE '%方%'4. 查询零件名以‘刀’字结尾,包含三个汉字的零件信息。
SELECT *FROM PWHERE PNAME LIKE '__刀'5. 查询使用了供应商S1所供应零件的工程项目数。
SQL实验二:数据库查询实验报告
SQL实验二:数据库查询实验报告实验二数据库的查询实验一、实验目的和要求(1)掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。
(2)熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
(3)熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
二、实验内容和原理在实验一定义的“学生成绩数据库”中,使用T-SQL语句完成以下查询:(1)求计算机系学生的学号和姓名。
(2)求选修了数学的学生学号、姓名和成绩。
(3)求选修01课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
(4)查找选修课程的平均成绩位于前三名的学生的学号。
(5)查询计算机系的姓刘且单名的学生的信息。
(6)查询至少选修两门课程的学生学号。
(7)查询学生的学号、课程号以及对应成绩与所有学生所有课程的最高成绩的百分比。
(8)查询选修“数据库”课程,且成绩在80分以上的学生的学号和成绩。
(9)查询所有姓“王”的同学没有选修的课程名。
(请分别用exists和in完成该查询)(10)查询选修了全部课程的学生的姓名。
(请至少写出两种查询语句)(11)求选修了学生“*****”所选修的全部课程的学生学号和姓名。
(12)查询每一门课的间接先修课。
(13)列出所有学生所有可能的选课情况。
(14)列出每个学生的学号及选修课程号,没有选修的学生的学号也一并列出。
(15)输出与“张三”同性别并位于同一个系的所有同学的姓名。
(请至少写出两种查询语句)(16)查询至少被两名男生选修的课程名。
(17)对被两名以上学生所选修的课程统计每门课的选课人数。
要求输出课程号和选修人数,查询结果按人数降序排列;若人数相同,按课程号升序排列。
(18)列出选修课程超过3门的学生姓名及选修门数。
(19)检索至少选修课程号为01和03的学生姓名。
(20)检索至少选修课程“数学”和“操作系统”的学生学号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1) 查找有销售记录的客户编号、名称和订单总额。
命令:SELECT a.CustomerNo,CustomerName, sum(quantity*price) orderSumFROM OrderMaster a,OrderDetail b,Customer cWHERE b.orderNo=a.orderNo AND c.CustomerNo=a.CustomerNoGROUP BY a.CustomerNo,CustomerNameORDER BY a.CustomerNo,orderSum DESC(2) 在订单明细表中查询订单金额最高的订单。
命令:SELECT top 1 orderNo,sum(quantity*price)订单金额FROM OrderDetailGROUP BY orderNoORDER BY 订单金额DESC(3) 查询没有订购商品的客户编号和客户名称。
命令:SELECT CustomerNo,CustomerNameFROM CustomerWHERE CustomerNo NOT IN (SELECT CustomerNo FROM OrderMaster)(4) 找出至少被订购3次的商品编号、订单编号、订货数量和订货金额,并按订货数量的降序排序输出。
命令:SELECT a.productNo,orderNo,quantity,(quantity*price) moneyFROM OrderDetail a,(SELECT productNoFROM OrderDetailGROUP BY productNoHA VING COUNT(*)>=3) bWHERE a.productNo =b.productNoORDER BY a.productNo,quantity DESC被订购三件以上的……SELECT b.ProductNo,orderNo,quantity,orderSum=quantity*priceFROM OrderDetail b,(SELECT ProductNo FROM(SELECT ProductNo,sum(quantity)SQfrom OrderDetail GROUP BY ProductNo)aWHERE a.SQ>3)cWHERE b.ProductNo=c.ProductNoORDER BY b.quantity DESC(5) 使用子查询查找32M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男”、“女”表示。
命令:SELECT employeeName,case sexwhen 'F' then '女'when 'M' then '男' end sex,orderDate,quantity,quantity*price 金额FROM Employee a,OrderMaster b,OrderDetail cWHERE a.employeeNo=b.salerNo AND b.orderNo=c.orderNoAND c.ProductNo IN (SELECT f.ProductNoFROM OrderMaster d,OrderDetail e,Product fWHERE d.orderNo=e.orderNo AND ProductName='32M DRAM')(6) 查询sales表中订单金额最高的订单号及订单金额。
命令:SELECT top 1 orderNo,sum(quantity*price)orderSumFROM OrderDetailGROUP BY orderNoORDER BY orderSum DESC或SELECT orderNo,orderSumFROM OrderMasterWHERE orderSum = (SELECT max(orderSum)FROM OrderMaster)(7) 计算出一共销售了几种商品。
SELECT COUNT(*)种类FROM (SELECT DISTINCT ProductNo FROM OrderDetail)a(8) 显示OrderDetail表中每种商品的订购金额总和,并且依据销售金额由大到小排序输出。
SELECT a.ProductNo,sum(sumOrder)金额总和FROM (SELECT ProductNo,sumOrder=quantity*price FROM OrderDetail )aGROUP BY a.ProductNoORDER BY sum(sumOrder) DESC(9) 查找销售总额大于1000元的销售员编号、姓名和销售额。
SELECT salerNo,employeeName,sum(orderSum)TotalFROM OrderMaster a,Employee bWHERE employeeNo=salerNo AND orderSum>1000GROUP BY salerNo,employeeName(10) 找出目前业绩未超过5000元的员工,并按销售业绩的降序排序输出。
SELECT employeeNo,employeeName,SumOrderFROM (SELECT employeeNo,employeeName FROM Employee)x left join(SELECT salerNo,sum(sumOrder) SumOrderFROM (SELECT salerNo,sumOrder=quantity*price FROM OrderMaster a left outer join OrderDetail b on a.orderNo=b.orderNo)mGROUP BY salerNo)y on x.employeeNo=y.salerNoWHERE SumOrder<5000ORDER BY SumOrder DESC(11) 在Employee表中查询薪水超过员工平均薪水的员工信息。
SELECT *FROM EmployeeWHERE salary>(SELECT avg(salary) avgSalary FROM EmployeeWHEREdepartment='业务科' or department='财务科' or department='办公室')—可以没条件(12) 计算每一种商品的销售数量、平均销售单价和总销售金额。
SELECT ProductNo,sum(quantity)销售数量,sum(quantity*price)/sum(quantity)平均销售单价,sum(quantity*price)总销售金额FROM OrderDetailGROUP BY ProductNo(13) 查找至少有3次销售的业务员名单和销售日期。
SELECT employeeName,orderDateFROM OrderMaster a left join Employee b on b.employeeNo=a.salerNoWHERE salerNo=(SELECT salerNo FROM OrderMaster GROUP BY salerNo having COUNT(*)>2)(14) 用存在量词查找没有订货记录的客户名称。
SELECT CustomerName,CustomerNoFROM Customer aWHERE NOT EXISTS(SELECT * FROM OrderMaster b WHERE EXISTS(SELECT CustomerNo FROM OrderMasterWHERE CustomerNo=a.CustomerNo AND a.CustomerNo=b.CustomerNo ))(15) 查询订单中所订购的商品数量没有超过10个的客户编号和客户名称。
SELECT x.CustomerNo,CustomerNameFROM OrderMaster x,Customer yWHERE x.CustomerNo=y.CustomerNo AND orderNo IN(SELECT orderNo FROM OrderDetailGROUP BY orderNohaving sum(quantity)<=10)(16) 在销售明细表中按商品编号进行汇总,统计每种商品的销售数量和金额。
SELECT ProductNo,sum(quantity)销售数量,sum(quantity*price)销售金额FROM OrderDetailGROUP BY ProductNo(17) 按客户编号统计每个客户2008年2月的订单总金额。
SELECT a.customerNo,orderDate,sum(orderSum)总金额FROM OrderMaster a,Customer bWHERE a.customerNo=b.customerNo AND year(orderDate)='2008'AND month(orderDate)='2' GROUP BY a.customerNo,orderDate(18) 查找定单金额高于8000的所有客户编号。
SELECT CustomerNoFROM OrderMasterWHERE orderNo IN (SELECT orderNoFROM (SELECT orderNo,orderSum=quantity*price FROM OrderDetail )xGROUP BY orderNohavINg sum(orderSum)>8000)(19) 显示每种商品的销售金额总和,并依销售金额由大到小输出。
SELECT ProductNo,sum(quantity*price)销售金额FROM OrderDetailGROUP BY ProductNoORDER BY sum(quantity*price) DESC(20) 查找销售金额最大的客户名称和总货款。
SELECT top 1 CustomerName,sum(quantity*price)销售金额FROM Customer x left joIN (SELECT a.orderNo,quantity,price,CustomerNoFROM OrderDetail a left joIN OrderMaster b on a.orderNo=b.orderNoWHERE a.orderNo=b.orderNo)y onx.CustomerNo=y.CustomerNoGROUP BY CustomerNameORDER BY sum(quantity*price) DESC(21) 查找至少销售了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额。