1.实验目的
理解和掌握数据库 DDL 语言,能够熟练使用SQL,DDL 语句,并能够完成数据导入。
2.实验内容和实验要求
理解和掌握 SQL DDL 语句的语法,特别是各种参数的具体含义和使用方法,使用SQL语句创建、修改和删除基本表,掌握 SQL语句常见语法错误的调试方法,完成数据导入。
3.实验步骤
- 使用菜单命令创建一个数据库test。
- 在数据库 test 上使用 SQL 语句按照所给表的顺序定义下列基本表。
表 1 地区表(region):
create table region
(
regionkey int primary key comment '地区编号',
name char(25) comment '地区名称',
comment varchar(150) comment '备注'
)
comment '地区表';
表 2 国家表(nation)
create table nation
(
nationkey int primary key comment '国家编号',
name char(25) comment '国家名称',
regionkey int references region(regionkey) , #comment '地区编号',
comment varchar(150) comment '备注'
)
comment '国家表';
表 3 供应商基本表(supplier)
create table nation
(
nationkey int primary key comment '国家编号',
name char(25) comment '国家名称',
regionkey int references region(regionkey) , #comment '地区编号',
comment varchar(150) comment '备注'
)
comment '国家表';
表 4 零件基本表(part)
create table part
(
partkey int primary key comment '零件编号',
name varchar(100) null comment '零件名称',
mfgr char(50) null comment '制造厂',
brand char(50) null comment '品牌',
ptype varchar(25) null comment '零件类型',
size int null comment '尺寸',
container char(10) null comment '包装',
retailprice decimal(8, 2) null comment '零售价格',
comment varchar(20) null
)
comment '零件基本表';
表 5 零件供应联系表(partsupp)
create table partsupp
(
partkey int not null references part(partkey) ,
suppkey int not null references supplier(suppkey) ,
availqty int null comment '可用数量',
supplycost decimal(10, 2) null comment '供应价格',
comment varchar(200) null,
primary key (partkey,suppkey)
)
comment '零件供应联系表';
表 6 顾客表(customer)
create table customer
(
custkey int primary key comment '顾客编号',
name varchar(25) null comment '姓名',
address varchar(40) null comment '地址',
nationkey int references nation(nationkey) ,
phone char(30) null comment '电话',
acctbal decimal(12, 2) null comment '账户余额',
mktsegment char(10) null comment '市场分区',
comment varchar(100) null
)
comment '顾客表';
表 7 订单表(orders)
create table customer
(
custkey int primary key comment '顾客编号',
name varchar(25) null comment '姓名',
address varchar(40) null comment '地址',
nationkey int references nation(nationkey) ,
phone char(30) null comment '电话',
acctbal decimal(12, 2) null comment '账户余额',
mktsegment char(10) null comment '市场分区',
comment varchar(100) null
)
comment '顾客表';
表 8 订单明细表(lineitem)
create table lineitem
(
orderkey int not null references orders(orderkey),
partkey int not null references part(partkey),
suppkey int not null references supplier(suppkey) ,
linenumber int not null comment '订单明细编号',
quantity int null comment '零件数量',
extendedprice decimal(8, 2) null comment '订单明细价格',
discount decimal(3, 2) null comment '折扣',
tax decimal(3, 2) null comment '税率',
returnflag char null comment '退货标记',
linestatus char null comment '订单明细状态',
shipdate date null comment '装运日期',
commitdate date null comment '委托日期',
receiptdate date null comment '签收日期',
shipinstruct char(25) null comment '装运说明',
shipmode char(10) null comment '装运方式',
comment varchar(40) null ,
primary key (orderkey,linenumber)
)
comment '订单明细表';
(3)根据给的“数据导入教程.rar”,把每个表的数据(.csv 格式)导入到建立的表
里,导入顺序按照建表的顺序。
(4)用 SQL 语句给订单表(orders)创建一个索引(按订单日期降序),索引的名字是
Dindex。
create index Dindex on orders(orderdate desc);