当前位置:文档之家› 2018年数据库实验代码(完整版)

2018年数据库实验代码(完整版)

2018年数据库实验代码(完整版)
2018年数据库实验代码(完整版)

create table test1_student(sid char (12) not null, name varchar (10) not null,

sex char(2),age int,

birthday date,

dname varchar(30),

class varchar (10));

create table test1_teacher(tid char (6) not null,

name varchar (10) not null,

sex char(2),age int,

dname varchar(30));

create table test1_course(cid char (6) not null,

name varchar (40) not null,

fcid char(6),credit numeric(4,1));

create table test1_student_course(sid char(12) not null, cid char(6) not null,score numeric(5,1),tid char(6));

create table test1_teacher_course(tid char(6) not null, cid char(6) not null);

insert into test1_student values(200800200103,

'赵岩','男',21,date'1996-04-04','软件学院','2009'); insert into test1_student values(200800200102,

'李华','女',20,date'1995-03-03','软件学院','2009'); insert into test1_student values(200800200101,

'王欣','女',19,date'1994-02-02','计算机学院','2010');

insert into test1_teacher values(100101,

'张老师','男',44,'计算机学院');

insert into test1_teacher values(100103,

'马老师','男',46,'计算机学院');

insert into test1_teacher values(100102,

'李老师','女',45,'软件学院');

insert into test1_course values(300003,

'操作系统',300001,4);

insert into test1_course values(300002,

'数据库',300001,2.5);

insert into test1_course values(300001,

'数据结构',null,2);

insert into test1_student_course values(200800020101, 300001,91.5,100101);

insert into test1_student_course values(200800020101, 300002,92.6,100102);

insert into test1_teacher_course values(200800020101, 300003,93.7,100103);

insert into test1_teacher_course values(100101, 300001);

insert into test1_teacher_course values(100102, 300002);

insert into test1_teacher_course values(100103, 300003);

create table test2_01 as select sid,name from pub.student

where(select sid from pub.student

minus

select sid from pub.STUDENT_COURSE);

create table test2_02 as select sid,name from pub.student

where sid in (select sid from pub.STUDENT_COURSE

where cid in(select cid from pub.STUDENT_COURSE

where sid=200900130417));

create table test2_03 as select sid,name from pub.student

where sid in (select sid from pub.STUDENT_COURSE

where fcid=300002);

create table test2_04 as select sid,name from pub.student

where sid in (select t1.sid from pub.STUDENT_COURSE t1,pub.STUDENT_COURSE t2

where t1.sid=t2.sid and t1.CID='300002' and t2.CID='300005') ;

create table test2_05 as select pub.STUDENT.SID,https://www.doczj.com/doc/9511258823.html,,avg_score,sum_score from pub.STUDENT,(select sid,

round(avg(pub.STUDENT_COURSE.score),0)avg_score,

sum(pub.STUDENT_COURSE.score)sum_score from pub.STUDENT_COURSE

group by pub.STUDENT_COURSE.SID) t1

where pub.STUDENT.SID =t1.sid and pub.STUDENT.AGE=20;

create table test2_06 as select cid,max(score)max_score

from pub.STUDENT_COURSE

group by pub.STUDENT_COURSE.CID

create table test2_07 as select sid,name

from pub.STUDENT

where sid not in (select sid from pub.STUDENT where substr(https://www.doczj.com/doc/9511258823.html,,0,1)='张' or substr(https://www.doczj.com/doc/9511258823.html,,0,1)='李' or

substr(https://www.doczj.com/doc/9511258823.html,,0,1)='王')

create table test2_08 as select

substr(https://www.doczj.com/doc/9511258823.html,,0,1)second_name, count(*)p_count

from pub.STUDENT

group by substr(https://www.doczj.com/doc/9511258823.html,,0,1)

create table test2_09 as select pub.STUDENT.SID,https://www.doczj.com/doc/9511258823.html,,score

from pub.STUDENT,(select cid,sid,score from pub.STUDENT_COURSE ) t1

where pub.STUDENT.SID =t1.sid and t1.cid=300003;

create table test2_10 as select pub.STUDENT.SID,https://www.doczj.com/doc/9511258823.html,

from pub.STUDENT

where pub.STUDENT.sid in(select t1.SID from pub.STUDENT_COURSE t1,pub.STUDENT_COURSE t2

where t1.SCORE<60 and t2.SCORE<60 and t1.SID=t2.sid and t1.CID=t2.cid and t1.TID!=t2.tid

)

create table test3_01 as select*from pub.Student_31

delete from test3_01 where length(translate(sid,'/0123456789','/'))>0

create table test3_02 as select*from pub.Student_31

delete from test3_02 where age!=2012-to_char(birthday,'yyyy')

create table test3_03 as select*from pub.Student_31

delete from test3_03 where length(translate(sex,'/男女','/'))>0

create table test3_04 as select*from pub.Student_31

delete from test3_04 where dname is null or length(dname)<3 or dname like '% %'

create table test3_05 as select*from pub.Student_31

delete from test3_05 where length(translate(class,'/0123456789','/'))>0

create table test3_06 as select*from pub.Student_31

delete from test3_06 where length(translate(class,'/0123456789','/'))>0

delete from test3_06 where length(name)<2 or name like '% %'

delete from test3_04 where dname is null or length(dname)<3 or dname like '% %' delete from test3_03 where length(translate(sex,'/男女','/'))>0

delete from test3_02 where age!=2012-to_char(birthday,'yyyy')

delete from test3_01 where length(translate(sid,'/0123456789','/'))>0

create table test3_07 as select*from pub.STUDENT_COURSE_32

DELETE FROM TEST3_07 WHERE SID NOT IN (SELECT SID FROM PUB.STUDENT )

create table test3_08 as select*from pub.STUDENT_COURSE_32

DELETE FROM TEST3_08 WHERE (CID,TID) NOT IN

(SELECT TEST3_08.CID,TEST3_08.TID FROM TEST3_08,PUB.TEACHER_COURSE

WHERE TEST3_08.CID=PUB.TEACHER_COURSE.CID AND

TEST3_08.TID=PUB.TEACHER_COURSE.TID)

create table test3_09 as select*from pub.STUDENT_COURSE_32

DELETE FROM TEST3_09 WHERE SCORE<0 OR SCORE>100

create table test3_10 as select*from pub.STUDENT_COURSE_32

DELETE FROM TEST3_10 WHERE SCORE<0 OR SCORE>100

DELETE FROM TEST3_10 WHERE (CID,TID) NOT IN

(SELECT TEST3_10.CID,TEST3_10.TID FROM TEST3_10,PUB.TEACHER_COURSE WHERE TEST3_10.CID=PUB.TEACHER_COURSE.CID AND

TEST3_10.TID=PUB.TEACHER_COURSE.TID)

DELETE FROM TEST3_10 WHERE SID NOT IN (SELECT SID FROM PUB.STUDENT ) DELETE FROM TEST3_10 WHERE TID NOT IN (SELECT TID FROM PUB.TEACHER) DELETE FROM TEST3_10 WHERE CID NOT IN (SELECT CID FROM PUB.COURSE)

create table test4_01 as select*from pub.STUDENT_41

alter table test4_01 add sum_score int

update test4_01 set sum_score=(select t1.sum_score from (

select sid,sum(score)sum_score from pub.STUDENT_COURSE

group by sid) t1

where t1.sid=test4_01.sid)

create table test4_02 as select*from pub.STUDENT_41

alter table test4_02 add avg_score numeric(4,1)

update test4_02 set avg_score=(select t1.avg_score from (

select sid,avg(score)avg_score from pub.STUDENT_COURSE

group by sid) t1

where t1.sid=test4_02.sid)

create table test4_03 as select*from pub.STUDENT_41

alter table test4_03 add sum_credit int

create table test4_031 as select sid,cid,score from pub.STUDENT_COURSE alter table test4_031 add credit int

UPDATE test4_031 SET credit=(SELECT credit from pub.COURSE

where test4_031.CID=pub.COURSE.CID and score>=60)

UPDATE test4_031 SET credit=0

where score<60

create table test4_032 as select sid,sum(credit)sum_credit

from test4_031

group by sid

update test4_03 set sum_credit=(select test4_032.SUM_CREDIT

from test4_032

where test4_03.SID=test4_032.SID)

create table test4_04 as select*from pub.STUDENT_41

update test4_04 set dname=(select pub.DEPARTMENT.DID

from pub.DEPARTMENT

where test4_04.DNAME=pub.DEPARTMENT.DNAME)

where dname in (select dname from pub.DEPARTMENT)

create table test4_05 as select*from pub.STUDENT_41

alter table test4_05 add sum_score int

update test4_05 set sum_score=(select t1.sum_score from (

select sid,sum(score)sum_score from pub.STUDENT_COURSE

group by sid) t1

where t1.sid=test4_05.sid)

alter table test4_05 add avg_score numeric(4,1)

update test4_05 set avg_score=(select t1.avg_score from ( select sid,avg(score)avg_score from pub.STUDENT_COURSE group by sid) t1

where t1.sid=test4_05.sid)

alter table test4_05 add sum_credit int

update test4_05 set sum_credit=(select test4_032.SUM_CREDIT from test4_032

where test4_05.SID=test4_032.SID)

update test4_05 set did=(select test4_051.DID

from test4_051 where test4_05.DNAME=test4_051.DNAME) where dname in (select dname from test4_051)

update test4_05 set did='00' where dname not in (

select dname from test4_051)

or dname is null

create table test4_06 as select*from pub.STUDENT_42 update test4_06 set name=replace(name,' ','')

create table test4_07 as select*from pub.STUDENT_42 update test4_07 set sex=replace(sex,' ','')

update test4_07 set sex=substr(sex,0,1)

create table test4_08 as select*from pub.STUDENT_42 update test4_08 set class=replace(class,' ','')

update test4_07 set class=substr(class,0,4)

create table test4_09 as select*from pub.STUDENT_42 update test4_09 set age=2012-to_char(birthday,'yyyy')

where age is null

create table test4_10 as select*from pub.STUDENT_42 update test4_10 set name=replace(name,' ','')

update test4_10 set dname=replace(dname,' ','')

update test4_10 set sex=replace(sex,' ','')

update test4_10 set sex=substr(sex,0,1)

update test4_10 set class=replace(class,' ','')

update test4_10 set class=substr(class,0,4)

update test4_10 set age=2012-to_char(birthday,'yyyy')

where age is null

create table test5_10(

test varchar (20) ,age numeric(3));

insert into test5_10 values ('结果1',88) insert into test5_10 values ('结果2',90) insert into test5_10 values ('结果3',90) insert into test5_10 values ('结果4',86) insert into test5_10 values ('结果5',90) insert into test5_10 values ('结果6',90) insert into test5_10 values ('结果7',86) insert into test5_10 values ('结果8',86) insert into test5_10 values ('结果9',76) insert into test5_10 values ('结果10',86)

create view test6_01 as select sid,name,dname

from pub.student

where age<20 and dname='物理学院'

order by sid

create view test6_02 as select pub.student.sid, https://www.doczj.com/doc/9511258823.html,, sum(score) as sum_score from pub.student, pub.student_course

where dname='软件学院' and class='2009'

and pub.student.sid=pub.student_course.sid

group by pub.student.sid,https://www.doczj.com/doc/9511258823.html,

create view test6_03 as select pub.student.sid, https://www.doczj.com/doc/9511258823.html,,

pub.STUDENT_COURSE.SCORE from pub.student, pub.COURSE,pub.STUDENT_COURSE where pub.STUDENT.DNAME='计算机科学与技术学院' and

pub.STUDENT.CLASS='2010'and pub.student.sid=pub.student_course.sid

and https://www.doczj.com/doc/9511258823.html,='操作系统' and pub.COURSE.CID=pub.STUDENT_COURSE.CID

create view test6_04 as select pub.student.sid, https://www.doczj.com/doc/9511258823.html,

from pub.student, pub.COURSE,pub.STUDENT_COURSE

where pub.student.sid=pub.student_course.sid

and https://www.doczj.com/doc/9511258823.html,='数据库系统' and pub.COURSE.CID=pub.STUDENT_COURSE.CID and pub.STUDENT_COURSE.SCORE>90

create view test6_05 as select pub.student.sid, pub.student_course.cid,

https://www.doczj.com/doc/9511258823.html,, pub.student_course.score

from pub.student, pub.student_course, pub.course

where https://www.doczj.com/doc/9511258823.html,='李龙'

and pub.student_course.cid=pub.course.cid

and pub.student.sid=pub.student_course.sid

create view test6_06 as select pub.student.sid,https://www.doczj.com/doc/9511258823.html,

from pub.student where not exists

((select cid from pub.course)

minus (select cid from pub.student_course

where pub.student_course.sid=pub.student.sid))

create view test6_07 as select pub.student.sid,https://www.doczj.com/doc/9511258823.html,

from pub.student where not exists

((select cid from pub.course)

minus (select cid from pub.student_course

where pub.student_course.sid=pub.student.sid

and pub.STUDENT_COURSE.SCORE>=60))

create view test6_08 as select pub.COURSE.CID,https://www.doczj.com/doc/9511258823.html,

from pub.COURSE where pub.COURSE.FCID in

(select cid from pub.COURSE

where pub.COURSE.CREDIT=2)

create view test6_09 as select pub.student.sid, https://www.doczj.com/doc/9511258823.html,,

sum(credit) as sum_credit from pub.student, pub.student_course,pub.COURSE where pub.STUDENT.DNAME='化学与化工学院' and class='2010'

and pub.student.sid=pub.student_course.sid

and pub.COURSE.CID=pub.STUDENT_COURSE.CID

and pub.STUDENT_COURSE.SCORE>=60

group by pub.student.sid,https://www.doczj.com/doc/9511258823.html,

create view test6_10 as select t1.CID,https://www.doczj.com/doc/9511258823.html,

from pub.COURSE t1,pub.COURSE t2 where t1.FCID=t2.CID

and t2.FCID is not null

create table test7_01 as select (substr(name,2))First_name,

count(substr(name,2))frequency

from pub.student

group by substr(name,2)

/*substr函数格式

格式1:substr(string string, int a, int b);

格式2:substr(string string, int a) ;

格式1

1、string 需要截取的字符串

2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)

3、b 要截取的字符串的长度

格式2

1、string 需要截取的字符串

2、a 可以理解为从第a个字符开始截取后面所有的字符串。*/

create table test7_02 as with sql1(letter) as (select

substr(name,2,1) from pub.STUDENT union all select substr(name,3,1)

from pub.STUDENT where length(name)>2)select letter ,count(letter)frequency

from sql1

group by letter

create table test7_03 as select dname,class,count(sid)P_count

from pub.STUDENT

where dname is not null

group by dname,class

create table sql2 as select t1.SID,t1.DNAME,t1.CLASS,sum(t2.CREDIT)sum_credit

from pub.STUDENT t1,pub.COURSE t2,pub.STUDENT_COURSE t3

where t1.SID=t3.SID and t2.CID=t3.CID and t3.SCORE>=60

and t1.DNAME is not null group by t1.SID,t1.DNAME,t1.CLASS

alter table test7_03 add P_count1 int add P_count2 int

update test7_03 set P_count1=(select count(sid)P_count1 from sql2

where sum_credit>=10 and sql2.DNAME=test7_03.DNAME and

sql2.CLASS=test7_03.CLASS group by dname,class)

update test7_03 set P_count1=0 where P_count1 is null

update test7_03 set P_count2=P_count-P_count1

create table test7_04 as select dname,class,count(sid)P_count

from pub.STUDENT

where dname is not null

group by dname,class

alter table test7_04 add P_count1 int add P_count2 int

update test7_04 set P_count1=(select count(sid)P_count1 from sql2 where sum_credit>=10 and sql2.DNAME=test7_04.DNAME and

sql2.CLASS=test7_04.CLASS group by dname,class)

where CLASS>2008

update test7_04 set P_count1=(select count(sid)P_count1 from sql2 where sum_credit>=8 and sql2.DNAME=test7_04.DNAME and

sql2.CLASS=test7_04.CLASS group by dname,class)

where CLASS<=2008

update test7_04 set P_count1=0 where P_count1 is null

update test7_04 set P_count2=P_count-P_count1

create table TEST8_01 as select t1.dname,avg_ds_score,avg_os_score from

(select pub.STUDENT.DNAME,round(sum(m_score)/count(s_id))avg_ds_score

from pub.STUDENT,(select max(pub.STUDENT_COURSE.SCORE) m_score,

pub.STUDENT_COURSE.SID s_id from pub.STUDENT_COURSE,pub.COURSE

where pub.STUDENT_COURSE.CID=pub.COURSE.CID and https://www.doczj.com/doc/9511258823.html,='数据结构' group by pub.STUDENT_COURSE.SID)

where pub.STUDENT.SID = s_id

and pub.STUDENT.DNAME is not NULL

group by pub.STUDENT.DNAME)t1,

(select pub.STUDENT.DNAME,round(sum(m_score)/count(s_id))avg_os_score

from pub.STUDENT,(select max(pub.STUDENT_COURSE.SCORE) m_score,

pub.STUDENT_COURSE.SID s_id from pub.STUDENT_COURSE,pub.COURSE

where pub.STUDENT_COURSE.CID=pub.COURSE.CID and https://www.doczj.com/doc/9511258823.html,='操作系统' group by pub.STUDENT_COURSE.SID)

where pub.STUDENT.SID = s_id

and pub.STUDENT.DNAME is not NULL

group by pub.STUDENT.DNAME)t2

where t1.dname=t2.dname

create table ds(sid,name,dname,score)as

(select pub.student.sid, https://www.doczj.com/doc/9511258823.html,, pub.student.dname, score

from pub.student, pub.course, pub.student_course

where pub.student.sid=pub.student_course.sid

and pub.student.dname='计算机科学与技术学院'

and pub.course.cid=pub.student_course.cid

and https://www.doczj.com/doc/9511258823.html,='数据结构')

delete from ds where score=19

create table os(sid,name,dname,score)as

(select pub.student.sid, https://www.doczj.com/doc/9511258823.html,, pub.student.dname, score

from pub.student, pub.course, pub.student_course

where pub.student.sid=pub.student_course.sid

and pub.student.dname='计算机科学与技术学院'

and pub.course.cid=pub.student_course.cid

and https://www.doczj.com/doc/9511258823.html,='操作系统')

create table test8_02(sid,name,dname,ds_score)as

(select sid,name,dname,score

from ds where sid in (select sid from os))

alter table test8_02 add os_score int

update test8_02 set os_score=(select score

from os where test8_02.sid=os.sid)

create table test8_03(sid, name, dname)as

(select sid,name,dname

from ds) union

(select sid,name,dname

from os )

alter table test8_03 add os_score int add ds_score int update test8_03

set ds_score=(select score

from ds

where test8_03.sid=ds.sid)

update test8_03 set os_score=(select score

from os where test8_03.sid=os.sid)

create table test8_04 as select sid, name, dname

from pub.student where dname='计算机科学与技术学院' alter table test8_04 add os_score int add ds_score int update test8_04

set ds_score=(select score

from ds

where test8_04.sid=ds.sid)

update test8_04 set os_score=(select score

from os where test8_04.sid=os.sid)

数据库实验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

数据库系统实验报告 实验三 数据控制(安全性)..

《数据库系统概论》实验报告 题目:实验三数据控制(安全性) 班级姓名学号日期2014年6月6日 一、实验目的 1.通过SQL对数据库进行安全性控制 2.完成教材中例题的上机练习 二、实验平台 微软SQL Server 2000或以上版本。 对于SQL Server 2000,使用查询分析器运行SQL语句,对于SQL Server 2005以上的版本,使用SQL Server Management Studio运行SQL语句。 三、实验内容和要求 使用SQL对数据进行安全性控制,包括授权和权力回收。 操作完成后,查看授权用户是否真正具有所授予的数据操作权利,在权力回收操作之后,用户是否确实丧失了所回收的数据操作权力。 在前几次实验中已经建立了实验数据库,继续在此数据库上进行实验所要求的各项操作。认真填写实验报告,记录所有的实验用例。 四、实验步骤 1.以管理员sa登录数据库,新建DB数据库,然后运行如下SQL语句,创建 我们前几次实验所建立的表。 CREATE TABLE course ( Cno char(4) NOT NULL, Cname char(40) DEFAULT NULL, Cpno char(4) DEFAULT NULL, Ccredit smallint DEFAULT NULL, PRIMARY KEY (Cno) ) ; -- -- 转存表中的数据'course' -- INSERT INTO course (Cno, Cname, Cpno, Ccredit) V ALUES ('1', '数据库', '5', 4); INSERT INTO course (Cno, Cname, Cpno, Ccredit) V ALUES ('2', '数学', NULL, 2);

数据库实验

数据库实验 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

数据库原理实验指导 实验前准备: 请设计一个企业销售管理据库,其中需要保存的信息如下: 员工信息,包括:员工编号、员工姓名、性别、所属部门、职称、到职日、生日、薪水、填表日期; 客户信息,包括:客户号,客户名称,客户住址,客户电话、邮政编码; 产品信息,包括:产品编号,产品名称; 员工和客户可以签订订单,每签订一个订单,就要保存订单信息,包括:订单编号、客户号、业务员编号、订单金额、订货日期、出货日期、发票号码。 此外,每个订单可能涉及到多种产品,每种产品可能被多个订单订购。因此需要每个订单中每类产品的销售明细,包括每种产品的销售数量、单价、订单日期; 要求: (1)给出系统的ER图(可以用word或其它画图工具,如Visio画),要求画出所有的实体,联系,属性以及联系的类型; (2)将ER图转换为关系模型; 实验一 实验名称:数据定义(2课时) 一、实验目的

1、理解数据库模式的概念,通过使用SQL SERVER企业管理器或者My Sql建立数据库和基本表。模式为人事表、客户表、销售表、销售明细表、产品表。熟悉SQL SERVER企业管理器的使用,并将得到的表生成脚本,然后保存。 2、理解上述基本表之间的关系,建立关系表。 3、掌握修改表结构的基本方法 4、掌握索引和视图的创建方法 二、实验环境 MS SQL SERVER或者My Sql。 三、实验内容与步骤 1、建立一个数据库和五张表的表结构。 (1)/*员工人事表employee */ Create datebase sale; create table employee( emp_no char(5) Not null primary key, emp_name char(10) Not null, sex char(1) Not null,

数据库实验四-查询

华中科技大学 《数据库技术与应用》实验报告专业班级:学生姓名:学号: 实验地点:指导教师: 实验日期时间: 一、实验项目名称:数据查询 二、实验学时: 三、实验目的: 1.掌握使用Transact-SQL的SELECT语句进行基本查询的方法。 2.掌握使用SELECT语句进行条件查询的方法。 3.掌握嵌套查询的方法。 4.掌握多表查询的方法。 5.掌握SELECT语句的GROUP BY和ORDER BY子句的作业和使用方法。 四、实验工具或环境 一台装有SQL sever2008的计算机五、实验内容、步骤、代码和结果: 0. 创建studentsdb数据库及其相应表,并录入数据。 在SQL Server管理平台上,点击“新建查询”打开查询编辑器窗口,复制粘贴附件“创建数据库代码”中的代码到查询编辑器窗口,运行即可生成相关数据库和表,并有相应的数据。 1.在studentsdb数据库中,使用下列SQL语句将输出什么? (1)SELECT COUNT(*) FROM grade (2)SELECT SUBSTRING(姓名,1,2) FROM student_info (3)SELECT UPPER('kelly') (4)SELECT Replicate('kelly',3) (5)SELECT SQRT(分数) FROM grade WHERE 分数>=85

(6)SELECT 2,3,POWER(2,3) 选做 (7)SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE()) 2.在studentsdb数据库中使用SELECT语句进行基本查询。 (1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。 (2)查询学号为0002的学生的姓名和家庭住址。 select姓名,家庭住址from student_info where学号 ='0002' (3)找出所有男同学的学号和姓名。 select姓名,家庭住址from student_info where性别='男' 3.使用SELECT语句进行条件查询 (1)在grade表中查找分数在80~90分为内的学生的学号和分数。 select学号,分数from grade where分数>='80'and分数<='90' (2)在grade表中查询课程编号为0003的学生的平均分。 select AVG(分数)as平均分from grade where课程编号='0003'

数据库实验一 基本SQL2015

实验一Oracle数据库SQL 班级:姓名:学号: 任课教师:实验教师:上机时间: 【实验目的】 在给定的关系数据库管理系统Oracle环境下,通过实验学生能够: 1、Oracle环境的认识及熟悉,了解其对标准SQL的扩充。 2、掌握Oracle环境下数据定义包括数据库、基本表、视图、索引定义。 3、掌握Oracle环境下数据操纵包括数据插入、删除、修改。 4、掌握Oracle环境下数据查询及其各种变化。 【实验性质】 验证性实验 【实验学时】 4H 【实验内容】 设有一个SPJ关系型数据库,包括S,P,J,SPJ四个关系模式: S(SNO,SNAME,STATUS,CITY) P(PNO,PNAME,COLOR,WEIGHT) J(JNO,JNAME,CITY) SPJ(SNO,PNO,JNO,QTY) 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成; 零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成; 工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成; 供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,QTY 表示某供应商供应某种零件给某工程项目的数量为QTY。 其中供应商表s增加一列sqty,记录每个供应商供应零件总数量。 今有若干数据如下:

请根据以上内容完成下面题目,写出相应的SQL语句。(空位不够请自行续页) 1、创建表(定义s表:sno主码,sname非空、city缺省值为北京。定义p表:pno主码,pname非空、color只能取红、蓝、绿。定义j表:jno主码,jname非空。定义spj表:(sno,pno,jno)主码,参照sno、pno、jno外码,qty介于0—1000。) 2、插入数据 3、请用SQL语句完成下面题目的查询。 (1)求供应工程J1零件的供应商号码SNO: (2)求供应工程J1零件P1的供应商号码SNO: (3)求供应工程J1零件为红色的供应商号码SNO: (4)求没有使用天津供应商生产的红色零件的工程号JNO: 4、请用SQL语句完成下面题目的查询。 (1)找出所有供应商的姓名和所在城市。 (2)找出所有零件的名称、颜色、重量。 (3)找出使用供应商S1所供应零件的工程号码。

数据库实验题目和答案

按照如下方式重新定义四张表: 定义新的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 2008 二、需求分析 1、系统的概述 ?一个学校由很多个学院组成,每个学院有多个专业,每个专业有1个或 者多个班级。一个学生只属于1个班级,学生有姓名、学号、性别、身 份证号、入学时间等属性。 ?每个专业的每个年级都有对应的教学计划。教学计划指定了这个专业这 个年级的某门课程在那个学期上,学分、学时是多少。每个学院都设置 有1个教务秘书,这些信息都由教务秘书进行输入。每个院系的课程都 有自己的唯一编码,比如计算机系上的C语言,和电子系上的C语言, 虽然都是同一门课,但是编码是不同的。但是同一个院系中的相同的课 程,课程代码是唯一的。比如计算机学院的07计算机软件专业和计算机 学院的07计算机科学专业都有C语言课程,这两门课程的课程代码是相 同的。 ?教务秘书在每个学期的中间时刻,为下一个学期进行排课,排课的内容 根据教学计划,比如08计算机软件专业的学生,在2009-2010年第2 学期上的课程,可以通过教学计划得知要上什么课程,然后对这些课程 安排上课教师(比如陈越)、上课时间(比如星期2,第1-2节)和地点 (理工楼234),有的课程是单周上,有的双周,也有是每周都上的。 ?在每个学期期末,学生登录到网站上选择下一个学期需要上的课,选择 的时刻,可以选择是否需要教材,如果某门课程的人数选满了,则不能 给任何学生选择了。 ?学生根据选择的课程进行上课,参加考试。每个老师可以用自己的用户 名和密码登陆网站,选择这个学期自己所教的课程(一个老师可以上多 个班级的课程),输入这个班级的成绩,成绩分为期末考试成绩、期中考 试成绩、平时成绩、实验成绩以及总评成绩。这些成绩都需要进行存储。 ?为了保证安全性,老师输入的成绩并不是直接放到最终的成绩表中,而 是放在一个临时的表中,只有当教务秘书审核过后,才导入到最终的成 绩表中。

数据库原理实验报告_实验三_数据完整性与安全性控制

实验内容、步骤以及结果 1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。 (18分,每小题3分) (1) 非空约束:为出生日期添加非空约束。 非空约束:取消表S中sbirth的勾。可能需要重建表。 (2) 主键约束:将学号(sno)设置为主键,主键名为pk_sno。 设主键:单击数据库Student-->单击表-->单击S-->右击sno-->选择修改命令-->对话框中右击sno-->选择设置主键'>修改主键名为pk_sno '-->保存

(3)唯一约束:为姓名(sname)添加唯一约束(唯一键),约束名为uk_sname 。 唯一约束:单击数据库Student-->单击表--> 单击S-->右击sname-->选择修改’ 命令T右击 sname-->选择索引和键命令--> 打开索引和键框图--> 添加--> 是否唯一改为是--> 名称改为us sname '-->关闭。

(4)缺省约束:为性别(ssex)添加默认值,其值为男 设默认约束:单击数据库Student宀单击表宀单击右击sno^选择修改命令宀单击cno-->在默认值栏输入男’保存

D62.s1udent - Diagram_0* D62.sludent - dbo.S* SQLQuery5.sql - D... (D62\A^m i n (52J)* 列容 埶据类型 允祥值 Q 5TI0 Ctiar(lO) n sname nvarchar (20) a 卜:S5SX nchai ■⑵ 團 sbirtti date □ adept nv ar char (20) sPhoneNo ctiar(LQ) @] 数捐类型 允傑Mdl 值 曰表设计器 RowGuid E 标识魁 不用于复制 大小 (5) CHECK 约束:为SC 表的成绩(grade)添加CHECK 约束,约束名为ck grade ,其 检查条件为:成绩应该在0-100之间。 ffin har 妊 2 Nnrh 昙否否否二

实验报告 数据库的基本查询'

一、实验目的: 通过该实验掌握应用SQL 查询数据库的基本方法,包括单表、多表查询。 二、实验原理 数据库查询是数据库的核心操作。SQL语言提供了SELECT语句进行数据库的查询。 SELECT[ALL|DISTINCT] <目标列表达式〉[,<目标列表达式〉]... FROM<表名或视图名〉[,<表名或视图名〉]... [WHERE<条件表达式>] [GROUP BY<列名1〉[HA VING<条件表达式>]] [ORDERBY<列名2〉[ASC|DESC]] 三、实验内容和方法 实验用的数据库:用实验二建立的数据库:School 1. 投影查询 (1) 查询SC表的sno的不重复记录。 使用SQL语句:“select distinct Sno from SC”,得出结果如下图所示: (2) 改变查询结果的标题名:sno为学号,sname为姓名,ssex 为性别,sdept 为系名。 使用SQL语句:“select Sno 学号,Sname 姓名,Ssex 性别,Sdept 系名from Student”,得出结果如下图所示:

(3) 查询STUDENT表的前3条记录(top 3)。 使用SQL语句:“select top 3 * from Student”,得出结果如下图所示: 3. 选择查询 (1) 查询成绩在60-80之间的姓名、系名和成绩。 使用SQL语句:“select Sname,Sdept,Grade from Student,SC where Grade>60 and Grade<80 and Student.Sno=SC.Sno”,结果如下图所示: 若使用SQL语句:“select Sname,Sdept,Grade from Student,SC where Grade between 60 and 80 and Student.Sno=SC.Sno”,则结果如下图所示: (2) 查询信息系和计算机系的姓名和成绩。 使用SQL语句:“select Sname,Grade from Student,SC where Sdept='IS' and Student.Sno=SC.Sno or Sdept='CS' and Student.Sno=SC.Sno”,结果如下图所示:

数据库实验五题目答案

实验五 实验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;

(完整版)网络数据库实训报告(一)

网络数据库应用实训报告 日期:2016 年3月18 日班级:物联1411 一、实训目的和要求 1、掌握采用界面方式创建、修改、删除数据库; 2、掌握采用T-SQL 语句创建、修改、删除数据库; 二、实训所需仪器、设备 硬件:计算机软件:操作系统Windows7、SQLServer2008 三、实训内容 1)在管理平台中管理数据库。 (1)创建数据库“studentsdb”。 (2)查看studentsdb 数据库的属性。 (3)修改数据文件大小为2MB,指定“最大文件大小”为5MB。日志文件的大小在每次填满时自动递增5%。 (4)将studentsdb 数据库的名称更改为student_db。 2)使用T-SQL 语句管理数据库 (1)使用CREATE DATABASE 创建studb 数据库,然后通过系统存储过程sp_helpdb 查看系统中的数据库信息。 (2)使用ALTER DATABASE 修改studb 数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。

(3)为studb 数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。 (4)将studb 数据库的名称更改为my_studb。 (5)使用DROP DATABASE 删除my_studb 数据库。 四、实训步骤 (内容说明:1.大致的操作步骤;2.参数设置) 1)在管理平台中管理数据库。 (1)数据库右击→新建数据库→数据库名称“studentsdb”; (2)数据文件→初始大小→2MB (3)数据文件→点击自动增长下的→最大文件大小→限制文件大小→5MB; (4)日志文件→点击自动增长下的→文件增长→按百分比→5% (5) studentsdb右击→属性; (6) studentsdb右击→重命名→student_db; 2)使用T-SQL 语句管理数据库 命令如下: CREATE DATABASE studb on PRIMARY ( NAME='student_db', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA', size=4MB, MAXSIZE=20MB, FILEGROWTH=1 ) log on ( NAME='stusb_log2', FILENAME='C:\Program Files\Microsoft SQL

数据库查询实验报告

应用数学学院_学院专业_1__班学号 姓名___ ___教师评定 实验题目数据库的查询 一、实验目的与要求 实验目的:使学生掌握SQL Server查询分析器的使用方法,加深对SQL 和Transact-SQL语言的查询语句的理解。熟练掌握简单表的数据查询、数据排序和数据联结查询的操作方法;嵌套查询语句;熟练掌握数据查询中的分组、统计、计算和组合的操作方法。 实验要求: 1、简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等; 2、连接查询操作; 3、嵌套查询。在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS 操作符进行嵌套查询操作; 4、分组查询实验。包括分组条件表达、选择组条件的表达方法; 5、使用函数查询。包括统计函数和分组统计函数的使用方法; 6、组合查询实验; 二、实验方案 将查询需求用Transact-SQL语言表示;在SQL Server查询分析器的输入区中输入Transact-SQL查询语句;设置查询分析器的结果区为标准执行或网格执行方式;发布执行命令,并在结果区中查看结果; 三、实验结果和数据处理 1、学生选课库的各个表截图: (1)学生表

(2)课程表 (3)选课表 2、图书-读者库的各个表截图(1)图书表

(2)读者表 (3)借阅表 实验步骤: 1、简单查询: l)用Transact-SQL语句表示下列操作.在学生选课库中实现其数据查询操作.①求数学系学生的学号和姓名。 select 学号,姓名 from 学生 where 所在系='数学';

结果: ②求选修了课程的学生学号。 select distinct 学号 from 选课 结果: ③求选修A1课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。 select 学号,成绩 from 选课 where 课程号='A1' order by 成绩 desc,学号 asc 结果: ④获选修课程A1且成绩在80~90分之间的学生学号和成绩,并将成绩乘以系数0.8 输出。select 学号,成绩*0.8 from 选课 where 课程号='A1' and 成绩 between 80 and 90 结果: ⑤求数学系或计算机系姓张的学生的信息。 select * from 学生 where 所在系 in ('数学','计算机') and 姓名 like '张%'; 结果; ⑥求缺少了成绩的学生的学号和课程号。(本库中没有学生没有成绩) select 学号,课程号 from 选课 where 成绩 is null

数据库试验答案

计算机与信息学院 数据库实验报告 专业班级 学生姓名及学号 课程教学班号 任课教师 实验指导教师 实验地点 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。

数据库系统实验

实验指导书 班级:090402 姓名:郑锦坤

序言 数据库是数据管理的最新技术,是计算机科学的重要分支。通过学习重点让大家掌握数据库技术的程序设计思想和方法,学习开发管理系统的技术,并结合PB8.0以上版本和SQL SERVER 2000以上版本上机环境编程测试。 为了达到这个目的,这里安排五个实验单元。 实验报告的内容 1.题目 描述每个实验的内容是什么。 2.需求分析 用E-R图描述数据库的模式设计及每个关系模式的建立;描述数据字典及程序数据流;每个事件、函数或过程 的头和规格说明; 3.源程序清单和结果 源程序要加注释,要有测试数据及结果。

实验1:学习SQL 语句与SQL SERVER的数据库环境(4学时) 本次实验的主要目的在于学会使用SQL SERVER环境建 库的方法,学会SQL SERVER企业管理器和查询分析器的使用,通过数据库操纵环境,了解库的建立、表的建立、数据库 的查询实现方法。实验数据如下: Student SC

实验报告 1 日期: 一.SQL语句实验题目: 1.建立课程表 2.建立学生表 3.建立选课表 4.查询所有学生的详细信息

SELECT Student.SCLASS, Student.SNO,Student.SNAME, Student.SSEX, Student.SAGE , Student.SDEPT,https://www.doczj.com/doc/9511258823.html,O,SC.GRADE,https://www.doczj.com/doc/9511258823.html,AME,Course.CPNO,Course. CCREDIT FROM Course,Student,SC WHERE SC.SCLASS=Student.SCLASS AND SC.SNO=Student.SNO AND https://www.doczj.com/doc/9511258823.html,O=https://www.doczj.com/doc/9511258823.html,O 5.查询1班的学生号学及姓名 SELECT SNO,SNAME FROM Student WHERE SCLASS='1' 6.查询‘刘晨’的出生年 7.查询姓‘刘’的学生的详细情况

2016数据库原理实验指导书

信息工程学院 数据库原理实验指导书二零一六年五月

目录 实验一SQL SERVER 2005的安装与启动 (1) 实验二数据库的操作 (11) 实验三SQL SERVER2005查询编辑器 (23) 实验四SQL语言的DDL (31) 实验五SQL语言的DML初步 (34) 实验六DML的数据查询 (36) 实验七数据库综合设计 (40)

实验一SQL Server 2005的安装与启动 一、实验目的 SQL Server 2005是Mircosoft公司推出的关系型网络数据库管理系统,是一个逐步成长起来的大型数据库管理系统。 本次实验了解SQL Server 2005的安装过程,了解SQL Server 2005的启动,熟悉SQL Server 2005软件环境。学会安装SQL Server 2005。 二、实验内容 1.安装SQL Server 2005 (1)将SQL Server 2005(中文开发版)安装盘插入光驱后,SQL Server 2005安装盘将自动启动安装程序;或手动执行光盘根 目录下的Autorun.exe文件,这两种方法都可进行SQL Server 2005的安装。出现如下画面。 (2)选中“运行SQL Server Client 安装向导”进行安装,弹出【最终用户许可协议】界面。

(3)选中【我接受许可条款和条件】选项,单击【下一步】按钮,进入【安装必备组件】界面。 (4)组件安装完成后,单击【下一步】按钮,进入【欢迎使用Microsoft SQL Server 安装向导】界面。

(5)单击【下一步】按钮,进入【系统配置检查】界面。检查完毕将显示检查结果。 (6)检查如果没有错误,单击【下一步】按钮,进入【注册信息】界面。

数据库实验四:SQL数据查询

数据库实验四:S Q L数 据查询

数据库实验四:SQL数据查询 一、实验目的与要求: 1.实验目的 熟练掌握SQL SELECT语句,能运用查询语句完成各种查询。 实验内容: 在实验三和实验四的基础上完成查询操作,将题目中的x, y等具体化: 1、一般简单查询 (1)不带条件的查询指定字段(考虑去掉和不去掉重复值两种情况)。 (2)查询某个表中的所有记录。 (3)使用单个条件的简单查询。 (4)使用多个条件(AND关系)的查询。 (5)使用多个条件(OR关系)的查询。 (6)使用多个条件(混合AND和OR关系)的查询。 (7)使用带NOT运算的查询。 (8)使用BETWEEN···AND···的查询。 (9)使用NOT···BETWEEN···AND···的查询。 (10)使用LIKE运算符的字符串匹配查询。 (11)使用LIKE运算符的模板匹配查询。 (12)查询空值和非空值的查询 (13)结果要求排序的查询 (14)查询结果按多列排序,并分别要求升序和降序的查询。 (15)使用TOP显示前若干记录的查询。 (16)使用TOP显示前若干记录的查询,如果有满足条件的并列记录一并显示。 2、连接查询 (17)两个关系的连接查询。 (18)带其他查询条件的两个关系的连接查询。 (19)多个关系(三个以上)的连接查询。 (20)两个关系的广义笛卡尔积运算结果。 (21)根据两个关系的广义笛卡尔积运算结果得到两个关系进行自然连接的结果。 (22)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段。 (23)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中列出所有教师信息(即包括不 是任何课程责任教师的教师信息)。 (24)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中能够反映目前没有确定责任教 师的课程信息。 (25)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中既能够反映目前不是责任教师

同济大学数据库实验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/9511258823.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/9511258823.html,um =https://www.doczj.com/doc/9511258823.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

数据库系统原理及应用实验全套

数据库系统原理及应用实验指导书 (本科) 福建工程学院计算机与信息科学系计算机软件与理论教研室 浅诺制作 2012年5月

目录 实验一数据定义语言 (1) 实验二 SQL Sever中的单表查询 (5) 实验三 SQL Serve中的连接查询 (8) 实验四 SQL Serve的数据更新、视图 (12) 实验五数据控制(完整性与安全性) (17) 实验六语法元素与流程控制 (22) 实验七存储过程与用户自定义函数 (28) 实验八触发器 (34)

实验一数据定义语言 一、实验目的 1.熟悉SQL Server2000/2005查询分析器。 2.掌握SQL语言的DDL语言,在SQL Server2000/2005环境下采用Transact-SQL实现表 的定义、删除与修改,掌握索引的建立与删除方法。 3.掌握SQL Server2000/2005实现完整性的六种约束。 二、实验内容 1.启动SQL Server2000/2005查询分析器,并连接服务器。 2.创建数据库: (请先在D盘下创建DB文件夹) 1)在SQL Server2000中建立一个StuDB数据库: 有一个数据文件:逻辑名为StuData,文件名为“d:\db\”,文件初始大小为5MB,文件的最大大小不受限制,文件的增长率为2MB; 有一个日志文件,逻辑名为StuLog,文件名为“d:\db\”,文件初始大小为5MB,文件的最大大小为10MB,文件的增长率为10%

2)刷新管理器查看是否创建成功,右击StuDB查看它的属性。 3.设置StuDB为当前数据库。 4.在StuDB数据库中作如下操作: 设有如下关系表S: S(CLASS,SNO, NAME, SEX, AGE), 其中:CLASS为班号,char(5) ;SNO为座号,char(2);NAME为姓名,char(10),设姓名的取值唯一;SEX为性别,char(2) ;AGE为年龄,int,表中主码为班号+座号。 写出实现下列功能的SQL语句。 (1)创建表S; (2)刷新管理器查看表是否创建成功; (3)右击表S插入3个记录:95031班25号李明,男性,21岁; 95101班10号王丽,女性,20岁; 95031班座号为30,名为郑和的学生记录;

数据库系统实验指导2016

数据库系统实验指导 【实验设备及软件环境】 1.微型计算机1台;

2.Windows 2000/XP操作系统,SQL Server2000数据库工具开发版 实验一 SQL Server 数据库基本操作 1、使用企业管理器管理数据库 【实验目的】 了解Microsoft SQL Server 2000的工具程序,通过企业管理器掌握数据库设置、数据操作、查询设计等基本操作。 【实验过程】 一、认识Microsoft SQL Server的工具程序 在Windows XP的[开始]->[程序]->[Microsoft SQL Server]的菜单中列出了MS SQL Server 2000的主要程序,如图1-1所示。 图1-1 其中查询分析器和企业管理器是SQL Server的两大主要工具。查询分析器主要用于创建和执行SQL语句,以完成数据库的查询和管理工作。企业管理器可以完成SQL Server的管理操作,如数据库的创建和管理、表的创建和管理、数据库安全管理等。 二、启动Microsoft SQL Server服务 SQL Server安装完成后,服务管理器会在开机时自动运行,并可在Windows任务栏中看到服务管理器的指示器图标。 如果Windows的任务栏中没有图标,可选择[开始]->[程序]->[Microsoft SQL Server]->[服 务管理器]启动服务管理器。服务管理器列出了可管理的服务器和服务列表,并显示了当前服务的状态,如图1-2所示。 图1-2

、和按钮分别用于开始/继续、暂停或停止服务,点击按钮启动SQL Server服务。 三、认识企业管理器 选择[开始]->[程序]->[Microsoft SQL Server]->[企业管理器]菜单命令,打开SQL Server的企业管理器。企业管理器与Windows资源管理器窗口相似,分为左右两部分,左边为目录树窗口,右边为内容窗口,如图1-3。目录树窗口以树状结构显示了SQL Server中的各个项目,每个项目作为一个节点。 图1-3 四、用企业管理器管理数据库 1. 创建数据库 在SQL Server 2000中,数据库保存在独立的文件中。一个数据库通常有两个文件,一个用于存放数据,称为数据文件,另一个用于存放数据库的操作记录,称为事务日志文件。创建数据库就是根据需要指定数据库名称、数据库文件名称、数据库文件大小等信息。下面使用创建数据库向导来试建一个“成绩管理”数据库,具体操作如下: ⑴.打开企业管理器,展开目录树窗口中的[Microsoft SQL Servers] ->[SQL Server组], 选中SQL Server服务器,选择[工具]->[向导]菜单命令。 ⑵.在打开的“选择向导”对话框列表中双击“数据库”,展开节点,显示数据库操作向导, 单击“创建数据库向导”。 ⑶.单击确定按钮,打开创建数据库向导的欢迎对话框。 ⑷.单击下一步按钮,打开命名数据库对话框,在对话框的“数据库名称”文本框中输入 “成绩管理”,数据库文件位置使用默认值。 ⑸.单击下一步,打开命名数据库文件对话框,将数据文件的初始大小修改为2,即2MB。 ⑹.单击下一步,打开定义数据文件增长对话框,选中“文件增长的最大值[MB]”,并将其 后的文本框中的数字修改为4,即将数据文件的最大值设置为4MB。 ⑺.单击下一步,打开命名事务日志文件对话框,将文件初始大小修改为2MB。 ⑻.单击下一步,打开定义日志增长对话框,选中“事务文件不自动增长”,不允许事务文 件自动增长。 ⑼.单击下一步,打开完成信息对话框。 ⑽.单击完成,执行创建数据库操作。 ⑾.单击确定,提示是否为数据库创建维护计划,选择否暂时不创建维护计划。至此,完成数据库创建操作。

实验三 数据库的查询和视图

实验三数据库的查询和视图 T4.1 数据库的查询 1、目的和要求 (1)掌握SELECT语句的基本语法。 (2)掌握子查询的表示。 (3)掌握连接查询的表示。 (4)掌握SELECT语句的GROUP BY子句的作用和使用方法。 (5)掌握SELECT语句的ORDER BY子句的作用和使用方法。 2、实验准备 (1)了解SELECT语句的基本语法格式。 (2)了解SELECT语句的执行方法。 (3)了解子查询的表示方法。 (4)了解连接查询的表示。 (5)了解SELECT语句的GROUP BY子句的作用和使用方法。 (6)了解SELECT语句的ORDER BY子句的作用。 3、实验内容 (1)SELECT语句的基本使用。 ①对于实验二给出的数据库表结构,查询每个雇员的所有数据。 新建一个查询,在“查询分析器”窗口中输入如下语句并执行。 单击右键空白处,选择执行,在下方会出现所有结果。 【思考与练习】 用SELECT语句查询Departments表和Salary表中所有信息。

新建一个查询,在“查询分析器”窗口中输入如下语句并执行。 单击右键空白处,选择执行,在下方会出现所有结果。 在“消息”中会发现总共有60行受影响。 ② 用SECECT语句查询Employees表中每个雇员的地址和电话号码。 新建一个查询,在“查询分析器”窗口中输入如下代码并执行。 单击右键空白处,选择执行,在下方会出现所有结果。 在“消息”中会发现有12行记录受影响 【思考与练习】 A、用SELECT语句查询Departments表和Salary表的一列或若干行。

利用SELECT语句查询Departments表和Salary表中EmployeeID为000001的记录,在“查询分析器”中输入以下代码。 执行后在下方会出现所有EmployeeID=000001的记录 B、查询Employees表中部门号和性别,要求使用DISTINCT消除重复行。 对表只选择某些行时,可能会出现重复行。此时就需要使用DISTINCT关键字消除结果中的重复行。此时使用DISTINCT消除在Employees中查询到的部门号和性别的重复行,具体代码如下。 上面代码分别是使用了DISTINCT和没有使用DISTINCT关键字,下面就是两种的结果的对比。 可以从上面的执行结果中看出使用了DISTINCT关键字,结果集中的重复行就被消除了。 ③查询EmployeeID为000001的雇员的地址和电话。

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