zoukankan      html  css  js  c++  java
  • 数据库原理及应用.实验2.表的创建和管理

    实验报告

      课程名称:数据库原理及应用
      实验项目名称:表的创建和管理
      实验时间:2021年3月29日


    实 验 目 的:

      掌握MySQL数据库的创建、修改、删除、查看操作

    实 验 环 境:

      MySQL、SQLyog

    实 验 内 容 及 过 程:

    1. MySQL数据库的创建、修改、删除、查看操作

    1. 创建名为STJ的数据库,字符集设置为gbk,能够多次执行创建语句不报错

      CREATE DATABASE IF NOT EXISTS STJ CHARACTER SET gbk;
      
    2. 修改STJ的字符集为utf8

      ALTER DATABASE STJ CHARACTER SET utf8;
      
    3. 查看数据库STJ的创建信息

      SHOW CREATE DATABASE STJ;
      
    4. 查看当前有哪些数据库

      SHOW DATABASES;
      
    5. 删除数据库STJ,能够多次执行删除语句不报错

      DROP DATABASE IF EXISTS STJ;
      

    2. MySQL数据库表的创建、修改、删除、查看

    1. 在数据库STJ中创建S、P、J及SPJ四个模式

      (注意为各字段选定合适的数据类型,以及主键、外键约束)

      • 方括号内的属性为主键
      S([SNO</u>]{主键},SNAME,STATUS,CITY);
      P([PNO]{主键},PNAME,COLOR,WEIGHT);
      J([JNO]{主键},JNAME,CITY);
      SPJ([SNO,PNO,JNO]{主键},QTY);
      
      • SNO为外键参照S(SNO),PNO为外键参照P(PNO),JNO为外键参照J(JNO);
    • 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CIIY)
      组成。

    • 零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGH)组成。

    • 工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。

    • 供应情况表SPJ由供应商代码(SNO)、每件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量OTY。若干数据如下:

      USE STJ;
      CREATE TABLE S (
          SNO CHAR(2) PRIMARY KEY,
          SNAME CHAR(5),
          \`STATUS\` INT,
          CITY CHAR(6)
      );
      
      CREATE TABLE P (
          PNO CHAR(2) PRIMARY KEY,
          PNAME CHAR(5),
          COLOR CHAR(1),
          WEIGHT INT
      );
      
      CREATE TABLE J (
          JNO CHAR(2) PRIMARY KEY,
          JNAME CHAR(6),
          CITY CHAR(6)
      );
      
      CREATE TABLE SPJ (
          SNO CHAR(2),
          PNO CHAR(2),
          JNO CHAR(2),
          QTY INT,
      
      CONSTRAINT fk_spj_s FOREIGN KEY (SNO) REFERENCES S (SNO),
      CONSTRAINT fk_spj_p FOREIGN KEY (PNO) REFERENCES P (PNO),
      CONSTRAINT fk_spj_j FOREIGN KEY (JNO) REFERENCES J (JNO)
      );
      
    1. 分别查看四张表的字段结构信息

      DESC S;
      DESC P;
      DESC J;
      
      DESC SPJ;
      
    2. 分别查看四张表的创建信息

      SHOW CREATE TABLE S;
      
      SHOW CREATE TABLE P;
      
      SHOW CREATE TABLE J;
      
      SHOW CREATE TABLE SPJ;
      
    3. 为S表的字段SNAME添加唯一约束

      ALTER TABLE S
      MODIFY COLUMN SNAME INT UNIQUE;
      
    4. 修改p表的color字段数据类型为char(1),并添加默认约束,默认值为红

      ALTER TABLE P
      MODIFY COLUMN COLOR CHAR(1) DEFAULT '红';
      
    5. 为J表的字段JNAME添加非空约束

      ALTER TABLE J
      MODIFY COLUMN JNAME VARCHAR(20) NOT NULL;
      
    6. 用两种方式修改表S的名称为table_s,最终改为原名s

      ALTER TABLE S RENAME TO table_s;
      RENAME TABLE S TO table_s;
      
      ALTER TABLE table_s RENAME TO S;
      
    7. 删除表spj字段JNO的外键约束(假设外键名为fk_spj_j),确认删除后(SHOW
      INDEX FROM 表名),再重新添加外键fk_spj_j

      ALTER TABLE SPJ
      DROP FOREIGN KEY fk_spj_j;
      ALTER TABLE SPJ
      DROP INDEX fk_spj_j;
      
      SHOW INDEX FROM SPJ;
      
      ALTER TABLE SPJ
      ADD CONSTRAINT fk_spj_j FOREIGN KEY (JNO) REFERENCES J (JNO);
      
    8. 修改表S中的字段名status为sstatus,并查看表的字段结构信息

      ALTER TABLE S CHANGE \`STATUS\` SSTATUS INT;
      
      DESC S;
      
    9. 使用INSERT语句插入以上四张表的数据,并用select * from
      表名查看表中所有记录

      INSERT INTO S
      VALUES ('S1', '精益', 20, '天津'),
      	('S2', '盛锡', 10, '北京'),
      	('S3', '东方红', 30, '北京'),
      	('S4', '丰泰盛', 20, '天津'),
      	('S5', '为民', 30, '上海');
      
      INSERT INTO P
      VALUES ('P1', '螺母', '红', 12),
      	('P2', '螺栓', '绿', 17),
      	('P3', '螺丝刀', '蓝', 14),
      	('P4', '螺丝刀', '红', 14),
      	('P5', '凸轮', '蓝', 40),
      	('P6', '齿轮', '红', 30);
      
      INSERT INTO J
      VALUES ('J1', '三建', '北京'),
      	('J2', '一汽', '长春'),
      	('J3', '弹簧厂', '天津'),
      	('J4', '造船厂', '天津'),
      	('J5', '机车厂', '唐山'),
      	('J6', '无线电厂', '常州'),
      	('J7', '半导体厂', '南京');
      
      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);
      

    实验心得:

      通过本次实验课程,我掌握了如何创建数据库,设置其字符集,查看数据库的创建信息;掌握了创建数据表并设定列级约束或表级约束的办法。收获颇丰。带着这些问题,我们来审视一下MySQL学习。希腊说过一句富有哲理的话,最困难的事情就是认识自己。这句话把我们带到了一个新的维度去思考这个问题:拉罗什夫科说过一句著名的话,取得成就时坚持不懈,要比遭到失败时顽强不屈更重要。这不禁令我深思。

    附 录:

  • 相关阅读:
    如何将自己的镜像上传到私库
    基于spring-cloud的微服务(1) 服务注册中心eureka
    关于对象池技术的一些记录
    为Docker容器中运行的gitlab添加ssh的一些问题记录
    使用java实现的socket代理(支持socket4和socket5)
    ConfluenceRemoteUserAuth
    JiraRemoteUserAuth
    Apache 的mod_auth_cas模块的介绍和使用
    基于乌班图的标准镜像添加中文支持
    apache反向代解决绝对路径可能出现的问题
  • 原文地址:https://www.cnblogs.com/StarsbySea/p/14810735.html
Copyright © 2011-2022 走看看