mysql入门1:建表、插入、单表查询练习题1

mysql入门1:建表、插入、单表查询练习题1

1.创建表

create table TSB

 (
zbh char(10) primary key ,
flh char(10) not null,
sm varchar(30) not null,
zz varchar(30) not null,
cbdw varchar(50) not null,
dj numeric(3,3) not null


);

create table DZB
(
jszh char(10)  unique primary key,
dw varchar(20) not null,
xm varchar(20) not null,
xb char(10) not null,
zc varchar(20) not null,
dz varchar(50) not null
);


create table JYB
(
jszh char(10) ,
foreign key(jszh) references dzb(jszh),
zbh char(10),
foreign key(zbh) references tsb(zbh),
jsrq timestamp(8) not null

);

注意:外键语法---foreign key(从表字段) references 主表名(从表字段)

2.插入数据

insert into TSB(zbh,flh,sm,zz,cbdw,dj)
    values('445501','TP3/12','数据库导论','王强','科学出版社','17.90'),/*????怎么重新输入相同的内容,只改变一个记录????*/
        ('445502','TP3/12','数据库导论','王强','科学出版社','17.90'),
        ('445503','TP3/12','数据库导论','王强','科学出版社','17.90'),
        ('332211','TP5/10','计算机基础','李伟','高等教育出版社','18.00'),
        ('112266','TP3/12','FoxBASE','张三','电子工业出版社','23.60'),

        ('665544','TS7/21','高等数学','刘明','高等教育出版社','20.00'),
        ('114455','TR9/12','线性代数','孙业','北京大学出版社','20.80'),
        ('113388','TR7/90','大学英语','胡玲','清华大学出版社','12.50'),
        ('446601','TP4/13','数据库基础','马凌云','人民邮电出版社','22.50'),
        ('446602','TP4/13','数据库基础','马凌云','人民邮电出版社','22.50'),

        ('446603','TP4/13','数据库基础','马凌云','人民邮电出版社','22.50'),
        ('449901','TP4/14','FoxPro大全','周虹','科学出版社','32.70'),
        ('449902','TP4/14','FoxPro大全','周虹','科学出版社','32.70'),
        ('118801','TP4/15','计算机网络','黄力钧','高等教育出版社','21.80'),
        ('118802','TP4/15','计算机网络','黄立钧','高等教育出版社','21.80');
insert into  DZB(jszh,dw,xm,xb,zc,dz)
    values ('111','信息系','王维利','女','教授','1号楼424'),
        ('112','财会系','李立','男','副教授','2号楼316'),
        ('113','经济系','张三','男','教授','3号楼105'),
        ('114','信息系','周华发','男','教授','1号楼316'),
        ('115','信息系','赵正义','男','教授','1号楼224'),

        ('116','信息系','李明','男','教授','1号楼318'),
        ('117','计算机系','李晓峰','男','教授','1号楼214'),
        ('118','计算机系','徐鹏飞','男','教授','1号楼216'),
        ('119','计算机系','刘大龙','男','教授','1号楼318'),
        ('120','国际贸易系','李雪','女','教授','4号楼506'),

        ('121','国际贸易系','李爽','女','教授','4号楼510'),
        ('122','国际贸易系','王春','女','教授','4号楼512'),
        ('123','财会系','沈晓霞','女','教授','2号楼202'),
        ('124','财会系','朱海','男','教授','2号楼210'),
        ('125','财会系','马英明','男','教授','2号楼212');
insert into JYB(jszh,zbh,jsrq)
    values('112','112266','19970314'),
        ('112','445501','19970319'),/*此表因为没有主键存在可以重复录入*/
        ('125','332211','19970212'),
        ('111','445503','19970821'),
        ('114','665544','19971021'),
        ('120','114455','19971102'),

        ('120','118801','19971018'),
        ('119','446603','19971212'),
        ('112','449901','19971023'),
        ('115','449902','19970821'),
        ('118','118801','19970910');


3.单表查询

SQL完成如下查询:

1)        找出姓李的读者姓名和所在单位。

2)        列出图书库中所有藏书的书名。

3)        查找高等教育出版社的所有图书及单价,结果按单价降序排序。

4)      查找价格介于10元和20元之间的图书种类,结果按出版单位和单价升序排序。

5)        查找书名以计算机打头的所有图书和作者。

答案:

select xm,dw from dzb where xm like '李%';
/*列出图书库中所有藏书的书名*/
select sm from tsb group by sm;
select distinct sm from tsb;

select sm,dj from tsb where cbdw='高等教育出版社' order by dj desc;

/*注意使用”>=“和”<=“时小数和整数影响查询结果*/
select flh from tsb where dj>='10' and dj<= '20' order by cbdw,dj;
select flh from tsb where dj>='10.00' and dj<= '20.00' order by cbdw,dj;
/*between ... and ...  无影响*/
select flh from tsb where dj between 10 and 20 order by cbdw,dj;

select sm,zz from tsb where sm like '计算机%';

完成下面SQL高级查询:

13)     求科学出版社图书的最高单价、最低单价、平均单价。

15)     求出各个出版社图书的最高价格、最低价格和册数。

19)      找出藏书中各个出版单位的册数、价值总额。

答案:

select max(dj) as '最高单价', min(dj) as '最低单价',avg(dj) as '平均单价' from tsb where cbdw='科学出版社';
select cbdw as '出版单位',max(dj),min(dj),count(*) from tsb group by cbdw;
select cbdw as '出版单位', sum(dj),count(dj) from tsb group by cbdw;