【SQL Server】实验二 基本查询

1 实验目的

(1) 掌握SQL的DDL使用方法。

(2) 掌握SQL的基本查询语句使用方法。

2 实验内容

2.1 掌握SQL的DDL使用方法

(1) 创建名为TPCH的数据库。

(2) 在TPCH数据库中创建表。

2.2 掌握SQL的基本查询语句使用方法

(1) 单表查询

(2) 单表单条件查询

(3) 单表多条件查询

(4) 两表连接查询

(5) 单表自身连接查询

(6) 三表连接查询

(7) 四表连接查询

(8) 五表连接查询

(9) 六表连接查询

(10) 七表连接查询

3 实验要求

(1) 深入复习教材第三章SQL有关数据库定义和基本查询SQL语句,理解关系代数表达式如何使用基本的SQL查询语句实现。

(2) 通过企业管理器添加数据,或者通过其他的数据自动产生工具自动添加数据,以便进行查询。如果是手动添加数据,请以你班同学当做顾客,国家和地区表的数据参照附件3表中的数据录入(全部或部分数据即可),请从网上搜集尽量真实的零件和供应商信息添加到相应的表中,最后根据购物常识添加订单及其明细信息。

(3) 针对TPCH数据库模式设计各种基本查询语句,每种类型的基本查询至少要设计一个查询,描述清楚查询要求,运行你所设计的查询语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附2所列示例查询做实验。

(4) 实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。

4 实验步骤

4.1 掌握SQL的DDL使用方法

(1) 创建名为TPCH的数据库。

(2) 在TPCH数据库中创建表。

4.2 掌握SQL的基本查询语句使用方法

(1) 单表查询(实现投影操作)(如下图)

(2) 单表单条件查询(实现选择操作)(如下图)

(3) 单表多条件查询

(4) 两表连接查询(实现笛卡尔积操作)(如下图)

(5) 两表连接查询(实现普通连接操作,任意两个列做大于、小于等连接操作)(如下图)

(6) 两表连接查询(实现等值连接操作)

(7) 两表连接查询(实现自然连接操作)

(8) 单表自身连接查询

(9) 三表连接查询

(10)四表连接查询

查询顾客"苏举库"订购的订单编号、总价及其订购的零件供应价格、数量和实际价格。

(11)五表连接查询

查询顾客"苏举库"订购的订单编号、总价及其订购的零件名称、数量和实际价格。

(12)六表连接查询

查询顾客"苏举库"订购的订单编号、总价及其订购零件的供应商名称、零件名称、数量、实际价格。

(13)七表连接查询

查询中国顾客订购的订单编号、总价及其订购零件的供应商名称、零件名称、数量、实际价格。

(14)八表查询

查询亚洲顾客订购的订单编号、总价及其订购零件的供应商名称、零件名称、数量、实际价格。

5 总结与体会

5.1 实验中出现的问题及其解决方案

1.在连接表时,忘记了在where语句后面添加主码与外码相等的条件,在老师的提醒下成功改正。

5.2 总结

  1. 在书写语句时,要考虑全面,考虑到各种条件,否则容易出错或落下某一条件。

  2. 要熟知各种语句,方便编写

附1:TPC-H数据库模式SQL语句

CREATE TABLE supplier (

suppkey INTEGER,

name CHAR(25),

address VARCHAR(40),

nationkey INTEGERR,

phone CHAR(15),

acctbal REAL,

comment VARCHAR(101)) ;

CREATE TABLE part (

partkey INTEGER,

name VARCHAR(55),

mfgr CHAR(25),

brand CHARE(10),

type VARCHAR(25),

size INTEGER,

container CHAR(10),

retailprice REAL,

comment VARCHAR(23));

CREATE TABLE partsupp (

partkey INTEGER,

suppkey INTEGER,

availqty INTEGER,

supplycost REALe,

comment VARCHAR(199));

CREATE TABLE customer (

custkey INTEGER,

name VARCHAR(25),

address VARCHAR(40),

nationkey INTEGER,

phone CHAR(15),

acctbal REAL,

mktsegment CHAR(10),

comment VARCHAR(117));

CREATE TABLE orders (

orderkey INTEGER,

custkey INTEGER,

orderstatus CHAR(1),

totalprice REAL,

orderDATE DATE,

orderpriority CHAR(15),

clerk CHAR(15),

shippriority INTEGER,

comment VARCHAR(79));

CREATE TABLE lineitem (

orderkey INTEGER,

partkey INTEGER,

suppkey INTEGER,

linenumber INTEGER,

quantity REAL,

extendedprice REAL,

discount REAL,

tax REAL,

returnflag CHAR(1),

linestatus CHAR(1),

shipDATE DATE,

commitDATE DATE,

receiptDATE DATE,

shipinstruct CHAR(25),

shipmode CHAR(10),

comment VARCHAR(44));

CREATE TABLE nation (

nationkey INTEGER,

name CHAR(25),

regionkey INTEGER,

comment VARCHAR(152));

CREATE TABLE region (

regionkey INTEGER,

name CHAR(25),

comment VARCHAR(152));

相关推荐
Raymond运维5 小时前
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
linux·运维·数据库·mysql
高山上有一只小老虎5 小时前
如何在DBeaver中配置高斯数据库的连接
数据库
云飞云共享云桌面5 小时前
东莞精密机械制造工厂如何10个SolidWorks共用一台服务器资源
java·运维·服务器·网络·数据库·电脑·制造
ActionTech5 小时前
2025 年 9 月《大模型 SQL 能力排行榜》发布,新增 Kimi K2 最新版测评!
数据库·sql·ai·oracle
九皇叔叔6 小时前
Linux 系统配置 NTP 服务:轻松同步阿里云时间服务器
linux·服务器·阿里云
lang201509286 小时前
掌握MyBatis Java API:高效操作数据库
java·数据库·mybatis
恒创科技HK6 小时前
香港服务器速度快慢受何影响?
运维·服务器·前端
Mr.wangh6 小时前
Redis作为分布式锁
数据库·redis·分布式
wanhengidc6 小时前
移动端云手机的优势都有哪些?
运维·服务器·游戏·智能手机·云计算
半夏知半秋6 小时前
skynet debug_console控制台中debug指令使用
服务器·开发语言·学习·lua