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 cbdw as '出版单位',max(dj),min(dj),count(*) from tsb group by cbdw;
select cbdw as '出版单位', sum(dj),count(dj) from tsb group by cbdw;