数据库实验一 数据库定义及数据导入

实验目的

理解和掌握数据库 DDL 语言,能够熟练使用 SQL DDL 语句,并能够完成数据导入。

实验内容和要求

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

实验步骤

(1)使用菜单命令创建一个数据库 test。
(2)在数据库 test 上使用 SQL 语句按照所给表的顺序定义下列基本表。
(3)根据给的“数据导入教程.rar”,把每个表的数据(.csv 格式)导入到建立的表里,导入顺序按照建表的顺序。
(4)用 SQL 语句给订单表(orders)创建一个索引(按订单日期降序),索引的名字是Dindex。

SQL语句

创建数据库test和8个表:

 CREATE TABLE region ( regionkey INT PRIMARY KEY auto_increment, NAME CHAR ( 25 ), COMMENT VARCHAR ( 150 ) );
CREATE TABLE nation (
	nationkey INT PRIMARY KEY auto_increment,
	NAME CHAR ( 25 ),
	regionkey INT,
	COMMENT VARCHAR ( 150 ),
	FOREIGN KEY ( regionkey ) REFERENCES region ( regionkey ) 
);
CREATE TABLE supplier (
	suppkey INT PRIMARY KEY auto_increment,
	NAME CHAR ( 100 ),
	address VARCHAR ( 100 ),
	nationkey INT,
	phone CHAR ( 30 ),
	acctbal DECIMAL ( 12, 2 ),
	COMMENT VARCHAR ( 100 ),
	FOREIGN KEY ( nationkey ) REFERENCES nation ( nationkey ) 
);
CREATE TABLE part (
	partkey INT PRIMARY KEY auto_increment,
	NAME VARCHAR ( 100 ),
	mfgr CHAR ( 50 ),
	brand CHAR ( 50 ),
	type VARCHAR ( 25 ),
	size INT,
	container CHAR ( 10 ),
	retailprice DECIMAL ( 8, 2 ),
	COMMENT VARCHAR ( 20 ) 
);
CREATE TABLE partsupp (
	partkey INT,
	suppkey INT,
	availqty INT,
	supplycost DECIMAL ( 10, 2 ),
	COMMENT VARCHAR ( 200 ),
	PRIMARY KEY ( partkey, suppkey ),
	FOREIGN KEY ( partkey ) REFERENCES part ( partkey ),
	FOREIGN KEY ( suppkey ) REFERENCES supplier ( suppkey ) 
);
CREATE TABLE customer (
	custkey INT PRIMARY KEY auto_increment,
	NAME VARCHAR ( 25 ),
	address VARCHAR ( 40 ),
	nationkey INT,
	phone CHAR ( 30 ),
	acctbal DECIMAL ( 12, 2 ),
	mktsegment CHAR ( 10 ),
	COMMENT VARCHAR ( 100 ),
	FOREIGN KEY ( nationkey ) REFERENCES nation ( nationkey ) 
);
CREATE TABLE orders (
	orderkey INT PRIMARY KEY auto_increment,
	custkey INT,
	orderstatus CHAR ( 1 ),
	totalprice DECIMAL ( 10, 2 ),
	orderdate DATE,
	orderpriority CHAR ( 15 ),
	clerk CHAR ( 16 ),
	shippriority CHAR ( 1 ),
	COMMENT VARCHAR ( 60 ),
	FOREIGN KEY ( custkey ) REFERENCES customer ( custkey ) 
);
CREATE TABLE lineitem (
	orderkey INT,
	partkey INT,
	suppkey INT,
	linenumber INT,
	quantity INT,
	extendedprice DECIMAL ( 8, 2 ),
	discount DECIMAL ( 3, 2 ),
	tax DECIMAL ( 3, 2 ),
	returnflag CHAR ( 1 ),
	linestatus CHAR ( 1 ),
	shipdate DATE,
	commitdate DATE,
	receiptdate DATE,
	shipinstruct CHAR ( 25 ),
	shipmode CHAR ( 10 ),
	COMMENT VARCHAR ( 10 ),
	PRIMARY KEY ( orderkey, linenumber ),
	FOREIGN KEY ( orderkey ) REFERENCES orders ( orderkey ),
FOREIGN KEY ( partkey, suppkey ) REFERENCES partsupp ( partkey, suppkey ) 
);

用SQL语句给订单建立日期降序索引:

  CREATE INDEX Dindex ON orders ( orderdate DESC );

实验结果

创建数据库test和8个表:

在这里插入图片描述

按顺序把数据导入8个表中:

region表:
在这里插入图片描述
nation表:
在这里插入图片描述

supplier表:
在这里插入图片描述

part表:
在这里插入图片描述

partsupp表:
在这里插入图片描述

customer表:
在这里插入图片描述

orders表:
在这里插入图片描述

lineitem表:
在这里插入图片描述

在orders表中添加降序索引Dindex:

在这里插入图片描述

实验总结

(1)导入数据时需要选择合适的编码格式,我选择Current Windows CodePage时总是出现以下错误:

后来改为10008 (MAC - Simplified Chinese GB 2312)之后就可以导入了。
(2)在数据导入时,可能会出现其他步骤没有错误但导入失败的情况,只要选择忽略外键约束就可以正常导入了。

猜你喜欢

转载自blog.csdn.net/gui_bjyxszd/article/details/127720548