创建数据表与修改数据表

1、实验目的

理解和掌握数据库DDL语言,能够熟练地使用SQL DDL语句创建、修改和删除数据库、模式和基本表。

2、实验内容及要求

理解和掌握SQL DDL语句的语法,特别是各种参数的具体含义和使用方法;使用SQL语句创建、修改和删除数据库、模式和基本表。掌握SQL语句常见语法错误的调试方法。

3、实验步骤

建立TPC-H数据库模式,TPC-H数据库模式由零件表(Part)、供应商表(Supplier)、零件供应商联系表(PartSupp)、顾客表(Customer)、国家表(Nation)、地区表(Region)、订单表(Orders)和订单明细表(Lineitem)8个基本表组成。

零件表(Part)            供应商表(Supplier)        顾客表(Customer)  

partkey

零件编号

name

零件名称

mfgr

制造厂

brand

品牌

type

零件类型

size

尺寸

container

包装

retailprice

零售价格

comment

备注

suppkey

供应商编号

name

供应商名称

address

供应商地址

nationkey

国家编号

phone

供应商电话

acctbal

供应商账户余额

comment

备注

custkey

顾客编号

name

姓名

address

地址

nationkey

国籍编号

phone

电话

acctbal

账户余额

mktsegment

市场分区

comment

备注

零件供应商联系表(PartSupp)    国家表(Nation)           地区表(Region)      

partkey

零件编号

suppkey

供应商编号

availqty

可用数量

supplycost

供应价格

comment

备注

nationkey

国家编号

name

国家名称

regionkey

地区编号

comment

备注

regionkey

地区编号

name

地区名称

comment

备注

订单表(Orders)        订单明细表(Lineitem)

orderkey

订单编号

custkey

顾客编号

orderstatus

订单状态

totalprice

订单总金额

orderdate

订单日期

orderpriority

订单优先级别

clerk

记账员

shippriority

运输优先级别

comment

备注

orderkey

订单编号

partkey

零件编号

suppkey

供应商编号

linenumber

订单明细编号

quantity

数量

extendedprice

订单明细价格

discount

折扣

tax

税率

returnflag

退货标记

linestatus

订单明细状态

shipdate

装运日期

commitdate

委托日期

receiptdate

签收日期

shipinstruct

装运说明

shipmode

装运方式

comment

备注

  1. 采用SQL语句练习数据表的创建,创建基本表时,要求为列选择合适的数据类型,正确创建表级和列级完整性约束,如列值是否允许为空、主码和外码等(注意:由于完整性约束的限制,被引用的表需要先创建);

(2)我是使用sqlyog进行数据库的创建 删除 数据增删改查 有些sqlyog内能用的语句好像在sqlquery内无法使用,我不太清楚为什么 以下是我的实验报告内容。

#创建数据库

CREATE DATABASE IF NOT EXISTS TPCH;

USE TPCH;

#删除数据库 删除数据库(这里我用的是# 我用的sqlyog 不知道为什么#再sqlQuery内无法使用)

#DROP DATABASE IF EXISTS tpch;

#创建各种表 (不知道为什么 if not exists 和 主键递增AUTO_INCREMENT 再sqlQuery内无法使用)

CREATE TABLE IF NOT EXISTS Part

(

    partkey INT PRIMARY KEY AUTO_INCREMENT,

    NAME VARCHAR(20),

    mfgr VARCHAR(20),

    brand VARCHAR(20),

    TYPE VARCHAR(20),

    size INT,

    container VARCHAR(20),

    retailprice DOUBLE,

    COMMENT VARCHAR(20)

);

CREATE TABLE IF NOT EXISTS Supplier

(

    suppkey INT PRIMARY KEY AUTO_INCREMENT,

    NAME VARCHAR(20),

    address VARCHAR(20),

    nationkey VARCHAR(20),

    phone VARCHAR(20),

    acctbal INT,

    COMMENT VARCHAR(20)

); 

CREATE TABLE IF NOT EXISTS Customer

(

    custkey INT PRIMARY KEY AUTO_INCREMENT,

    NAME VARCHAR(20),

    address VARCHAR(20),

    nationkey VARCHAR(20),

    phone VARCHAR(20),

    acctbal INT,

    mktsegment VARCHAR(20),

    COMMENT VARCHAR(20)

);

CREATE TABLE IF NOT EXISTS Nation

(

    nationkey INT PRIMARY KEY AUTO_INCREMENT,

    NAME VARCHAR(20),

    regionkey VARCHAR(20),

    COMMENT VARCHAR(20)

);

CREATE TABLE IF NOT EXISTS Region

(

    regionkey INT(20) PRIMARY KEY AUTO_INCREMENT,

    NAME VARCHAR(20),

    COMMENT VARCHAR(20)

);

CREATE TABLE IF NOT EXISTS Lineitem

(

    Lineitem INT PRIMARY KEY AUTO_INCREMENT,

    partkey VARCHAR(20),

    suppkey VARCHAR(20),

    linenumber VARCHAR(20),

    quantity VARCHAR(20),

    extendedprice INT,

    discount VARCHAR(20),

    tax VARCHAR(20),

    returnflag VARCHAR(20),

    linestatus INT,

    shipdate VARCHAR(20),

    commitdate VARCHAR(20),

    receiptdate VARCHAR(20),

    shipinstruct VARCHAR(20),

    shipmode VARCHAR(20),

    COMMENT VARCHAR(20)

);

CREATE TABLE Orders

(

    orderkey  INT PRIMARY KEY AUTO_INCREMENT,

    custkey VARCHAR(20),

    orderstatus VARCHAR(20),

    totalprice VARCHAR(20),

    orderdate DATE,

    orderpriority INT,

    clerk VARCHAR(20),

    shippriority INT,

    COMMENT VARCHAR(20)

);

CREATE TABLE PartSupp

(

    partkey INT PRIMARY KEY AUTO_INCREMENT,

    suppkey VARCHAR(20),

    availqty VARCHAR(20),

    supplycost VARCHAR(20),

    COMMENT VARCHAR(20)

);

数据信息的添加

#向nation添加数据

INSERT INTO nation VALUES('1', '北冰洋汽水', 32, '无');

INSERT INTO nation VALUES('2', '雷碧汽水', 12, '可乐');

INSERT INTO nation VALUES('3', '老北京汽水', 35, '无');

INSERT INTO nation VALUES('4', '可乐汽水', 66, '无');

INSERT INTO nation VALUES('', '拜四汽水', 22, '无');

INSERT INTO nation VALUES('', '油卡汽水', 3, '无');

数据的删除

#删除nation数据  ID为1

DELETE FROM nation WHERE nationkey='1';

截图

数据的修改

# 修改数据

UPDATE nation SET NAME='修改过的', COMMENT='修改过的' WHERE nationkey='2';

数据的查询

#查询数据 id=2

SELECT nationkey,NAME,regionkey,COMMENT

 FROM nation

 WHERE nationkey='2';

4、实验小结

    通过这次实验,我收获了许多关于数据库的知识,熟悉了sql server工具的使用。首先,在创建表时,一开始我将表名设置为TCP-H,但运行发现不通过,我向老师询问了这个问题,老师告诉我尝试将TCP-P中的-删除,试过之后发现运行通过,我又尝试加上双引号“”,发现也可以通过,于是,我了解了数据库命名规范。

在接下来的实验中,我又遇到了错误,经过观察,原来是之前写过的创建数据库的语句需要删除或者注释掉,否则就会报错,因为语句重复使用了。同时,我也学会了如何注释,单行注释加--,多行注释为/*…….*/。另外注释语句的快捷键为Ctrl+KCtrl+C取消注释为Ctrl+kCtrl+u

在创建过表后,需要刷新数据库才可以看到已创建的表,创建表也可以不使用sql语句创建。在创建各个表时,我发现任务比较繁琐重复,效率比较低,这时朱老师告诉我们可以使用excel表导入表格,这真是个好方法,可惜由于时间有限,我没能尝试。

总之,经过这次实验,我基本理解和掌握SQL DDL语句的语法,学会了使用SQL语句创建、修改和删除数据库、模式和基本表。在遇到常见的语法错误也能自己发现并解决了。但是我还有很多没有涉及的地方,需要进一步的学习才能提高自己的能力,今后也会更加专注的学习数据库。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值