mysql新手进阶03
当年忠贞为国酬,何曾怕断头?
如今天下红遍,江山靠谁守?
业未就,身躯倦,鬓已秋。
你我之辈,忍将夙愿,付与东流?
数据库结构如下:
仓库(仓库号, 城市, 面积)
订购单(职工号, 供应商号, 订购单号, 订购日期)
供应商(供应商号, 供应商名, 地址)
职工(仓库号, 职工号, 工资)
具体数据如下:
仓库表:
仓库号 城市 面积
WH1 北京 370
WH2 上海 500
WH3 广州 200
WH4 武汉 400
订购单表:
职工号 供应商号 订购单号 订购日期
E3 S7 OR67 06/23/01
E1 S4 OR73 07/28/01
E5 S4 OR76 05/25/01
E6 S6 OR77 05/26/01
E3 S4 OR79 06/13/01
E1 S2 OR80 08/29/01
E3 S3 OR90 09/01/01
E3 S3 OR91 07/13/01
供应商表:
供应商号 供应商名 地址
S2 名硕电子公司 苏州
S3 振华电子厂 西安
S4 华通电子公司 北京
S6 607厂 郑州
S7 爱华电子厂 北京
职工表:
仓库号 职工号 工资
WH2 E1 1220
WH1 E3 1210
WH2 E4 1250
WH3 E5 1230
WH1 E6 1250
使用SQL语句完成:
DDL
1.写出创建上述表的语句
命令:
create table 仓库(仓库号varchar(10) primary key,
城市varchar(10),
面积int);
create table 供应商(供应商号varchar(10) primary key,
供应商名varchar(30),
地址varchar(10));
create table 职工(仓库号varchar(10),
职工号varchar(10) primary key,
工资int);
create table 订购单(职工号varchar(10) references 职工(职工号),
供应商号varchar(10) references 供应商(供应商号),
订购单号varchar(10) primary key,
订购日期varchar(10));
DML
2.给出插入上述数据的insert语句
命令:
insert into 仓库values('WH1', '北京', 370);
insert into 仓库values('WH2', '上海', 500);
insert into 仓库values('WH3', '广州', 200);
insert into 仓库values('WH4', '武汉', 400);
insert into 供应商values('S2', '名硕电子公司', '苏州');
insert into 供应商values('S3', '振华电子厂','西安');
insert into 供应商values('S4', '华通电子公司', '北京');
insert into 供应商values('S6', '607厂', '郑州');
insert into 供应商values('S7', '爱华电子厂', '北京');
insert into 职工values ('WH2', 'E1', 1220);
insert into 职工values ('WH1', 'E3', 1210);
insert into 职工values ('WH2', 'E4', 1250);
insert into 职工values ('WH3', 'E5', 1230);
insert into 职工values ('WH1', 'E6', 1250);
insert into 订购单values ('E3', 'S7', 'OR67', '06/23/01');
insert into 订购单values ('E1', 'S4', 'OR73', '07/28/01');
insert into 订购单values ('E5', 'S4', 'OR76', '05/25/01');
insert into 订购单values ('E6', 'S6', 'OR77', '05/26/01');
insert into 订购单values ('E3', 'S4', 'OR79', '06/13/01');
insert into 订购单values ('E1', 'S2', 'OR80', '08/29/01');
insert into 订购单values ('E3', 'S3', 'OR90', '09/01/01');
insert into 订购单values ('E3', 'S3', 'OR91', '07/13/01');
单表查询
3.检索职工关系中的所有信息
命令:
select * from 职工;
结果:
4.检索供应商关系中的所有信息
命令:
select * from 供应商;
结果:
5.检索六月之后的所有订单
命令:
select * from 订购单where 订购日期like '06%' or 订购日期like '07%'or 订购日期like '08%'or 订购日期like '09%'or 订购日期like '10%'or 订购日期like '11%'or 订购日期like '12%';
结果:
6.检索面积大于400的仓库
命令:
select * from 仓库where 面积> 400;
结果:
7.检索哪些职工的工资多于1210
命令:
select * from 职工where 工资> 1210;
结果:
8.检索仓库是“WH1”或“WH2”并且面积大于400的城市
命令:
select 城市from 仓库where (仓库号= 'WH1' or 仓库号= 'WH2') and 面积> 400;
结果:
9.找出仓库面积在400到600的仓库
命令:
select * from 仓库where 面积between 400 and 600;
结果:
10.找出名中包含 “厂”的所有供应商的名
命令:
select 供应商名from 供应商where 供应商名like '%厂%';
结果:
11.找出不在西安的供应商
命令:
select * from 供应商where 地址!= '西安';
结果:
12.找出不在北京的仓库
命令:
select * from 仓库where 城市!= '北京';
结果:
13.按工资降序排列出所有职工的信息
命令:
select * from 职工order by 工资desc;
结果:
14.先按仓库号升序排列,再按工资降序排列
命令:
select * from 职工order by 仓库号asc, 工资desc;
结果:
15.在仓库表中统计一下有几个仓库
命令:
select count(*) 仓库数from 仓库;
结果:
16.在职工表中统计一下有几个仓库
命令:
select count(distinct 仓库号) 仓库数from 职工;
结果:
17.求总的仓库面积
命令:
select sum(面积) 总面积from 仓库;
结果:
聚合查询
18.每个职工的订单数
命令:
select 职工号, count(订购单号) 订单数from 订购单group by 职工号;
结果:
19.订单数大于3的职工
命令:
select 职工号, count(订购单号) 订单数from 订购单group by 职工号having count(订购单号) > 3;
结果:
多表查询
20.找出在面积大于400的仓库中工作的职工
命令:select 职工号from 职工, 仓库where 职工.仓库号= 仓库.仓库号and 面积> 400;
结果:
21.找出在北京工作的职工和他们的工资情况
命令:select 职工号, 工资from 职工, 仓库where 职工.仓库号= 仓库.仓库号and 城市= '北京';
结果:
22.找出工资大于1215的职工和他们所在的城市
命令:select 职工号, 城市from 职工, 仓库where 职工.仓库号= 仓库.仓库号and 工资> 1215;
结果:
子查询
23.哪些城市至少有一个订单(从仓库角度考虑)
命令:select 城市from 仓库, 订购单, 职工where 订购单.职工号= 职工.职工号and 仓库.仓库号= 职工.仓库号group by 城市having count(*) >= 1;
结果:
24.找出没有任何订单的城市
命令:select 城市from 仓库where 仓库号not in (select 仓库号from 职工where 职工号in (select 职工号from 订购单));
结果:
25.找出和E4有同样工资的所有职工
命令:
select * from 职工where 工资= (select 工资from 职工where 职工号= 'E4');
结果:
26.找出仓库面积大于400的仓库的所有职工
命令:select * from 职工where 仓库号in (select 仓库号from 仓库where 面积> 400);
结果:
27.找出供应商在西安的职工和他们的工资情况
命令:
结果:
28.找出不在北京仓库里工作的职工
命令:select 职工号, 工资from 职工where 仓库号not in (select 仓库号from 仓库where 城市= '北京');
结果:
29.找出在北京仓库里工作的职工
命令:select 职工号, 工资from 职工where 仓库号in (select 仓库号from 仓库where 城市= '北京');
结果:
30.求广州和上海仓库职工的总工资
命令:select sum(工资) 总工资from 职工where 仓库号in (select 仓库号from 仓库where 城市in('广州', '上海'));
结果:
31.求所有职工工资都大于1210的仓库的平均面积
命令:select avg(面积) from 仓库where 仓库号in (select 仓库号from 职工 group by 仓库号having min(工资) > 1210);
结果:
32.求上海仓库中职工的最高工资
命令:select max(工资) 最高工资from 职工where 仓库号in (select 仓库号from 仓库where 城市= '上海');
结果:
33.订单数大于或等于2的职工的工资
命令:select 工资from 职工where 职工号in (select 职工号from 订购单group by 职工号having count(*) >= 2);
结果:
mysql新手进阶03的更多相关文章
- mysql新手进阶02
云想衣裳花想容,春风拂槛露华浓. 若非群玉山头见,会向瑶台月下逢. 现在有一教学管理系统,具体的关系模式如下: Student (no, name, sex, birthday, class) Tea ...
- mysql新手进阶01
生活不止眼前的苟且,还有诗和远方. 请根据给出的数据库表结构来回答相应问题: DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13)); EMP (EM ...
- mysql 开发进阶篇系列 47 物理备份与恢复(xtrabackup 的完全备份恢复,恢复后重启失败总结)
一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下.下面是通过 --target-dir 指定完全 ...
- mysql 开发进阶篇系列 55 权限与安全(安全事项 )
一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限, ...
- mysql 开发进阶篇系列 46 物理备份与恢复( xtrabackup的 选项说明,增加备份用户,完全备份案例)
一. xtrabackup 选项说明 在操作xtrabackup备份与恢复之前,先看下该工具的选项,下面记录了xtrabackup二进制文件的部分命令行选项,后期把常用的选项在补上.点击查看xtrab ...
- mysql 开发进阶篇系列 42 逻辑备份与恢复(mysqldump 的完全恢复)
一.概述 在作何数据库里,备份与恢复都是非常重要的.好的备份方法和备份策略将会使得数据库中的数据更加高效和安全.对于DBA来说,进行备份或恢复操作时要考虑的因素大概有如下: (1) 确定要备份的表的存 ...
- mysql 开发进阶篇系列 20 MySQL Server(innodb_lock_wait_timeout,innodb_support_xa,innodb _log_*)
1. innodb_lock_wait_timeout mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间 ...
- python进阶03 继承
python进阶03 继承 一.继承 课堂练习:假设你正在参与一个魔幻类角色游戏的开发,公司需要腻味这个游戏设计两个角色的类: a.剑士 属性:1.角色名:2.角色等级:3.生命值:4.攻击力 行为: ...
- MySQL第二讲 一一一一 MySQL语句进阶
通过命令来备份数据库: 通过数据库软件里面的,mysqldump模块来操作,如下: mysqldump -u root db1 > db1.sql -p; //没有-d就是备份的时候:数据表结构 ...
随机推荐
- iOS数据存储类型 及 堆(heap)和栈(stack)
iOS数据存储类型 及 堆(heap)和栈(stack) 一般认为在c中分为这几个存储区: 1栈 -- 由编译器自动分配释放. 2堆 -- 一般由程序员分配释放,若程序员不释放,程序结束时可能由O ...
- bootstrap-table页码ALL显示为NAN
在github上查阅找到的解决办法: https://github.com/wenzhixin/bootstrap-table/issues/435 页面部分: data-page-list=&quo ...
- JasperReport4.6生成PDF中文
Web项目中PDF显示中文 本人无奈使用JasperReport4.6,因为这本书(好像也是唯一的一本国内的介绍JasperReport的书), 选择"文件"→New命令,弹出一个 ...
- 史上最简单的SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard)(Finchley版本)
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f12-dash/ 本文出自方志朋的博客 在我的第四篇文章断路 ...
- 微信小程序新版用户授权方式处理
最新更新(2018-12-27): 最近做了改版,做成默认进来就是首页,然后去判断有没有用户信息,没有的话再去判断用没授权过,如果授权过直接自动去获取,没有的话再跳转到授权页面.因为用户授权主要就是针 ...
- UCanCode发布升级E-Form++可视化源码组件库2018全新版 !
2018年. 成都 UCanCode发布升级E-Form++可视化源码组件库2018全新版 ! --- 全面性能提升,UCanCode有史以来最强大的版本发布! E-Form++可视化源码组件库企业版 ...
- Redis Sentinel 介绍
Redis Sentinel sentinel的功能: 监控:sentinel节点定期检测redis数据节点,其余sentinel节点是否可达. 通知:sentinel 节点会将故障转移结果通知给 ...
- linux系统基础之-----磁盘结构(基于centos7.4 1708)
- Laravel 入门笔记
1.MVC简介 MVC全名是Model View Controller,是模型-视图-控制器的缩写 Model是应用程序中用于处理应用程序数据逻辑的部分 View是应用程序中处理数据显示的部分 Con ...
- Hive(4)-Hive的数据类型
一. 基本数据类型 Hive数据类型 Java数据类型 长度 例子 TINYINT byte 1byte有符号整数 20 SMALINT short 2byte有符号整数 20 INT int 4by ...