题目:交互式SQL

实验环境:Windows 10操作系统、MySQL 8.0、Navicat

实验内容与完成情况:

一、在MySQL中建立一个数据库,进行实验所要求的各种操作,所有的SQL操作均在此建立的新库里进行。

二、根据以下要求,记录所有的实验用例。

1.任务要求:

        数据定义

                熟悉基本表的创建、修改及删除。

                熟悉索引的创建和删除。

                熟悉视图的创建和删除。

        数据操作

                完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询)。

                完成各类更新操作(插入数据,修改数据,删除数据)。

        视图的操作

        视图的定义(创建和删除),查询,更新(注意更新的条件)。

2.第4题:用SQL语句建立第2章习题6中的4个表;

【SQL语句编写】

CREATE DATABASE IF NOT EXISTS SPJ CHARACTER SET 'utf8';
USE SPJ;
 
CREATE TABLE IF NOT EXISTS S(
    SNO VARCHAR(2),
    SNAME VARCHAR(5),
    `STATUS` INT(3),
    CITY VARCHAR(5)
);
INSERT INTO S
VALUES 
('S1', '精益',20,'天津'),
('S2', '盛锡',10,'北京'),
('S3', '东方红',30,'北京'),
('S4', '丰泰盛',20,'天津'),
('S5', '为民',30,'上海');
CREATE TABLE IF NOT EXISTS P(
    PNO VARCHAR(2),
    PNAME VARCHAR(5),
    COLOR VARCHAR(2),
    `WEIGHT` INT(2
);
INSERT INTO P
VALUES 
('P1', '螺母','红',12),
('P2', '螺栓','绿',17),
('P3', '螺丝刀','蓝',14),
('P4', '螺丝刀','红',14),
('P5', '凸轮','蓝',40),
('P6', '齿轮','红',30);
CREATE TABLE IF NOT EXISTS J(
    JNO VARCHAR(2),
    JNAME VARCHAR(5),
    CITY VARCHAR(5)
);
INSERT INTO J
VALUES 
('J1', '三建','北京'),
('J2', '一汽','长春'),
('J3', '弹簧厂','天津'),
('J4', '造船厂','天津'),
('J5', '机车厂','唐山'),
('J6', '无线电厂','常州'),

('J7', '半导体厂','南京');

CREATE TABLE IF NOT EXISTS SPJ(
    SNO VARCHAR(2),
    PNO VARCHAR(2),
    JNO VARCHAR(2),
    QTY INT(5)
);
INSERT INTO SPJ
VALUES 
('S1', 'P1','J1',200),
('S1', 'P1','J3',100),
('S1', 'P1','J4',700),
('S1', 'P2','J2',100),
('S2', 'P3','J1',400),
('S2', 'P3','J2',200),
('S2', 'P3','J4',500),
('S2', 'P3','J5',400),
('S2', 'P5','J1',400),
('S2', 'P5','J2',100),
('S3', 'P1','J1',200),
('S3', 'P3','J1',200),
('S4', 'P5','J1',100),
('S4', 'P6','J3',300),
('S4', 'P6','J4',200),
('S5', 'P2','J4',100),
('S5', 'P3','J1',200),
('S5', 'P6','J2',200),
('S5', 'P6','J4',500);

【运行结果】

针对建立的4个表用SQL语言完成下列查询。

  1. 求供应工程J1零件的供应商号码SNO;

  1. 求供应工程J1零件P1的供应商号码SNO;

  1. 求供应工程J1零件为红色的供应商号码SNO;

  1. 求没有使用天津供应商生产的红色零件的工程号JNO;

  1. 求至少用了供应商S1所供应的全部零件的工程号JNO。

S1所供应的零件为P1、P2,只有J4都用了P1、2P

3.第5题:针对习题4中的4个表试用SQL语言完成以下各项操作:

(1)找出所有供应商的姓名和所在城市;

(2)找出所有零件的名称、颜色、重量;

(3)找出使用供应商S1所供应零件的工程号码;

(4)找出工程项目J2使用的各种零件的名称及其数量;

  1. 找出上海厂商供应的所有零件号码;

  1. 找出使用上海产的零件的工程名称;

(7)找出没有使用天津产的零件的工程号码;

(8)把全部红色零件的颜色改成蓝色;

(9)由S5供给J4的零件P6改为由S3供应,请作必要的修改;

(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录;

(11)请将(S2,J6,P4,200)插入供应情况关系。

    

4.第9题:请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。

  

针对该试图完成下列查询:

  1. 找出三建工程项目使用的各种零件代码及其数量;

 

  1. 找出供应商S1的供应情况。

    

出现的问题:

  • 问题一:创建表时报错

解决方案:

  • 问题一:对关键字STATUS进行标注所用的符号有误,不是单引号’,而是`

心得体会:

     通过本次实验,对sql语句对数据库操作有了更好的了解,本次实验中,通过sql语句建库、建表、向表中添加数据、删除数据、查询数据等操作,更加明白了sql语句操作的方便性。sql语句是一个非过程化的语言,因为它一次处理一个记录,对数据库提供自动导航。同时,sql语句不要求用户指定对数据的存放方法,也可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其他类型的终端用户。

    通过对数据库的单表、多表查询操作,对sql语句的查询操作的逻辑和操作有了更好的了解,方便了以后对数据库进行查询操作。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐