当前位置:文档之家› 数据库上机实验报告

数据库上机实验报告

数据库实验报告(所有实验)院系:信息科学与工程学院专业:网络工程电子商务班级:姓名:学号:指导老师:年月日一、实验目的熟练掌握SQL语句的插入、修改、删除、查询等相关语法。

能够使用Microsoft SQL Server和MySQL软件进行相关的数据库操作。

二、实验内容1数据库的创建和使用;2表的创建和使用;3数据的插入、删除和修改;4数据的查询;5.视图的创建和使用。

实验一、创建学生成绩管理数据库在学生成绩管理数据库中,包括基本的三个关系:student,course,sc 。

(1)student(sno,sname,ssex,sage,sdept),表示学号,姓名,性别,年龄,所在系。

主键学号,姓名唯一,系默认cs。

(2)Course (cno,cname,cpno,ccredit),表示课程号,课程名,先行课程号,学分。

主键课程号(3)SC (sno,cno,grade),表示学号,课程号,成绩。

外键,学号和课程号。

创建该数据库代码及其最后结果图如下:create table student(sno char(20) primary key,sname char(10) unique,ssex char(2),sage smallint,sdept char(12) default'cs')create table course(cno char(10) primary key,cname char(20),cpno char(10),ccredit char(6))create table sc(sno char(20),cno char(10),grade smallint,primary key(sno,cno),foreign key(sno) references student(sno), foreign key(cno) references course(cno))实验二、在实验一的结果上进行各种操作练习及其代码一修改表结构,对学生表增加,电话号码一列,删除年龄一列。

alter table studentadd pnumber char(22)alter table studentdrop column sage二简单查询例1.查询全体学生详细记录select *from student例2.查询信息系所有男生的学号、姓名、出生年份select sno,sname,sagefrom studentwhere ssex='男'例3.查询选修过课的学生的学号select snofrom sc例4. 查询年龄在25-30之间的学生姓名及性别。

select sname,ssexfrom studentwhere sage between 25 and 30例5. 查询姓“欧阳”的学生。

select snamefrom studentwhere sname like '欧阳%'例6. 查询信息系IS,数学系MA和计算机系CS的学生。

select snamefrom studentwhere sdept='is' or sdept='ma' or sdept='cs'例7 查询所有学生的成绩及姓名select grade,snamefrom student,scwhere sc.sno=student.sno例8 查询‘95001‘学生的所选的课程,成绩和专业select cname,grade,sdeptfrom student,sc,coursewhere student.sno=sc.sno and o=o and student.sno='95001'实验三、四关系模式如下:数据内容如下:创建数据库并使用数据库创建表EMPLOYEE并插入数据创建表DEPARTMENT并插入数据创建表PROJECT并插入数据创建表WORKS_ON并插入数据创建表DEPT_LOACTION并插入数据创建表DEPENDENT并插入数据查询操作实验五、附加MSSQL2000的示例数据库pubs数据库1.使用演示脚本创建表、插入数据,查找以‘x%’开头的数据。

--建表create table test(col varchar(10))--插入数据insert into test values('x_yz')insert into test values('[xyz]')insert into test values('x%yz')insert into test values('xyz')练习及其代码如下:--练习1--找出pubs数据库titles表中计算机类图书中价格最高的图书的价格。

USE pubsSELECT max(price) FROM titleswhere type='popular_comp'--练习2--查询titles表中有几类图书。

USE pubsSELECT count(distinct type) FROM titles--练习3--按照州进行分类,查找每个州有几名作者。

USE pubsSELECT state, count(*) FROM authorsgroup by stateorder by 1--练习4--要求按照出版商id进行分类,查找每个出版商的书到目前为止的销售额总和(ytd_sales)。

USE pubsSELECT pub_id, sum(ytd_sales) FROM titlesgroup by pub_idorder by 1--练习5--在pubs数据库的titles表中,找出平均价格大于18美元的书的种类。

USE pubsSELECT pub_id,avg(price) '平均价格' FROM titlesGROUP BY pub_idHAVING avg(price) > 18-练习6 --在pubs数据库的titles表中,找出最高价大于20美元的书的种类。

USE pubsSELECT type,max(price) '平均价格' FROM titlesGROUP BY typeHAVING max(price) > 20--练习7 -- 找出title_id和pub_name的对应关系。

Use pubsSelect titles.title_id, publishers.pub_nameFrom titles JOIN publishersON titles.pub_id=publishers.pub_id--练习8 --找出title_id, title和pub_name的对应关系。

Use pubsSelect titles.title_id, titles.title,publishers.pub_nameFrom titles JOIN publishersON titles.pub_id=publishers.pub_id--练习9 --查询每个作者的编号,姓名,所出的书的编号,并对结果排序。

Use pubsSelect authors.au_id,authors.au_fname + '.' + authors.au_lname 'name',titleauthor.title_idFrom authors JOIN titleauthorON authors.au_id=titleauthor.au_idorder by authors.au_id10. 从authors表中选择state,city列,从publisher表中选择state,city列,并把两个查询的结果合并为一个结果集,并对结果集按city列、state列进行排序。

use pubsselect state,city from publishersunionselect state,city from authorsorder by 1,211. 对上面的查询语句作修改,保留所有重复的记录。

Selectauthors.city,authors.state,publishers.city,publishers.state from publishers,authors12.显示所有来自CA州的作家的全部作品和作家代号。

(使用IN,和连接两种方法)use pubsselect title_id,au_idfrom titleauthorwhere au_id in( select au_id from authors where state = 'CA')order by title_iduse pubsselect t.title_id,t.au_idfrom titleauthor t join authors a on t.au_id = a.au_idwhere a.state = 'CA'order by title_id13.查找由位于以字母B 开头的城市中的任一出版商出版的书名:(使用exists 和in两种方法)USE pubsSELECT title FROM titlesWHERE EXISTS(SELECT *FROM publishersWHERE pub_id = titles.pub_id AND city LIKE 'B%')USE pubsSELECT title FROM titlesWHERE pub_id IN (SELECT pub_id FROM publishers WHERE city LIKE 'B%')实验六、修改数据练习一用sql命令插入数据(1)创建一个表STU,有三列:id int,name varchar(10),class_id char;要求id列为自动增长,class_id列具有默认值‘0801’。

create table stu(id int identity(1,1),name varchar(10),class_id char(10) default('0801'))(2)并为此表插入数据:‘zhj’,'0801'‘Wxm’,'0801'‘Mbb’,'0801'‘Wd’,'0802'insert into stu(name,class_id)values('zhj','0801')insert into stu(name,class_id)values('Wxm','0801')insert into stu(name,class_id)values('Mbb','0801')insert into stu(name,class_id)values('Wd','0802')二:使用insert …select语句,建立一个新表:CA_author,这个表只包含家在CA州的作者的au_id, name(包括fname和lname), phone, address。

相关主题