数据库 第二次实验

实验二 SQL Sever中的单表查询

一、实验目的:

1.掌握SQL语言的DML子语言,在SQL Server环境下采用Transact-SQL的SELECT语句熟练掌握各种单表查询方法。

二、实验内容:

(一) 附加上次实验备份的StuDB数据库和SPJ数据库,或者将保存好的脚本重新运行。

(二) 按照StuDB学生课程数据库及数据实现以下查询:

1.查询所有课程的课号,课程名。

2.查询计算机系年龄不到21岁的所有男生的姓名和出生年份。

3.查询已被学生所选课程的课程号。

4.查询所有有成绩的学生学号和课程号,并为各列分别取相应的中文别名。

(三) 按照SPJ数据库及数据实现以下查询:

1.查询地点在‘北京’、‘上海’的供应商代码和供应商名字。

2.查询供应商名中包含‘方’这个汉字的供应商信息。

3.查询零件名以‘刀’字结尾,包含三个汉字的零件信息。

4.查询使用了供应商S1所供应零件的工程项目数。

5.查询各个供应商所供应的零件的总数,要求对查询结果降序显示。

6.查询供应了3个以上项目的供应商代码和供应的项目总数。

三、实验要求:

1.根据实验内容认真写好实验报告,记录每个步骤正确的Transact-SQL命令。

2.无须截屏记录正确的查询结果。但要求记录实验过程中发生的有学习意义的错误及错误信息。

3.写好实验总结


create database Studata
ON(
	NAME=Studat,
	FILENAME='D:\project\Studat.mdf',
	SIZE=5mb,
	FILEGROWTH=2MB
),
(
	NAME='Stulog',
	FILENAME='D:\project\Stulog.ldf',
	SIZE=5MB,
	MAXSIZE=10MB,
	FILEGROWTH=10MB
)
GO

use Studata;

create table s(
	class char(5),
	Sno char(2),
	name char(10)unique,
	Sex char(2),
	Age INT,
	PRIMARY KEY(class,Sno),
)

insert into s(class,Sno,name,Sex,Age)
			values('95031','25','李明','男',21)

insert into s(class,Sno,name,Sex,Age)
			values('95101','10','王丽','女',20)

insert into s(class,Sno,name)
			values('95031','30','郑和')

alter table s
alter column Age SMALLINT;

alter table s
ADD comedate datetime ;

alter table s
Drop CONSTRAINT PK__s__7C8480AE;

create clustered INDEX inxage
ON s(age desc)

drop index s.inxage;

drop table s;



create table Student(
	Sno char(9)PRIMARY KEY,
	Sname char(20) unique,
	Ssex char(2),
	Sage SMALLINT,
	Sdept char(20)
);

create table Course(
	Cno char(4)PRIMARY KEY,
	Cname char(40) NOT NUll,
	Cpno char(4),
	Ccredit SMALLINT,
	FOREIGN KEY(Cpno) REFERENCES Course(Cno)
);

create table SC
(
	Sno char(9),
	Cno char(4),
	Grade SMALLINT,
	PRIMARY KEY(Sno,Cno),
	FOREIGN KEY (Sno) REFERENCES Student(Sno),
	FOREIGN KEY (Cno) REFERENCES Course(Cno),
);

/*Student表*/
insert into Student(Sno,Sname,Ssex,Sage,Sdept)
			Values('201215121','李勇','男',20,'CS')
			
insert into Student(Sno,Sname,Ssex,Sage,Sdept)
			Values('201215122','刘晨','女',19,'CS')

insert into Student(Sno,Sname,Ssex,Sage,Sdept)
			Values('201215123','王敏','女',18,'MA')

insert into Student(Sno,Sname,Ssex,Sage,Sdept)
			Values('201215125','张立','男',19,'IS')

/* Course表*/	
insert into Course(Cno,Cname,Ccredit)
			Values('6','数据处理',2)

insert into Course(Cno,Cname,Ccredit)
			Values('2','数学',2)

insert into Course(Cno,Cname,Cpno,Ccredit)
			Values('7','PASCAL语言','6',4)

insert into Course(Cno,Cname,Cpno,Ccredit)
			Values('5','数据结构','7',4)

insert into Course(Cno,Cname,Cpno,Ccredit)
			Values('4','操作系统','6',3)

insert into Course(Cno,Cname,Cpno,Ccredit)
			Values('1','数据库','5',4)

insert into Course(Cno,Cname,Cpno,Ccredit)
			Values('3','信息系统','1',4)	
			
/*SC表*/
insert into SC(Sno,Cno,Grade)
			Values('201215121','1',92)

insert into SC(Sno,Cno,Grade)
			Values('201215121','2',85)

insert into SC(Sno,Cno,Grade)
			Values('201215121','3',88)

insert into SC(Sno,Cno,Grade)
			Values('201215122','2',90)

insert into SC(Sno,Cno,Grade)
			Values('201215122','3',80)

select * from SC
select * from Course

/*1.查询所有课程的课号,课程名。*/
select Cno, Cname from Course

/*2.查询计算机系年龄不到21岁的所有男生的姓名和出生年份*/
select Sname,year(getdate())- Sage Birth from Student where Sage<21 and Ssex='男' and Sdept ='cs'

/*3.查询已被学生所选课程的课程号*/
select DISTINCT Cno from Sc,Student where SC.Sno = Student.Sno

/*4.查询所有有成绩的学生学号和课程号,并为各列分别取相应的中文别名。*/
select Sno '学号' , Cno '课程号'  from SC where Grade>=0
create database SPJ
ON(
	NAME=SPJdata,
	FILENAME='D:\project\SPJdata.mdf',
	SIZE=5mb,
	FILEGROWTH=2MB
),
(
	NAME='SPJlog',
	FILENAME='D:\project\SPJlog.ldf',
	SIZE=5MB,
	MAXSIZE=10MB,
	FILEGROWTH=10MB
)
GO

use SPJ;
create table S
(
	SNO char(4) PRIMARY KEY,
	SNAME char(10),
	STATUS char(10),
	CITY char(5),
)

create table P
(
	PNO char(4) PRIMARY KEY,
	PNAME char(10) NOT NULL,
	COLOR char(10),
	WEIGHT SMALLINT,
)

create table J
(
	JNO char(4) PRIMARY KEY,
	JNAME char(10),
	CITY char(10),
	
)

create table SPJ(
	SNO char(4),
	PNO char(4),
	JNO char(4),
	QTY INT,
	FOREIGN KEY (SNO) REFERENCES S(SNO),
	FOREIGN KEY (PNO) REFERENCES P(PNO),
	FOREIGN KEY (JNO) REFERENCES J(JNO),
)
insert into S(SNO,SNAME,STATUS,CITY)
			Values('S1','精益','20','天津')

insert into S(SNO,SNAME,STATUS,CITY)
			Values('S2','盛锡','10','北京')

insert into S(SNO,SNAME,STATUS,CITY)
			Values('S3','东方红','30','北京')

insert into S(SNO,SNAME,STATUS,CITY)
			Values('S4','丰泰盛','20','天津')

insert into S(SNO,SNAME,STATUS,CITY)
			Values('S5','为民','30','上海')


insert into P(PNO,PNAME,COLOR,WEIGHT)
			Values('P1','螺母','红',12)

insert into P(PNO,PNAME,COLOR,WEIGHT)
			Values('P2','螺栓','绿',17)

insert into P(PNO,PNAME,COLOR,WEIGHT)
			Values('P3','螺丝刀','蓝',14)
			
insert into P(PNO,PNAME,COLOR,WEIGHT)
			Values('P4','螺丝刀','红',14)
			
insert into P(PNO,PNAME,COLOR,WEIGHT)
			Values('P5','凸轮','蓝',40)

insert into P(PNO,PNAME,COLOR,WEIGHT)
			Values('P6','齿轮','红',30)


insert into J(JNO,JNAME,CITY)
			Values('J1','三建','北京')
			
insert into J(JNO,JNAME,CITY)
			Values('J2','一汽','长春')
			
insert into J(JNO,JNAME,CITY)
			Values('J3','弹簧厂','天津')
			
insert into J(JNO,JNAME,CITY)
			Values('J4','造船厂','天津')
			
insert into J(JNO,JNAME,CITY)
			Values('J5','机车厂','唐山')
			
insert into J(JNO,JNAME,CITY)
			Values('J6','无线电厂','常州')
			
insert into J(JNO,JNAME,CITY)
			Values('J7','半导体厂','南京')

insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S1','P1','J1',200)

insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S1','P1','J3',100)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S1','P1','J4',700)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S1','P2','J2',100)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S2','P3','J1',400)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S2','P3','J2',200)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S2','P3','J4',500)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S2','P3','J5',400)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S2','P5','J1',400)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S2','P5','J2',100)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S3','P1','J1',200)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S3','P3','J1',200)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S4','P5','J1',100)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S4','P6','J3',300)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S4','P6','J4',200)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S5','P2','J4',100)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S5','P3','J1',200)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S5','P6','J2',200)
			
insert into SPJ(SNO,PNO,JNO,QTY)
			Values('S5','P6','J4',500)

select * from SPJ
select * from p
select * from S

/*1.查询地点在‘北京’、‘上海’的供应商代码和供应商名字。*/
select SNO,SNAME from S where CITY = '北京' or CITY = '上海'

/*2.查询供应商名中包含‘方’这个汉字的供应商信息。*/
select * from S where S.SNAME like '%方%';

/*3.查询零件名以‘刀’字结尾,包含三个汉字的零件信息。*/
select * from P where P.PNAME like '__刀';

/*4.查询使用了供应商S1所供应零件的工程项目数。*/
select count(JNO) from SPJ where SPJ.SNO='s1'

/*5.查询各个供应商所供应的零件的总数,要求对查询结果降序显示。*/
select SUM(QTY) from SPJ GROUP BY SPJ.SNO order by SUM(QTY) desc

/*6.查询供应了3个以上项目的供应商代码和供应的项目总数。*/
Select sno,count(DISTINCT jno) from SPJ Group by Sno having count(DISTINCT jno)>3


猜你喜欢

转载自blog.csdn.net/qq_37804064/article/details/79805675