数据库实验NetMusicShop(二)

实验内容

       0、准备工作

       0.1、设置Users表的UserPassword列不能为空

      

        

       0.2、建立歌曲表Songs和收藏表Collections

        

我们已经有User表、Album表、Song表、Collections表,E-R图如下


      将本次用的实验用数据脚本运行,插入数据

        

1、简单数据查询

(1)用中文标题显示所有专辑的专辑名称、发行公司、发行时间、专辑类别和专辑歌手信息,并按发行时间的降序排列。

 

(2)查找专辑名称中包含“歌”且会员价格低于80元的专辑,显示其全部信息。

 

(3)查找收藏歌曲在2首以上的用户及其收藏的歌曲数。

 

(4)显示各公司发行的专辑最低和最高的市场价格。

 

(5)查找所包含的歌曲数大于等于10首的专辑,显示专辑名和所包含的歌曲数。

代码:

CREATE TABLEUsers(

UserName         varchar(20),

UserPassword     varchar(6),

UserSex             char(2),

UserRealName     varchar(20),

UserAgeRange  char(8),

UserAddress        varchar(256),

UserPostCode     char(6),

UserPhone       varchar(32),

UserEmail       varchar(50),

UserRegisterTime smalldatetime,

UserAdvancePayment numeric(8,2)

);

 

create tableAlbum(

AlbumID            tinyint,

AlbumName          varchar(64) not null,

AlbumIssueCompany  varchar(64),

AlbumIssueDate     smalldatetime,

AlbumType          tinyint,

AlbumIntroduce     varchar(4096),

AlbumImageUrl      varchar(200),                      

AlbumSinger        varchar(32) ,

AlbumLanguage      varchar(10),

AlbumMarketPrice   numeric(6,2),

AlbumMemberPrice   numeric(6,2),

AlbumIsRecommend   bit

);

 

alter tableUsers add UserUpdateTime datetime;

 

alter tableUsers alter columnUserSex INT;

 

alter tableUsers DROP COLUMNUserUpdateTime;

 

CREATE UNIQUEINDEX User_Name_Index ONUsers(UserName);

 

drop tableUsers;

 

insert intoUsers values

('ws',

'123',

'',

'王珊',

'21-30',

'北京海淀区中关村',

'100098',

'18611983575',

'[email protected]',

null,

null

);

 

update Users set UserPassword=111 where UserName='ws' ;

 

delete fromUsers where UserName='ws';

 

CREATE TABLESongs (

SongID tinyint identity PRIMARY KEY,

SongNumber       tinyint,

AlbumID        tinyint,

SongTitle       varchar(256) NOT NULL,

SongDuration  char(8),

SongContent      varchar(4096),

SongUploadDate    smalldatetime ,

SongUrl             varchar(200),

SongFormat       varchar(10),

SongLanguage     varchar(10),

SongType         tinyint,

SongSinger      varchar(32),    

SongIsRecommend   bit

);

 

CREATE TABLECollections(

CollectionID tinyintidentity PRIMARYKEY,

SongID          tinyint,

UserName        varchar(20),

CollectionDate    smalldatetime

);

--()用中文标题显示所有专辑的专辑名称、发行公司、发行时间、专辑类别和专辑歌手信息,

--并按发行时间的降序排列。

SELECT AlbumName,AlbumIssueCompany,AlbumIssueDate,AlbumType,AlbumSinger

FROM Album ORDERBY AlbumIssueDate;

--()查找专辑名称中包含且会员价格低于元的专辑,显示其全部信息。

SELECT*FROM Album WHERE AlbumName LIKE '%%' ANDAlbumMemberPrice<80;

--()查找收藏歌曲在首以上的用户及其收藏的歌曲数。

SELECT UserName,COUNT(DISTINCTCollectionID)

FROM Collections GROUPBY UserName HAVINGCOUNT(DISTINCT CollectionID)>2;

--()显示各公司发行的专辑最低和最高的市场价格。

SELECT MIN(AlbumMarketPrice),MAX(AlbumMarketPrice),AlbumIssueCompany

FROM Album GROUPBY AlbumIssueCompany;

--()查找所包含的歌曲数大于等于首的专辑,显示专辑名和所包含的歌曲数。

SELECT AlbumName,COUNT(SongID) FROM Album,Songs

WHERE Album.AlbumID=Songs.AlbumID GROUP BY Album.AlbumName HAVING COUNT(SongID)>=10;

猜你喜欢

转载自blog.csdn.net/u012681167/article/details/49467039