当前位置:文档之家› 数据库例题

数据库例题

数据库例题
数据库例题

数据库例题

第三章关系数据库标准语言SQL 3.3数据定义

[例题1]定义一个学生-课程模式S-T

Create schema“S-T”Authorization WANG;

说明:

为用户W ANG定义一个模式S-T,需要用户有足够的权限!

命令尾加分号,所有标点符号必需是半角符号!

命令的大小写的作用?

模式名的引号是否必需?

[例题2]定义没有模式名的模式

Create schema Authorization WANG;

说明:

该语句没有指定<模式名>,<模式名>隐含为用户W ANG

[例题3]创建模式同时创建基本表

Create schema TEST Authorization ZHANG

Create table TAB1 (COL1 smallint,

COL2 int,

COL3 char(20),

COL4 numeric(10,3),

COL5 decimal(5,2)

);

说明:

该语句为用户ZHANG创建了一个模式TEST,并且在其中定义一个表TAB1 [例题4]删除模式

Drop schema ZHANG cascade;

说明:

删除模式ZHANG,使用cascade参数,同时删除已经定义的表TAB1

如果使用参数restrict,则表示只删除没有实体表的模式,有实体表则拒绝删除

[例题5]建立一个“学生”表Student

Create table Student

(Sno Char(9)Primary key,/* 列级完整性约束条件,Sno是主码*/

Sname Char(20)unique,/*Sname取唯一值*/

Ssex char(2),

Sage smallint,

Sdept char(20)

);

说明:

创建一个空的“学生”表Student,并加一些限定条件(Sname的唯一性不合理,用于后面例子进行修改)

[例题6]建立一个“课程”表Course

Create table Course

(Cno Char(4)Primary key,/* 列级完整性约束条件,Cno是主码*/

Cname Char(40),

Cpno char(4),/*Cpno的含义是先修课*/

Ccredit Smallint,

foreign key Cpno references Course(Cno)

/*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/

);

说明:

参照表与被参照表是同一表

SQL 2008需要使用:foreign key (Cpno)references Course(Cno)

[例题7]建立学生选课表SC

Create table SC

(Sno Char(9),

Cno Char(4),

Grade smallint,

primary key(Sno,Cno),

/*主码由两个属性构成,必须作为表级完整性进行定义*/

foreign key(Sno)references Student(Sno) ,

/*表级完整性约束条件,Sno是外码,被参照表是Student*/

foreign key(Cno)references Course(Cno)

/*表级完整性约束条件,Cpno是外码,被参照表是Course*/

);

说明:

两个主码,同时都是外码

[例题8]向Student表增加“入学时间”列,其数据类型为日期型

Step1:先创建基本表

Create table Student

(Sno Char(9)Primary key,/* 列级完整性约束条件,Sno是主码*/

Sname Char(20)unique,/*Sname取唯一值*/

Ssex char(2),

Sage char(2),

Sdept char(20)

);

Go

Step2:

alter table Student2 Add S_entrance Datetime;

Go

说明:

不论基本表中原来是否已有数据,新增加列一律为空值

[例题9]将年龄的数据类型由字符型改为整数型

alter table Student alter column Sage int;

[例题10]增加课程名称必须取唯一值的约束条件。

先创建基本表

Step1:

Create table Course

(Cno Char(4)Primary key,/* 列级完整性约束条件,Cno是主码*/

Cname Char(40),

Cpno char(4),/*Cpno的含义是先修课*/

Ccredit Smallint,

foreign key Cpno references Course(Cno)

/*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/

);

Go

Step2:

alter table Course add unique(Cname);

Go

[例题11]删除Student表

drop table student2cascade;

drop table student2;--cascade;--SQL Sever中不支持cascade参数

[例题12]若表上建有视图,选择restrict时表不能删除;

cascade时可以删除表,视图也自动被删除。

--本例在SQL Server上不能通过测试

/*Student表上建立视图*/

create view IS_Student

AS

select Sno,Sname,Sage

From Student

Where Sdept='IS';

/*删除Student表*/

drop table Student restrict;--error XXX

/*删除Student表*/

drop table Student cascade;--success XXX

select*from IS_Student;--error

[例题13]创建聚簇索引

create cluster index Stusname ON Student(Sname); --XXX

create clustered index Stusname ON Student(Sname);

[例题14]创建unique索引

create unique index Stusno ON Student(Sno);

create unique index Coucno ON Course(Cno);

create unique index SCno ON SC(Sno asc,Cno desc);

[例题15]删除索引

--drop index Stusname;--XXX

drop index Course.Coucno;

在SQL Server中需要指定索引的表名称

3.4 数据查询

/*3.4 数据查询

* 查询示例需预先录入的数据

*/

INSERT INTO [myDB].[dbo].[Student]

([Sno],[Sname],[Ssex],[Sage],[Sdept]) VALUES

(200215121,'李勇','男',20,'CS'); INSERT INTO [myDB].[dbo].[Student]

([Sno],[Sname],[Ssex],[Sage],[Sdept]) VALUES

(200215122,'刘晨','女',19,'CS'); INSERT INTO [myDB].[dbo].[Student]

([Sno],[Sname],[Ssex],[Sage],[Sdept]) VALUES

(200215123,'王敏','女',19,'MA'); INSERT INTO [myDB].[dbo].[Student]

([Sno],[Sname],[Ssex],[Sage],[Sdept]) VALUES

(200215125,'张立','男',18,'IS');

/*受参照关系影响,不能按课程号顺序插入数据*/

INSERT INTO [myDB].[dbo].[Course]

([Cno],[Cname],[Ccredit])

VALUES

(2,'数学',2);

INSERT INTO [myDB].[dbo].[Course]

([Cno],[Cname],[Ccredit])

VALUES

(6,'数据处理',2);

INSERT INTO [myDB].[dbo].[Course]

([Cno],[Cname],[Cpno],[Ccredit]) VALUES

(4,'操作系统',6,3);

INSERT INTO [myDB].[dbo].[Course]

([Cno],[Cname],[Cpno],[Ccredit]) VALUES

(7,'PASCAL语言',6,4);

INSERT INTO [myDB].[dbo].[Course]

([Cno],[Cname],[Cpno],[Ccredit]) VALUES

(5,'数据结构',7,4);

INSERT INTO [myDB].[dbo].[Course]

([Cno],[Cname],[Cpno],[Ccredit]) VALUES

(1,'数据库',5,4);

INSERT INTO [myDB].[dbo].[Course]

([Cno],[Cname],[Cpno],[Ccredit]) VALUES

(3,'信息系统',1,4);

INSERT INTO [myDB].[dbo].[SC]

([Sno],[Cno],[Grade])

VALUES

(200215121,1,92);

INSERT INTO [myDB].[dbo].[SC]

([Sno],[Cno],[Grade])

VALUES

(200215121,2,85);

INSERT INTO [myDB].[dbo].[SC]

([Sno],[Cno],[Grade])

VALUES

(200215121,3,88);

INSERT INTO [myDB].[dbo].[SC]

([Sno],[Cno],[Grade])

VALUES

(200215122,2,90);

INSERT INTO [myDB].[dbo].[SC]

([Sno],[Cno],[Grade])

VALUES

(200215122,3,80);

[例题1]查询全体学生的学号与姓名

select Sno, Sname

From Student;

[例题2]查询全体学生的姓名、学号、所在系

select Sname, Sno, Sdept

From Student;

[例题3]查询全体学生的详细记录

select *

From Student;

[例题4]查询全体学生的姓名及其出生年份

select Sname, 2004-Sage

From Student;

[例题5]查询全体学生的姓名、出生年份和所在院系(小写表示)

select Sname,'Year of Birth:', 2004-Sage,lower(Sdept)

From Student;

select Sname Name,'Year of Birth:'Birth,2004-Sage BirthDay,lower(Sdept) Deparyment

From Student;

[例题6]查询选修了课程的学生学号

select Sno

From SC;

select distinct Sno

From SC;

[例题7]查询计算机系全体学生的名单

select Sname

From Student

where Sdept ='CS';

[例题8]查询20岁以下的学生姓名及年龄

select Sname,Sage

From Student

where Sage <20;

[例题9]查询成绩不及格的学生的学号

select distinct Sno

From SC

where Grade <60;

[例题10]查询年龄在20-23之间

select Sname,Sdept,Sage

From Student

where Sage between 20 and 23;

[例题11]查询年龄不在20-23之间

select Sname,Sdept,Sage

From Student

where Sage not between 20 and 23;

[例题12]查询CS、MA、IS系的学生姓名和性别

select Sname,Sdept,Sage

From Student

where Sdept in('CS','MA','IS');

[例题13]查询非CS、MA系的学生姓名和性别

select Sname,Sdept,Sage

From Student

where Sdept not in('CS','MA');

[例题14]查询学号为200215121的学生详细情况

select*

From Student

where Sno like'200215121';

select*

From Student

where Sno='200215121';

[例题15]查询刘姓学生详细情况

select*

From Student

where Sname like'刘%';

[例题16]查询姓“欧阳”且命名为3个汉字的学生姓名

INSERT INTO[myDB].[dbo].[Student]

([Sno],[Sname],[Ssex],[Sage],[Sdept])

VALUES

(200215126,'欧阳天','男',18,'IS');

INSERT INTO[myDB].[dbo].[Student]

([Sno],[Sname],[Ssex],[Sage],[Sdept])

VALUES

(200215127,'欧阳天地','男',18,'IS');

select Sname

From Student

where Sname like'欧阳__';

--SQL标准中,1个_代表一个汉字

--2008版本中,'欧阳__'与'欧阳_'有差异,尤其是单个_可以代表一个汉字

[例题17]查询第2个字是“阳”的学生姓名

select Sname,Sno

From Student

where Sname like'_阳%';--此处的_数量有不同结果

[例题18]查询不姓“刘”的学生姓名

select Sname,Sno,Ssex

From Student

where Sname not like'刘%';

[例题19]查询DB_Design课程的课程号和学分

INSERT INTO[myDB].[dbo].[Course]

([Cno],[Cname],[Ccredit])

VALUES

(8,'DB_Design',2);

select*

From Course

where Cname like'DB\_Design'escape'\';--使用转义符

[例题20]查询“DB_”开头,且倒数第3个字符为i的课程的课程号和学分

INSERT INTO[myDB].[dbo].[Course]

([Cno],[Cname],[Ccredit])

VALUES

(9,'DB_Intro',2);

select*

From Course

where Cname like'DB\_%i__'escape'\';--使用转义符

[例题21]查没有成绩的学生

INSERT INTO[myDB].[dbo].[SC]

([Sno],[Cno])

VALUES

(200215122,1);

select Sno,Cno

From SC

where Grade is null;

[例题22]查所有有成绩的学生

select Sno,Cno

From SC

where Grade is not null;

select distinct Sno

From SC

where Grade is not null;

[例题23]查计算机科学系年龄在20岁以下的学生

select Sname,Sage

From Student

where Sdept='CS'and Sage< 20;

[例题24]查询选修了3号课程的学生,按分数的降序排列

select Sno,Grade

From SC

where Cno='3'

order by grade desc;--asc/desc

[例题25]查询所有学生,按系号升序,年龄降序排列

select*

From Student

order by Sdept,Sage desc;--asc/desc

[例题26]查询学生总人数

select COUNT(*)

From Student;

[例题27]查询选修课程的学生总人数

select COUNT(distinct Sno)

From SC;

[例题28]查询选修2号课程的学生平均成绩

select Avg(Grade)

From SC

where Cno='2';

[例题29]查询选修1号课程的学生最高分

select Max(Grade)

From SC;

[例题30]查询200215121学生选修课程平均成绩

select Sum(Grade)

From SC,Course

where Sno='200215121'and https://www.doczj.com/doc/2c12825259.html,o=https://www.doczj.com/doc/2c12825259.html,o;

[例题31]查询各个课程号及相应的选课人数

select Cno,Count(Sno)'人数'

From SC

Group by Cno;

[例题32]查询选修了3门以上课程的学生学号

select Sno

From SC

Group by Sno

Having COUNT(*)> 3;

[例题33]查询每个学生及其选修课程的情况

select Sno

From SC

Group by Sno

Having COUNT(*)> 3;

[例题34]自然连接实现查询每个学生及其选修课程的情况

select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade

From Student,SC

where Student.Sno=Sc.Sno;

[例题35]自身连接查询间接先修课程的情况

select https://www.doczj.com/doc/2c12825259.html,o,Second.Cpno

From Course First,Course Second

where First.Cpno=https://www.doczj.com/doc/2c12825259.html,o;

/*取别名*/

--select * From Student as First;

--select * From Student as Second;

--go

[例题36]外连接(不兼容)

/*out -> outer; left outer join = left join*/

select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade

From Student left out Join SC On (Student.Sno=Sc.Sno);--outer /*也可以使用Using来去掉结果中的重复值*/

--From Student left out Join SC Using(SC.Sno);

select Student.Sno,Sname,Ssex,Sage,Sdept,https://www.doczj.com/doc/2c12825259.html,o,Sc.Grade

From Student left Join SC On (Student.Sno=Sc.Sno);

[例题37]查询选修2号课程且成绩在90分以上的所有学生

select Student.Sno,Sname

From Student,SC

where Student.Sno=Sc.Sno and/*连接谓词and*/

https://www.doczj.com/doc/2c12825259.html,o='2'and SC.Grade> 90 ;/*其他限定条件*/

[例题38]查询每个学生的学号、姓名、选修的课程名及成绩

select Student.Sno,Sname,Cname,Grade

From Student,SC,Course

where Student.Sno=Sc.Sno and https://www.doczj.com/doc/2c12825259.html,o=https://www.doczj.com/doc/2c12825259.html,o;

[例题39]查询与“刘晨”在同一个系学习的学生

分步查询:

Step1:确定“刘晨”所在的系

select Sdept

From Student

where Sname='刘晨';

Step2:查找所有该系的学生

select Sno,Sname, Sdept

From Student

where Sdept ='CS';

嵌套查询:(解法1)

select Sno,Sname, Sdept

From Student

where Sdept in

(select Sdept

From Student

where Sname='刘晨');

自身连接:(解法2)

select S1.Sno,S1.Sname,S1.Sdept

From Student S1, Student S2

where S1.Sdept=S2.Sdept and S1.Sname='刘晨';

解法1、2表明,同一个查询可以有多个查询方法,其执行效率可能会有较大差别----这就是高水平开发人员所关心内容!

[例题40]查询选修了课程为“信息系统”的学生学号和姓名

嵌套查询:(解法)

select Sno,Sname

From Student

where Sno In

(select Sno

From SC

where Cno in

(select Cno

From Course

where Cname='信息系统'));

连接查询:(解法)

select Student.Sno,Sname

From Student,SC,Course

where Student.Sno=SC.Sno And

https://www.doczj.com/doc/2c12825259.html,o=https://www.doczj.com/doc/2c12825259.html,o And

https://www.doczj.com/doc/2c12825259.html,ame='信息系统';

[例题41]找出每个学生超过他选修课平均成绩的课程号

select Sno,Cno

From SC x

Where Grade>=(Select Avg(Grade)

From SC y

Where y.Sno=x.Sno);

[例题42]查询其他系中比计算机科学系某一学生年龄小的

学生姓名和年龄

解法:(any)

select Sname,Sage

From Student

Where Sage

From Student

Where Sdept='CS')

And Sdept<>'CS';

解法:(max)

select Sname,Sage

From Student

Where Sage<(Select Max(Sage)

From Student

Where Sdept='CS')

And Sdept<>'CS';

[例题43]查询其他系中比计算机科学系所有学生年龄都小的学生姓名和年龄

解法:(all)

select Sname,Sage

From Student

Where Sage

From Student

Where Sdept='CS')

And Sdept<>'CS';

解法:(min)

select Sname,Sage

From Student

Where Sage<(Select Min(Sage)

From Student

Where Sdept='CS')

And Sdept<>'CS';

[例题44]查询所有选修了1号课程的学生姓名

select Sname

From Student

Where exists

(Select*

From SC

Where Sno=Student.Sno And Cno='1');

[例题45]查询没有选修了1号课程的学生姓名

select Sname

From Student

Where not Exists(Select*

From SC

Where Sno=Student.Sno And Cno='1');

[例题46]查询选修了全部课程的学生姓名

select Sname

From Student

Where not Exists(Select*

From Course

Where not Exists(Select*

From SC

Where Sno=Student.Sno And Cno=https://www.doczj.com/doc/2c12825259.html,o));

[例题47]查询至少选修了200215122选修的全部课程的学生姓名号码

Select Distinct Sno

From SC Scx

Where not Exists(Select*

From SC Scy

Where Scy.Sno='200215122'and

not Exists(Select*

From SC Scz

Where Scz.Sno=Scx.Sno And https://www.doczj.com/doc/2c12825259.html,o=https://www.doczj.com/doc/2c12825259.html,o));

[例题48]查询计算机科学系的学生及年龄不大于19岁的学生

Select*

From Student

Where Sdept='CS'

Union

Select*

From Student

Where Sage<=19;

[例题49]查询选修了课程1或者选修课程2的学生

Select*

From SC

Where Cno='1'

Union

Select*

From SC

Where Cno='2';

[例题50]查询计算机科学系的学生及年龄不大于19岁的学生的交集

Select*

From Student

Where Sdept='CS'

Intersect

Select*

From Student

Where Sage<=19

另一种解法:

Select*

From Student

Where Sdept='CS'and Sage<=19;

[例题51]查询选修了课程1又选修课程2的学生

Select Sno

From SC

Where Cno='1'

Intersect

Select Sno

From SC

Where Cno='2';

另一种解法:

Select Sno

From SC

Where Cno='1'and Sno In

(Select Sno

From SC

Where Cno='2');

[例题52]查询计算机科学系的学生及年龄不大于19岁的学生的差集

Select*

From Student

Where Sdept='CS'

Except

Select*

From Student

Where Sage<=19;

另一种解法:

Select*

From Student

Where Sdept='CS'and Sage>19;

3.5数据更新

[例题1]将一个新学生元组插入到Student表中

INSERT

INTO Student([Sno],[Sname],[Ssex] ,[Sdept],[Sage])

VALUES(200215128,'陈冬','男','IS',18);

[例题2]将学生张成民的信息插入到Student表中

/*没有属性名,插入的属性必需和定义表顺序一致!*/

INSERT

INTO Student

VALUES(200215126,'张成民','男',18,'CS');

[例题3]插入一条选课记录

INSERT

INTO SC(Sno,Cno)

VALUES(200215128,'1');

或者:

INSERT

INTO SC

VALUES(200215128,'1',NULL);

[例题4]对每个系,求学生的平均年龄,并把结果存入数据库

Create table Dept_age

(Sdept Char(15),

Avg_age Smallint);

go

INSERT

INTO Dept_age (Sdept, Avg_age)

Select Sdept, Avg(Sage)

From Student

Group by Sdept;

[例题5]修改20215121学生的年龄

Update student

Set Sage= 22

Where Sno='20215121';

[例题6]将所有学生的年龄加1岁

Update student

Set Sage=Sage+1;

[例题7]将计算机科学系全体学生的成绩置为0

Update SC

Set Grade= 0

Where'CS'=

(Select Sdept

From Student

Where Student.Sno=Sc.Sno);

sql数据库示例,适合初学者

一、数据库概述 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。(文件系统) 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。 数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。 数据库:存储、维护和管理数据的集合。 二、数据库的安装与配置 * 安装 * 参照图解 * 一路下一步 * 配置 * 参照图解 * 到选择字符集时停 登录Mysql: mysql -u root -p abc * 卸载 1.停止mysql服务net stop mysql 启动mysql服务net start mysql 2.卸载mysql 3.找到mysql 安装目录下的my.ini datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/" * 修改密码 运行cmd * 安装成功了打开cmd --> mysql -uroot -p你的密码 * 修改mysql root用户密码 1) 停止mysql服务运行输入services.msc 停止mysql服务 或者cmd --> net stop mysql 2) 在cmd下输入mysqld--skip-grant-tables 启动服务器光标不动(不要关闭该窗口) 3) 新打开cmd 输入mysql -u root -p 不需要密码

数据库实验3答案

实验三:交互式SQL语句的使用 1、实验目的 (1)掌握数据库对象的操作过程,包括创建、修改、删除 (2)熟悉表的各种操作,包括插入、修改、删除、查询 (3)熟练掌握常用SQL语句的基本语法 2、实验平台 使用SQL Server提供的Microsoft SQL Server Management Studio工具,交互式使用SQL语句。 3 实验容及要求 选择如下一个应用背景之一: ●学生选课系统 ●习题3、4、和5中使用的数据库 ●其它你熟悉的应用 (1)建立一个数据库和相关的表、索引、视图等数据库对象,练习对表、索引和视图的各种操作。 (2)要求认真进行实验,记录各实验用例及执行结果。 (3)深入了解各个操作的功能。 实验要求包括如下方面的容: 3.1 数据定义 1.基本表的创建、修改及删除 2.索引的创建 3.视图的创建 3.2 数据操作 完成各类更新操作包括: 1.插入数据

2.修改数据 3. 删除数据 3.3 数据查询操作 完成各类查询操作 1.单表查询 2.分组统计 3. 连接查询 4. 嵌套查询 5. 集合查询 3.4 数据操作 1.创建视图 2.视图查询 参考示例: 建立一个学生选课数据库,练习对表、视图和索引等数据库对象的各种操作。 一、数据定义 创建学生选课数据库ST,包括三个基本表,其中Student表保存学生基本信息,Course表保存课程信息,SC表保存学生选课信息,其结构如下表: 表1. Student表结构 表2. Course表结构

表3. SC表结构 1.创建、修改及删除基本表 (1)创建Student表 CREATE TABLE Student (Sno CHAR(8)PRIMARY KEY, Sname CHAR(8), Ssex CHAR(2)NOT NULL, Sage INT, Sdept CHAR(20) ); (2)创建Course表 CREATE TABLE Course (Cno CHAR(4)PRIMARY KEY, Cname CHAR(40)NOT NULL, Cpno CHAR(4), Ccredit SMALLINT, ); (3)创建SC表 CREATE TABLE SC (Sno CHAR(8)FOREIGN KEY (Sno)REFERENCES Student(Sno), Cno CHAR(4), Grade SMALLINT, ); (4)创建员工表Employee

数据库SQL查询例题及解答

1 实验目的 1.熟悉数据库的交互式SQL工具。 2.熟悉通过SQL对数据库进行操作。 3.完成作业的上机练习。 2 实验工具sql server 利用Sql server及其交互式查询工具-查询分析器来熟悉SQL。 3 实验内容和要求 1)实验内容: 创建数据库boat,包括Sailors,Boats,Reserves三个表,表结构如下: Sailors(sid: integer, sname: string, rating: integer, age: real) 船员(船员编号,姓名,级别,年龄) Boats(bid: integer, bname: string, color: string) 船(船编号,名称,颜色) Reserves(sid: integer, bid: integer, day: date) 租赁(船员编号,船编号,日期) (注:下划线表示主键),并插入一定数据。 2)完成下列要求:

(1)查询所有船员的信息 (2)查询所有姓王的船员的信息 (3)查询租用过103号船的船员姓名 (4)查找租用过船只的船员编号 (5)查找rating>7且年龄>25的水手编号 (6)查找租用过红船和绿船的水手名字 (7)查找租用过红船或绿船的水手编号 (8)查找最年长的水手的年龄和名字 (9)在18岁以上水手中,对于每个rating级别中最少有两个水手以上的组中最年轻水手的年龄 (10)查找每条红色船只被租用的次数 (11)把30岁以上船员的级别调高一级 (12)删除所有年龄超过40岁的船员信息 (13)建立年龄超过25岁的船员的视图 (14)对(13)建立的视图,举一操作的例子(查询、删除、修改均可) 2)要求: a.建立boat数据库的SQL脚本,插入所有数据项的SQL脚本(包括所有的测试数据)。 b.记录完成查询要求的SQL语句脚本。 c.记录完成查询的查询结果。

数据库SQL实验题目

实验一数据定义操作 实验目的 1.掌握数据库和表的基础知识 2.掌握使用创建数据库和表的方法 3.掌握数据库和表的修改、查看、删除等基本操作方法 实验内容和要求 一、数据库的创建 在开始菜单中,启动SQl Server 程序中的“SQL Server Management Studio”,在对象资源管理器窗口中,右键单击“数据库”,选择“新建数据库”,创建成绩管理数据库Grademanager,要求如下表所示: Grademanager数据库参数表 参数参数值参数参数值 存储的数据文件路 径 D:\db\ 存储的日志文件路径D:\db\ 数据文件初始大小5MB 日志文件初始大小2MB 数据文件最大值20MB 日志文件最大值15MB 数据文件增长量原来10% 日志文件增长量2MB 二、表的创建、查看、修改和删除 1.表的创建 在Grademanager数据库中,右键单击“表”,选择“新建表”命令,创建如下表所示的表:(1)Student表的表结构 字段名称数据类型长度精度小数位数是否允许 Null值 说明 Sno Char 10 0 0 否学号,主码 Sname Varchar 8 0 0 是姓名 Ssex Char 2 0 0 是性别,取值:男或女 Sbirthday Date 8 0 0 是出生日期 Sdept Char 16 0 0 是系名 Speciality Varchar 20 0 0 是专业名 特别注意: 为属性Ssex设置约束,需选中属性Ssex行,然后单击菜单中的“表设计器”,选择“CHECK 约束”命令,然后按照图1进行设置。

图1 设置性别的约束 (2)Course表(课程名称表)的表结构 字段名称数据类型长度精度小数位数是否允许Null值说明 Cno Char 5 0 0 否课程号,主码Cname Varchar 20 0 0 否课程名 (3)SC表(成绩表)的表结构 字段名称数据类 型 长 度 精 度 小数位 数 是否允许Null值说明 Sno Char 10 0 0 否学号,外码 Cno Char 5 0 0 否课程号,外码 Degree Decimal 5 5 1 是成绩,0~100之间 特别注意: ①为属性Degree 约束,可参照属性Ssex进行设置,“CHECK约束对话框”中的表达式为Degree>=1 And Degree<=100 ②为SC表设置外键Sno和Cno的方法: 右键单击表SC,选择“设计”命令,然后选择菜单“表设计器”中的“关系”命令,打开“外键关系”窗口,选择“添加”按钮,然后单击“表和列规范”后的按钮,按照图2进行设置,即可将SC表中的Cno属性设置为外键。按照相同的方法,将属性Sno也设置为外键。

数据库实验题目和答案

按照如下方式重新定义四张表: 定义新的books表,其所拥有的属性与属性类型与原有的books表一致 以列级完整性的方式定义属性bookId为主码,同时在定义的时候必须提供约束名 定义属性category为”非空” ,同时在定义的时候必须提供约束名 create table Books( bookId number(9,0) constraint BooksKey primary key, title varchar(80), author varchar(40), year integer, category varchar(15) constraint B1 not null ); commit; 定义新的customers表,其所拥有的属性与属性类型与原有的customers表一致 以表级完整性的方式定义属性cid为主码 以列级完整性的方式定义属性cname为”唯一”,同时在定义的时候必须提供约束名 create table Customers ( cid number(9,0), cname char(40) constraint C1 unique, age integer, primary key(cid) ); commit; 定义新的purchases表,其所拥有的属性与属性类型与原有的purchases表一致 定义属性cid与bookId为主码,同时在定义的时候必须提供约束名 以列级完整性的方式定义属性bookId为外码,它参照Books表的主码,同时在定义的时候必须提供约束名。当删除Books表中的某一本书时,级联删 除与它相关的购买记录 以表级完整性的方式定义属性cid为外码,它参照customers表,同时在定义的时候必须提供约束名。当删除customers表中的某个顾客时,如果存在 与该客户相关的购买记录,拒绝删除。 create table Purchases( cid number(9,0), bookId number(9,0)

安装SQL+SERVER示例数据库

安装SQL SERVER示例数据库 必须安装完SQL SERVER软件再安装示例数据库。 (一)安装AdventureWorks示例数据库 1、从“SQL SERVER示例数据库”文件夹中下载安装包。 根据操作系统的位数,选择32位或64位的版本安装: 32位的安装程序:AdventureWorksDB_x32.msi 64位的安装程序:AdventureWorksDB_x64.msi 2、双击该安装文件,自动将文件解压到SQL SERVER安装目录C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data目录下(32位的在Program Files(x86) \Microsoft SQL Server\MSSQL.1\MSSQL\Data目录下)。目录中包含两个文件:AdventureWorks_Data.mdf 和AdventureWorks_Log.ldf,即AdventureWoks的数据文件和日志文件。 打开SQL SERVER MANAGEMENT STUDIO EXPRESS(SSMSE),右击“数据库”节点,选择“附加…”,“添加…”,选择上述目录下的AdventureWorks_Data.mdf。 “确定”后,可以在SSMSE的数据库列表中看到这个数据库。 注:如果附加文件时出错(装64位程序包时),将C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data目录下的两个文件都拷贝到Program Files(x86) \Microsoft

SQL Server\MSSQL.1\MSSQL\Data目录下,再尝试附加) (二)安装Northwind示例数据库 1、从“SQL SERVER示例数据库”文件夹中下载安装包SQL2000SampleDb.msi 2、双击运行这个文件,文件被自动解压到C:\SQL Server 2000 Sample Databases目 录下。以“管理员身份”运行cmd命令,打开cmd窗口,依次执行以下两条命令:cd c:\sql* sqlcmd -S .\sqlexpress -i instnwnd.sql 如果成功执行,可在SSMSE的数据库列表中看到这个数据库。 注:这种方法通过执行创建数据库的SQL语句建立数据库。

数据库实验五题目答案

实验五 实验5.1 数据查询 1)要求 以School数据库为例,在该数据库中存在四表格,分别为: ●表STUDENTS(sid, sname, email, grade); ●表TEACHERS(tid, tname, email, salary); ●表COURSES(cid, cname, hour); ●表CHOICES(no, sid, tid, cid, score) 在数据库中,存在这样的关系:学生可以选择课程,一个课程对应一个教师。在表CHOICES中保存学生的选课记录。 按以下要求对数据库进行查询操作: (1)查询年级为2001的所有学生的名称并按编号升序排列。 程序:Select sname from students where grade='2001' order by sid asc; (2)查询学生的选课成绩合格的课程成绩。 程序:Select score from choices where score>'59';

(3)查询课时是48或60的课程的名称。 程序:select cname from courses where hour='48'or hour='60'; (4)查询所有课程名称中含有data的课程编号。 程序:select cid from courses where cname like'%data%';

(5)查询所有选课记录的课程号(不重复显示)。 程序:select distinct cid from choices; (6)统计所有教师的平均工资。 程序:select avg(salary) from teachers;

数据库实例

1 创建学生表stu 属性说明类型长度约束Sno学号字符串6主键Sname姓年字符串8非空Age年龄整型 sex性别字符串2 bplace籍贯字符串20 属性说明类型长度约束cno课程号字符串6主键cname课程名称字符串8非空credit学分整型 属性说明类型长度约束tno教师号字符串6主键tname教师名字符串8非空Age年龄整型 ps职称字符串2

7、找出3 个学分的课程号和课程名。 8、查询年龄大于22 岁的学生情况。 9、找出籍贯为河北的男生的姓名和年龄。 10、找出年龄在20 ~23 岁之间的学生的学号、姓名和年龄,并按年龄升序排序 11、找出年龄小于23 岁、籍贯是湖南或湖北的学生的姓名和性别。 12、找出学生表中籍贯是空值的学生的姓名和性别。 13、找出成绩为95 分的学生的姓名。 14、找出成绩在90 分以上的学生的姓名。 15、查询全部学生的学生名和所学课程号及成绩。 16、找出籍贯为山西或河北,成绩为90 分以上的学生的姓名、籍贯和成绩。 17、查出课程成绩在80 分以上的女学生的姓名、课程名和成绩。 18、查询各课程的学时数。 19、找出教师的最小年龄。 20、统计年龄小于等于22 岁的学生人数。 21、找出学生的平均成绩和所学课程门数。 22、找出年龄超过平均年龄的学生姓名。 23、找出各课程的平均成绩,按课程号分组,且只选择学生超过3 人的课程的成绩。 24、查询没有选任何课程的学生的学号和姓名。 25、查询哪些课程只有男生选读。 26、要求给出一张学生、籍贯列表,该表中的学生的籍贯省份,也是其他一些学生的籍贯省份。 27、找出选修了全部课程的学生的姓名。 28、列出全部教师的姓名及其任课的课程号、班级。

罗斯文示例数据库学习

罗斯文示例数据库学习 一、罗斯文数据库简介 罗斯文库是Access自带的示例数据库,也是一个很好学习教程。让我们一起来学习一下吧。通过罗斯文数据库的学习,能对数据库的表、关系、查询、报表、窗体、切换面板等内容有个全面的了解。 我们做数据库开发,应该来讲是现实生活中一种管理思路的体现与高度概括。那么要构思之前肯定要对整个流程有个清晰的了解。那我们就先来了解一下这个罗斯文公司的业务流程吧。罗斯文公司是一个虚构的商贸公司,该公司进行世界范围的食品的采购与销售,就是通常所讲的买进来再卖出去,赚取中间的差价。罗斯文公司销售的食品分为几大类,每类食品又细分出各类具体的食品。这些食品由多个供应商提供,然后再由销售人员售给客户。销售时需要填写订单,并由货运公司将产品运送给客户。 要打开“罗斯文数据库”,先启动Access,从“帮助”菜单选择“示例数据库”->“罗斯文数据库”即可。如你所安装的是精简版不带有示例数据库,那就从网上下载一个吧。 图1-1 注:本教程着重在实例讲解,不含最基本的一些概念及操作说明,如需学习基础教程请自己看书或参考其他教程。

二、表设计思路及表的数据类型、字段属性 首先要做的事是设计表,表的设计思路就是将数据分类,同一类的数据放在一个表中,并且有一个字段与其他表之间建立联系。而且要尽可能的细分,以最大限度的保证每个表中不存在重复的数据资料。 比如说销售订单吧,肯定要记录客户的具体资料如名称、地址、电话等方便联系;还要记录订单的日期,运费等;以及每张订单中都有哪些具体的产品、数量、价格等信息。如果我们把这么多信息记录在一张表里的话,那就要录入许多重复的信息,比如客户的资料,不仅很麻烦还很容易出错。 所以应该细分为客户表专门维护客户的信息;订单表记录订单的日期,运费;订单名细表记录具体的产品数量及价格;另外还需要产品表、供应商表、雇员表、运货商表及类别表。 “罗斯文数据库”中共有8个表,选中表,以详细信息的视图来查看各个表的说明,如下图。 图2-1 关于数据库的基本组成表,查询,窗体等及表的基本组成字段,记录等概念就不用再讲了吧。其中一些常用的知识将在示例中一起讲解。在表设计中重点要掌握的是数据类型、字段属性的设置与应用。 三、数据类型的用法 (一)、数据类型的用法 1.文本 用于存储不需要计算的数字,文本、其他字符或组合内容。最多可存储255个汉字,英文或字符。

数据库试验答案

计算机与信息学院 数据库实验报告 专业班级 学生姓名及学号 课程教学班号 任课教师 实验指导教师 实验地点 2012 ~2013 学年第二学期

实验1 使用向导创建和删除数据库 一、实验目的 1.熟悉SQL Server 中SQL Server Management Studio的环境 2.了解SQL Server 数据库的逻辑结构和物理结构 3.掌握使用向导创建和删除数据库的方法 二、实验要求 1.熟练使用SSMS进行数据库的创建和删除操作。 2.完成实验报告。 三、实验内容 设有一学籍管理系统,其数据库名为“EDUC”。 初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长; 日志文件初始为2MB,最大可增长到5MB,按1MB增长。 数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”。 日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。 四、实验步骤

1.使用SQL Server Management Studio(简称SSMS)创建数据库。 (1)启动SSMS 在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。如果身份验证选择的是“混合模式”,则要输入sa的密码。 (2)建立数据库 在“对象资源管理器”窗口,建立上述数据库EDUC。在数据库节点上右击选择新建。同时建立一个同样属性的数据库EDUC1。

《数据库及SQL Server》项目实训题

《数据库及SQL Server》项目实训题 一、学生成绩管理系统数据库 要求: 1、设计并创建数据库( ),保存与学生及成绩有关的信息,包括:学生基本信息,课程基本信息,学生成绩信息等,设置各表的完整性约束条件(如主键、外键等)。录入以上信息。 2、创建存储过程( ),根据输入学号统计并显示该生成绩信息,包括总分、平均分、不及格门数等。 3、创建存储过程( ),根据输入课程名称统计并显示该课程的考试信息,包括考试人数、最高分、最低分、平均成绩等。 4、创建函数( ),根据学号与课程名得出该生该门课的名次。 二、图书管理系统数据库 要求: 1、设计并创建数据库( ),保存与图书管理有关信息,包括:图书信息,读者信息,借阅信息等,设置各表的完整性约束条件(如主键、外键等)。录入以上信息。 2、创建存储过程( ),根据输入读者号查询统计该读者的借阅信息,包括总借本数、未还本数、未还书的图书信息与借阅日期等。 3、创建存储过程( ),根据输入书号查询该图书的借阅信息,包括借阅者信息与借还日期,并统计该书的借阅人次数、总借阅天数等。 4、创建触发器( ),当借书(添加借阅记录)时,查询该书就是否借出未还,如已借出则不能添加借阅记录,如未借出则正常添加。(提示:可创建替代触发器) 三、职工工资系统数据库 已知某公司工资计算方法为: 实发工资=级别工资+(本月加班天数-缺勤天数)/本月全勤天数×级别工资 如:张明的级别为部长,部长工资就是5000元,2014年11月全勤天数为20天,张明加班2天,缺勤1天,则张明2014年11月的工资就是:5000+(2-1)/20*5000=5250元 要求: 1、设计并创建数据库( ),用于保存与职工工资有关的信息,设置各表的完整性约束条件 (如主键、外键等)。录入职工基本信息、级别工资信息、每月的职工加班天数与缺勤天数。 2、创建视图( ),包括以下信息:年月、职工工号、姓名、级别、加班天数、缺勤天数、实 发工资。试设计各种条件查询该视图。 3、创建函数( ),根据年月与职工工号计算出该职工该月的工资。 4、创建存储过程( ),根据输入的年月计算出该月所有职工的工资,保存并显示。(参考提示:先得到该月全勤天数) 四、超市售货系统数据库 要求: 1、一连锁超市拥有若干分部,设计并创建数据库( ),保存与超市售货有关信息,包括:各分部超市的基本信息,商品信息,每天的销售信息等,设置各表的完整性约束条件(如主键、外键等)。录入以上信息。 2、创建函数( ),根据年月、超市编号、商品号计算出该商品在该超市当月的销售总金额。 3、创建存储过程( ),根据输入年月统计当月销售量排在前五位的商品及销售数量。 4、创建存储过程( ),根据输入年月统计当月销售金额排在前5%的超市信息及销售总金额。(提示:可创建临时表存放中间数据,用完删除)

一个完整的数据库示例--说明

一、表的结构及完整性约束 新建一个数据库jxsk,包括S、C、SC、T、TC五个表,结构如下:C表: S表: SC表: T表:

TC表: 二、安全性控制及视图机制 1、三类角色:depart、teacher、student depart的权限: teacher的权限:

student的权限: 2、有2个院系用户:d_jsj,d_xx,同属于depart角色。

有1个教师用户:t ,属于teacher 角色。

有一个学生用户:s,属于student角色。 3、创建计算机系教师视图t_view_jsj、计算机系学生视图s_view_jsj,并授予d_jsj 用户在这两个视图上的select、delete、update、insert权限。 计算机系教师视图t_view_jsj: create view t_view_jsj as select tno,tn,sex,age,prof,sal,comm,dept from t where dept='计算机' with check option

授予d_jsj用户在计算机系教师视图t_view_jsj 上的select、delete、update、insert 权限: grant select,update,delete,insert on t_view_jsj to d_jsj 计算机系学生视图t_view_jsj: create view s_view_jsj as select sno,sn,sex,age,dept,resume,native from s where dept='计算机' with check option 授予d_jsj用户在计算机系学生视图s_view_jsj 上的select、delete、update、insert 权限: grant select,update,delete,insert on s_view_jsj to d_jsj …… 4、创建一个视图,显示学号,姓名,院系,课程名,成绩。 create view score_view(学号,姓名,院系,课程名,成绩) as select s.sno,sn,dept,cn,score from s,sc,c where s.sno=sc.sno and https://www.doczj.com/doc/2c12825259.html,o=https://www.doczj.com/doc/2c12825259.html,o 三、完整性控制--触发器、规则 1、要求当删除C表中某课程信息时,同时删除SC和TC中与此课程相关的记录。create trigger c_delete_trigger on c after delete as delete from sc where cno in (select cno from deleted) delete from tc where cno in (select cno from deleted) go

同济大学数据库实验5答案

create proc procA as select* from student exec proca create proc procB @_year char(4) as select* from student where year(birthday )=@_year declare @_year char(4) set @_year ='1994' exec procB@_year create proc procf @_Snum char(30) as select s.snum ,avg(score)as平均成绩,count(https://www.doczj.com/doc/2c12825259.html,um)as选秀门数,sum(1-score/60)as不及格门数 from student s,course c,sc,sections st where s.snum =sc.snum and sc.secnum =st.secnum and https://www.doczj.com/doc/2c12825259.html,um =https://www.doczj.com/doc/2c12825259.html,um and S.Snum =@_Snum group by S.Snum DECLARE @_SUNM char(30) set @_SUNM ='s001' exec procf@_sunm CREATE PROC Procd @_snum char(4),@_avg int out,@_selected_course int out,@_failed_course int out AS SELECT @_avg=AVG(score),@_selected_course=COUNT(cnum),@_failed_course=sum(1-score/60) FROM sc JOIN sections ON sc.secnum =sections.secnum WHERE snum=@_snum

数据库上机实验题目和答案

试用SQL的查询语句表达下列查询: 1.检索王丽同学所学课程的课程号和课程名。 select Cno ,Cname from c where Cno in (select cno from sc where sno in (select sno from s where sname='王丽' )) 2.检索年龄大于23岁的男学生的学号和姓名。 select sno,sname from s where sex='男' and age>23 3.检索‘c01’课程中一门课程的女学生姓名 select sname from s where sex='女' and sno in (select sno from sc where cno='c01') 4.检索s01同学不学的课程的课程号。 select cno from c where cno not in (select cno from sc where sno ='s01') 5.检索至少选修两门课程的学生学号。 select sc.sno from s,sc where s.sno=sc.sno group by sc.sno having count(https://www.doczj.com/doc/2c12825259.html,o)>=2 6.每个学生选修的课程门数。 解法一: select so.sno sno,https://www.doczj.com/doc/2c12825259.html,ount,s.sname from(select sc.sno sno,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno ) so,s where s.sno=so.sno 解法二: select sc.sno sno,s.sname,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno,sname

SQL_Server2000 示例数据库NorthWind 的分析

SQL_Server2000示例数据库NorthWind的分析 表名:Categories(食品类别表) 表结构: 字段名称数据类型长度允许为空CategoryID(主键) int 4 否 CategoryName nvarchar 15 否 Description ntext 是 Picture image 是 主键:CategoryID 主键约束名称:PK_Categories 关系说明:该表主要用来保存食品种类信息的数据。 表名:CustomerCustomerDemo(消费者表) 表结构: 字段名称数据类型长度允许为空CustomerID(主键) nchar 5 否 CustomerTypeID(主键) nchar 10 否 组合主键:CustomerID、CustomerTypeID 主键约束名称:PK_CustomerCustomerDemo 外键: 1.列 CustomerTypeID引用表CustomerDemographics(CustomerTypeID) 2.列 CustomerID引用表Customers(CustomerID) 外键约束名称: FK_CustomerCustomerDemo和FK_CustomerCustomerDemo_Customers 关系说明:该表主要用来保存消费者ID和消费者类别ID信息的数据。

表名:CustomerDemographics(消费者类别说明表) 表结构: 字段名称数据类型长度允许为空CustomerTypeID(主键) nchar 10 否 CustomerDesc ntext 16 是 主键:CustomerTypeID 主键约束名称:PK_CustomerDemographics 关系说明:该表主要用来存储消费者类别说明信息。 表名:Customers(消费者信息表) 表结构: 字段名称数据类型长度允许为空CustomerID(主键) nchar 5 否 CompanyName nvarchar 40 否 ContactName nvarchar 30 是 ContactTitle nvarchar 30 是 Address nvarchar 60 是 City nvarchar 15 是 Region nvarchar 15 是 PostalCode nvarchar 10 是 Country nvarchar 15 是 Phone nvarchar 24 是 Fax nvarchar 24 是 主键:CustomerID 主键约束名称:PK_Customers 关系说明:该表主要用来存储消费者详细信息的数据表。

数据库实验1-6参考答案

实验一SQL Server使用初步 一、实验目的 1、熟悉SQL Server2000的组成及基本功能。 2、掌握SQL Server2000的登录及注册。 3、掌握SQL Server2000企业管理器的使用方法。 4、熟悉查询分析器的基本使用。 二、实验预习 1、什么是数据库管理系统DBMS?你所知道的DBMS有哪些? 答:DBMS是位于用户和操作系统之间的一层数据管理软件。常见的DBMS主要有:Oracle、db2、SQL Server、MySQL、PostgreSQL、SQLite、Firebird等等。 2、SQL Server 2000(2005)的安装步骤? 答:以企业版安装为例,步骤为: 将企业版安装光盘插入光驱后,出现以下提示框。请选择“安装 SQL Server 2000 组件” 出现下面对话框后,选择 "安装数据库服务器" 。 选择 "下一步",然后选择 "本地计算机" 进行安装。 在 "安装选择" 窗口,选择 "创建新的SQL Server实例..."。对于初次安装的用户,应选用这一安装模式,不需要使用 "高级选项" 进行安装。 "高级选项" 中的内容均可在安装完成后进行调整。 在 "用户信息" 窗口,输入用户信息,并接受软件许可证协议。 在“安装定义”窗口,选择“服务器和客户端工具”选项进行安装。 在“实例名”窗口,选择“默认”的实例名称。 在“安装类型”窗口,选择“典型”安装选项,并指定“目的文件夹”。 在 "服务账号" 窗口,请选择 "对每个服务使用统一账户..." 的选项。 在 "身份验证模式" 窗口,选择 "混合模式..." 选项,并设置管理员"sa"账号的密码。 最后按“下一步”即可完成安装。 检测安装:如果安装成功,应该能成功启动SQL Server,并且能和SQL Server 客户端连接上。 可以通过服务管理器来进行启动。

数据库实验习题

《数据库概论》实验指导书 (2003级) 一、实验目的: 数据库系统是一门应用性很强的课程,上机实验是数据库课程的重要环节。本实验是结合《数据库概论》课程的学习而开设的实验。本实验目的如下: 1. 通过上机实验,加深对数据库系统理论知识的理解,增强对网络环境下大型数据库的感性认识和实际操作能力; 2. 通过使用具体的DBMS,了解一种实际的数据库管理系统,并掌握其操作技术。熟悉ORACLE数据库的Net8工具,掌握ORACLE数据库的网络连接配置; 3. 学习使用SQL语言,加深对SQL语言的认识和理解,提高SQL语言的实际应用能力; 4. 加强对事务处理、权限管理等概念的认识和理解。 二、适应专业:信息管理与信息系统,信息与计算机科学 三、实验学时数:12学时 四、实验内容及学时安排: 实验准备: 各班选出10个同学,协助老师搭建试验环境。包括: 1)安装ORACLE客户端,配置与主机的数据库连接。 2)安装软件工具 PLSQL/DEVELOPER 3)负责本班用户的建立。 分为两批上午下午各两个班。 实验一:数据定义/数据操纵语言 实验目的:熟悉Oracle上机环境以及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。 学时数:4学时 实验内容:SQL数据定义语句, SQL数据操纵语句。 实验要求:1. 熟悉Oracle上机环境; 2. 建立数据库表,修改数据库表结构,建立、删除索引;

3. 对数据库表进行插入、修改和删除数据的操作。 实验二:数据查询语言,视图定义 实验目的:体会SQL语言数据查询功能的丰富和复杂,视图使用。 学时数:4学时 实验内容:SQL数据查询语句,视图的定义与操纵; 实验要求:对数据库表进行各种查询操作,建立视图,视图查询,视图更新; 实验三:授权控制与事务处理 实验目的:通过实验进一步理解视图的建立和更新、数据库的权限管理和事务处理功能。 学时数:2学时 实验内容: 1. SQL数据控制语句; 2. SQL事务处理。 实验要求: 1. 给某一或全部用户授权和收回授权; 2. 事务回退,事务提交。 五、教材及参考文献 1.《数据库系统概论》(第三版)萨师煊等编著高等教育出版社 2000.2 2.《ORACLE 8.x For Windows NT实用教程》翁正科等编著清华大学出版社 1998.10 六、实验环境 实验要求如下环境 服务器端:Windows 2000NT Server; ORACLE 8.x Database Server For Windows Windows2000 Server 客户端: Windows9x;Oracle 8.x Client 网络协议:TCP/IP 七、成绩考核 上机实验考核采取实验报告和上机抽查检验相结合的方式。每次实验结束后都必须写出实验报告。 八. 实验报告

数据库实验答案

实验3 使用T-SQL语言完成单表查询 一、实验目的 掌握使用T-SQL语言完成单表查询 掌握常用谓词的用法 掌握where子句的用法 掌握order by 子句的用法 掌握group by 子句和having短语的用法 实验环境 Microsoft SQL Server 2000。 实验内容和要求 查询全体学生的详细信息。 查询所有课程的详细信息。 查询所有选课记录的详细信息,要结果表中的列名以中文的形式显示,分别为:学号,课程号,成绩。 查询已被学生选修了的课程的编号。 查询系别编号为“d002”的学生的姓名和性别。 查询年龄在19至21岁或者性别为“女”的学生的学号和所在系别编号。 查询系别编号为d001、d002和d003的学生的学号和姓名。 查询课程名为“C_”开头的课程名和学分。 某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。 查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。 查询学校所开设的总的课程数。 计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。 查询选修了3号课程的学生的最高分和最低分,对应的列名分别为“最高分”和“最低分”。 求各个系别的编号以及各系的人数。 查询选课人数大于等于2人的课程编号以及选课的人数。 查询学生2选修课程的总成绩对应的列名为“总成绩”,并显示出学号。 查询有2门以上课程是80分以上的学生的学号及课程数。 查询选修了1号课的学生的学号和成绩,结果按成绩降序、学号升序排列。 实验1 使用T-SQL语言建库、建表 实验2 向表中增、删、改数据 实验目的 掌握使用T-SQL建库、建表、修改表; 掌握使用T-SQL对表中数据进行插入、删除和修改。 实验环境 Microsoft SQL Server 2000。 实验内容和要求 建立数据库STDB 在数据库STDB中建立四个表:

数据库SQL查询例题与解答

1实验目的 1 .熟悉数据库的交互式SQL工具, 2 . 熟悉通过SQL对数据库进行操作。 3 . 完成作业的上机练习。 2 实验工具sql server 利用Sql server及其交互式查询工具-查询分析器来熟悉SQL。 3实验内容和要求 1)实验内容: 创建数据库boat,包括Sailors ,Boats,Reserves三个表,表结构如下: Sailors(sid: integer, sname: stri ng, rat ing: in teger, age: real) 船员(船员编号,姓名,级别,年龄) Boats(bid: integer, bname: stri ng, color: stri ng) 船(船编号,名称,颜色) Reserves(sid: integer, bid: integer, day: date) _____ 租赁(船员编号,船编号,日期) (注:下划线表示主键),并插入一定数据

2 )完成下列要求: (1)查询所有船员的信息 (2)查询所有姓王的船员的信息(3 )查询租用过103 号船的船员姓名 (4)查找租用过船只的船员编号 (5 )查找rating>7 且年龄>25 的水手编号(6)查找租用过红船和绿船的水手名字(7 )查找租用过红船或绿船的水手编号(8)查找最年长的水手的年龄和名字 (9 )在18 岁以上水手中,对于每个rating 级别中最少有两个水手以上的组中最年轻水手的年龄 (10 )查找每条红色船只被租用的次数 (11 )把30 岁以上船员的级别调高一级 (12 )删除所有年龄超过40 岁的船员信息 (13 )建立年龄超过25 岁的船员的视图 (14 )对(13 )建立的视图,举一操作的例子(查询、删除、修改均可) 2)要求: a.建立boat 数据库的SQL 脚本,插入所有数据项的SQL 脚本(包括所有的测试数据)。b.记录完成查询要求的SQL 语句脚本。

mysql数据库实验答案

实验一创建、修改数据库和表结构 1、用create建立教学数据库的五个基本表: (1)学生表(学号,姓名,性别,年龄),student((Sno, sname,ssex,sage) ; (2)课程表(课程号,课程名,学分),Course (Cno, Cname, credit) ; (3)选课表(学号,课程号,成绩),SC (Sno,, Cno, grade ) ; (4) 教师表(教师号,姓名,性别,出生年月,系部,职称,地址), T(Tno,Tname,ssex,birthday,dept,title,address) ; (5) 工资表(教师号,基本工资,职务工资,合计),Salary(Tno,jbgz,zwgz,hj); Create Database Student default character set utf8 default COLLATE utf8_bin;

Use Student; Create Table Student( SNo c har(20) primary key, SName char(20) , SSex char(4) default '男', SAge int ) ENGINE=InnoDB; Create Table Course( CNo c har(20) primary key, CName char(20) NOT NULL,

CRedit f loat ) ENGINE=InnoDB; Create Table SC( SNo c har(20) NOT NULL, CNo c har(20) NOT NULL, Grade float, Primary Key(SNo, CNo), Foreign Key(SNo) References Student(SNo) On Delete Cascade, Foreign Key(CNo) References Course(CNo) )ENGINE=InnoD B;

相关主题
文本预览
相关文档 最新文档