软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 数据库 -> 数据库题目整理及详解(一) -> 正文阅读

[数据库]数据库题目整理及详解(一)



前言


—–冯延巳: 鹊踏枝.清明

六曲阑干偎碧树,杨柳风轻,展尽黄金缕。谁把钿筝移玉柱?穿帘海燕惊飞去。
满眼游丝兼落絮,红杏开时,一霎清明雨。浓睡觉来慵不语,惊残好梦无寻处?
    小假前夕,大Boss让当差,于是便可以名正言顺的重温一下数据库;时间还真是一把XXXX,夺走了记忆,失掉了“手熟尔”。

说明

  1. 内容:sql语句相关:建表、查询、权限等;

  2. 环境:Ubuntu 14.04 LTS下的Mysql5.5,详见下配图:
    [img]http://img.blog.csdn.net/20160402114446890
  3. 环境搭建见:ubuntu下mysql数据库的安装配置
  4. 规范:解析中的SQL关键字都使用黑粗体标记了,并且有大小写的区分;Mysql中是对sql语句大小写敏感的,为了节省时间,在亲测中都使用小写,详见截图;
  5. 每书写一条sql语句,最后都需要加英文分号(“;”);
  6. 每一行sql语句基本都亲测了一下,望诸君戮力,多有指正。

题目解析

  1. 设供应商-工程-零件数据库包含如下关系:

Suppliers(Sno, Sname, Status, Scity)
Parts(Pno, Pname, Color, Weight)
Projects(Jno, Jname, Jcity)
SPJ(Sno, Pno, Jno, Quantity)

其中,各关系的主码用下横线标示。Sno, Sname, Status, Scity 分别表示供应商的编号、名称、状态和所在城市;Pno, Pname, Color, Weight 分别表示零件的编号、名称、颜色和重量;Jno, Jname, Jcity 分别表示工程的编号、名称和所在城市; SPJ 是供应关系,Quantity 是特定供应商一次向特定工程供应的特定零件的数量。请使用 SQL 语句表示如下功能:

题目都比较简单,开始之前,做部分初始化:
create database stu;         ## 创建名为:stu的数据库
use stu;                     ## 使用stu数据库

(1) 使用 SQL 创建基本表,确定每个属性的类型、缺省值和约束条件。
CREATE TABLE Suppliers (
Sno CHAR (8) PRIMARY KEY,
Sname CHAR (8) NOT NULL,
Status INT,
Scity CHAR(10));

同时insert into ... values() 语句添加部分测试数据,见下图(之后皆同):
[img]http://img.blog.csdn.net/20160402114355124

CREATE TABLE Parts (
Pno CHAR (8) PRIMARY KEY,
Pname CHAR(16) NOT NULL,
Color CHAR(4),
Weight NUMERIC(7, 2));

见下图:
[img]http://img.blog.csdn.net/20160402114610546

CREATE TABLE Projects (
Jno CHAR (8) PRIMARY KEY,
Jname CHAR(20) NOT NULL,
Jcity CHAR(10));

注意, 该处在操作时,将表名写为:project了,于是使用 alter语句修改表名:alter table project rename to projects;
见下图:
[img]http://img.blog.csdn.net/20160402115121830

CREATE TABLE SPJ (
Sno CHAR (8),
Pno CHAR(8),
Jno CHAR(8),
Quantity INT,
PRIMARY KEY (Sno,Pno,Jno),
FOREIGN KEY (Sno) REFERENCES Suppliers(Sno),
FOREIGN KEY (Pno) REFERENCES Parts(Pno),
FOREIGN KEY (Jno) REFERENCES Projects(Jno) );

该处使用了外键,注意单词一定不要拼错,在测试中 PRIMARY KEY、FOREIGN KEY的内容都需要使用括号括起来,不然会报语法错误的提示,详见下图;
[img]http://img.blog.csdn.net/20160402115240908
[img]http://img.blog.csdn.net/20160402115256424


(2) 求上海的所有供应商的信息。
SELECT * FROM Suppliers WHERE Scity=‘上海’;

(3) 求位于北京的所有工程的信息。
SELECT * FROM Projects WHERE Jcity=‘北京’;

(4) 求数量在 100-150 的供应。
SELECT * FROM SPJ WHERE Quantity BETWEEN 100 AND 150;

注意此处: 使用between ... and 语句。

(5) 求为工程 J1 提供零件的供应商号。
SELECT Sno FROM SPJ WHERE Jno=‘J1’;

(6) 求供应工程 J1 红色零件的供应商号。
SELECT Sno
FROM SPJ, Parts
WHERE SPJ.Pno=Parts.Pno AND Jno=‘J1’ AND Color=‘红色’;

(7) 求至少提供一种红色零件的供应商名称。
SELECT Sname
FROM SPJ, Parts, Suppliers
WHERE SPJ.Pno=Parts.Pno AND SPJ.Sno=Suppliers.Sno AND Color=‘红色’;

2 ~ 7 题亲测截图:
[img]http://img.blog.csdn.net/20160402115503581
(8) 求不提供零件 P2 的供应商名称。
SELECT Sname
FROM Suppliers
WHERE NOT EXISTS
    (SELECT *
    FROM SPJ
    WHERE SPJ.Sno= Suppliers.Sno AND Pno=‘P2’);

注意此处: 使用not exists 语句。

(9) 求没有使用天津供应商生产的红色零件的工程号。
SELECT Jno
FROM Projects
WHERE NOT EXISTS
    (SELECT *
     FROM SPJ, Parts, SuppliersWHERE SPJ.Sno= Suppliers.Sno AND
     Parts.Pno=SPJ.Pno AND
     Color=‘红色’ AND Scity=‘天津’);

(10) 求使用了本地供应商提供的零件的工程号。
SELECT Projects.Jno, Projects.Jname
FROM Projects,Suppliers,SPJ
WHERE SPJ.Sno= Suppliers.Sno AND
    Projects.Jno=SPJ.Jno AND
    Projects.Jcity= Suppliers.Scity;


SELECT Jno,Jname
FROM Projects
WHERE EXISTS (
    SELECT *
    FROM SPJ, Suppliers
    WHERE SPJ.Sno= Suppliers.Sno AND
        Projects.Jno=SPJ.Jno AND
        Projects.Jcity= Suppliers.Scity);

注意此处: 使用exists 语句。

8 ~ 10,亲测截图:
[img]http://img.blog.csdn.net/20160402115807317
(11) 求未使用本地供应商提供的零件的工程号和工程名称。
SELECT Jno,Jname
FROM Projects
WHERE NOT EXISTS (
    SELECT *
    FROM SPJ, Suppliers
    WHERE SPJ.Sno= Suppliers.Sno AND
            Projects.Jno=SPJ.Jno AND
            Projects.Jcity= Suppliers.Scity);

(12) 求至少用了供应商 S1 所供应的全部零件的工程号。
SELECT Jno
FROM Projects
WHERE NOT EXISTS (
    SELECT *
    FROM SPJ SPJ1
    WHERE SPJ1.Sno = ‘S1’ AND
    NOT EXISTS (
        SELECT *
        FROM SPJ SPJ2
        WHERE SPJ2.Jno= Projects.Jno AND
        SPJ2.Pno= SPJ1.Pno));

(13) 求提供所有零件的供应商名称。
SELECT Sname
FROM Suppliers
WHERE NOT EXISTS (
    SELECT *
    FROM SPJ SPJ1
        WHERE NOT EXISTS (
            SELECT *
            FROM SPJ SPJ2
            WHERE SPJ2.Sno= Suppliers.Sno AND
            SPJ2.Pno= SPJ1.Pno));

注意此处: 使用建立别名的机制。

(14) 求提供了零件的供应商的个数。
SELECT distinct Sno FROM SPJ;

注意此处的distinct语句。

11 ~ 14,截图:
[img]http://img.blog.csdn.net/20160402115948333
(15) 求所有零件的平均重量。
SELECT avg(weight) FROM Parts;

注意此处的avg函数,用于求取平均值。

(16) 求供应商 S1 提供的每种零件的总数量。
SELECT Pno, sum(quantity) FROM SPJ WHERE Sno=‘S1’ GROUP BY Pno;

注意此处的sum函数,用于求和;以及GROUP BY语句用于分组。

(17) 求供应商 S1 供应工程 J1 的每种零件的总重量。
SELECT sum(weight)
FROM Parts, SPJ
WHERE SPJ.Pno=Parts.Pno AND Sno=‘S1’ AND Jno=‘J1’
GROUP BY Parts.Pno;

15 ~ 17,亲测截图:
[img]http://img.blog.csdn.net/20160402120043599


@@@@@@@看来这部分要写成系列的了,今天就到这儿,未完待续……

参考资料


[1] http://www.shuojuzi.com/s/shicidaquan/128764.html
[2] https://www.douban.com/note/155415235/
[3] http://www.cnblogs.com/wzmenjoy/p/4244545.html
[4] http://zhidao.baidu.com/link?url=4xf5EHRW3x66a3JcTEkKzy4Q3pW3UXRiYAVsZdFV-ne0cPhy9Wbn1GRQnd-MzYABdcGiJhW8nTLD7OBFlanodLV1I5hU7oKl7rsdjR448m7
[5] http://www.tanbo.name/html/544.html
[6] http://jxtm.jzu.cn/?p=258
[7] http://www.jb51.net/article/23966.htm
[8] http://jingyan.baidu.com/article/425e69e6bbc6c7be14fc1640.html
......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2016-04-02 21:00:00  
数据库 最新文章
Python&MySQL&PyQt
最新用python来操作mysql完全解析
mongodb的安装详解
1.PDO简介
《MySQL必知必会学习笔记》:高级联结
【翻译自mos文章】怎么对Microsoft(Office)
MyCAT全局表描述及示例
ocp
关于SQL数据表存储过程表名前缀换成dbo代码
数据库调优教程(二)慢查询数据准备
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年7日历
2018-7-19 13:25:12
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --