数据库练习题目

1,写出创建如下三张表的SQL语句。

“项目”表结构: 

                项目号:普通编码定长字符类型,长度为10,主键。

                项目名:统一编码可变长字符类型,长度为10,非空。

                费用:整型,默认值100.

///项目表建表语句
create table ProgramTable
(    
    pID char(10) primary key,
    pName nchar(10) not null,
    price int default 100
)

“会员”表结构:

                会员号:普通编码定长字符类型,长度为18,主键。

                会员号:统一编码可变长字符类型,长度为10,非空。

                性别:统一编码定长字符类型,长度为1,取值为“男”和“女”。

                联系电话:普通编码定长字符类型,长度为11.

///会员表建表语句
create table TableVIP
(    
    vipID char(18) primary key,
    vipName nvarchar(10) not null,
    vipSex nchar(1) check vipSex in('男','女'),
    vipTel char(11)
)

“健身”表结构:

                项目号:普通编码定长字符类型,长度为10,引用“项目”表的外键。

                会员号:普通编码定长字符类型,长度为18,引用“会员”表的外键。

                健身日期:日期型。

                健身时长:整型,取值大于等于1.(注:以小时为单位)

                主键:(项目号,会员号,健身日期)

///健身表建表语句
create table TableExercise
(    
    programID char(10) references TableProgram,
    vipID char(18) references TableVip,
    exerciseDate datetime,
    exerciseTime int ,
    check( exerciseTime >= 1)
    primary key(programID ,vipID ,exerciseDate)
)

2,根据建立的表,写出操作的SQL语句。

(1)统计每个会员的总健身时长

select vipID,
       vipName,
       
       (select SUM(exerciseTime) 
        from TableExcercise b 
        inner join ProgramTable c
                on b.programID = c.pID
        where a.vipID = b.vipID) '会员总时长'
from TableVIP a

(2)查询所有姓“张”的会员的健身情况,列出会员名,健身日期,和健身时长

select vipName,
        (select exerciseDate ,exerciseTime
         from TableExcercise as b
         where a.vipID = b.vipID
        )     
from TableVIP as a
where vipName in '张%'

(3)将价格超过500元的项目费用减低100

update programTable  set price = price-100 where price>500

(4)在项目表中插入一新项目,项目号:X100,项目名:跑步,费用:200

insert into programTable values ('X100','跑步','200')

3,根据创建的表,写出满足下面要求的视图的SQL语句:

查询2019年乒乓球项目的使用情况,列出会员名,健身日期,健身时长。

CREATE VIEW ViewTest
as
SELECT vipName,exerciseDate,exerciseTime FROM TableVIP a,TableExercise b ,ProgramTable c 
WHERE b.vipID=a.vipID AND b.pID = c.pID AND c.pName='乒乓球' AND year(b.exerciseTime)=2019

Guess you like

Origin blog.csdn.net/weixin_40165004/article/details/120795928