实验一 SQL语言的使用 一 相关知识 SQL语言由4部分组成:数据定义语言DDL、数据操纵语言DML、数据控制语言DCL和其他,其功能如下: (1)数据定义语言DDL:主要用于定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引等,扩展的DDL还包括存储过程、函数、对象、触发器等的定义。 (2)数据操纵语言DML:主要用于对数据库中的数据进行检索和更新两大类操作,其中更新操作包括插入、删除和更新数据。 (3)数据控制语言DCL:主要用于对数据库中的对象进行授权、用户维护(包括创建、修改和删除)、完整性规则定义和事务定义等。 (4)其他:主要是嵌入式SQL语言和动态SQL语言的定义,规定了SQL语言在宿主语言中使用的规则。扩展的SQL还包括数据库数据的重新组织、备份和回复等。 二 数据操纵语言练习 2.1 订单管理数据库 订单管理数据库由5张表组成,分别为员工表、客户表、商品表、订单主表和订单明细表。 员工表中记录当前销售公司所有的员工详细信息,客户表中记录与当前销售公司有业务往来的客户单位信息,商品表中记录当前销售公司可销售的商品,客户每次的购买活动形成一条订单记录,并指定一名销售公司员工对其进行负责,一个订单可能同时购买多种商品,所以订单主表中只记录以订单为单位的相关信息,而订单明细中再记录具体商品的销售情况。 2.2 实验内容 2.2.1 查询操作 2.2.1.1 单表查询 (1)查询全部职工的基本信息 (2)查询所有职工的部门、职工号、姓名和薪水 (3)查询全体职工的姓名、年龄、所属部门,并用汉语显示表头信息 (4)查询1973年出生且为职员的员工信息 (5)查询业务科或财务科的职工姓名、性别和所在部门,仅显示前面5位职工 (6)查询薪水为2000或4000的职工编号、姓名、所在部门和薪水 (7)查询薪水在3000~4000的职工姓名和薪水 (8)查询薪水不在3000~4000的职工姓名和薪水 (9)查询所有姓张的职工姓名、所属部门和性别 (10)查询所有姓张且全名为三个汉字的职工姓名 (11)查询既不在业务科也不在财务科的职工姓名、性别和所在部门 (12)查询1991年被雇佣的职工号、姓名、性别、电话号码、出生日期以及年龄 (13)查询6月出生的员工编码、姓名、出生日期,并按出生日期的降序输出 (14)查询职工工资最高的前10%的职工编号、职工姓名和工资 (15)查询每个业务员的订单数量 (16)统计在业务科工作且在1973年或1967年出生的员工人数和平均工资 (17)统计每种商品的销售数量和金额,并按销售金额的升序排序输出 (18)查询订单中至少包含3种(含3种)以上商品的订单编号及订购次数,且订购的商品数量在3件(含3件)以上。 2.2.1.2 简单表链接 (1)查询住址在上海的员工所做的订单,结果输出员工编号、姓名、订单编号、客户编号和订单日期,并按客户编号排序输出。 (2)查找订购了“32M DRAM”的商品的客户编号、客户名称、订单编号、订货数量和订货金额,并按客户编号排序输出。 (3)查询与“张晓梅”在同一部门工作的员工姓名、所属部门、性别和出生日期,并按所属部门排序输出 (4)查询1973年出生的员工所订购产品的订单,输出结果位员工编号、姓名、所属部门、订单编号、客户名称、订单日期,按员工编号排序输出。 (5)统计订单中每个商品具有销售数量大于4的订单的订单个数,要求显示商品编号、商品名称、订单数(提示:外连接) 附加:先分析结果,再运行查看分析是否正确 Select a.productNo,productName,quantity,price From OrderDetail AS a LEFT JOIN Product AS b ON (a.productNo=b.ProductNo) AND quantity>4 Order By a.productNo 把LEFT JOIN 换成 RIGHT JOIN 及FULL JOIN (6)查询每个客户订购商品的具体订单信息,输出结果为客户编号、客户名称、商品编号、商品名称、数量、单价和金额 (7)查询“52倍速光驱”的销售情况,要求显示相应的销售员的姓名、性别、销售日期、销售数量和金额。 2.2.1.3 简单嵌套查询 (1)查询员工“张小娟”所做的订单信息 (2)查询没有订购商品的且在北京地区的客户编号、客户名称和邮政编码,并按邮政编码降序排序 (3)查询订购了“32M DRAM”商品的订单编号、订货数量和订货单价 (4)查询与员工编号E2008005在同一部门的员工编号、姓名、性别、所属部门 (5)查询即订购了P20050001商品,又订购了P20070002商品的客户编号、订单编号和订单金额。 (6)查询没有订购“52倍速光驱”或“17寸显示器”的客户编号、客户名称。 2.2.1.4 复杂嵌套查询 (1)查找至少有2次销售记录的业务员名单和销售日期 (2)查找销售金额最大的客户名称和总订单金额 (3)查找销售总额少于5000元的销售员编号、姓名和销售额 (4)查找至少订购了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额 (5)查找同时订购了商品编号为“P20070002”和商品编号为“20070001”的商品的客户编号、客户姓名、商品编号、商品名称和销售数量,按客户编号排序输出 2.2.1.5 存在量词运算 (1)查询订购了“键盘”商品的客户姓名、订货数量和订货日期 (2)查询没有订购“键盘”商品的客户名称 (3)查询至少销售了5种商品的销售员编号、姓名、商品名称、数量及相应的单价,并按销售员编号排序输出 (4)查询没有订购商品的客户编号和客户名称 (5)查询订购了所有已列商品的客户名称 (6)查询至少包含了“世界技术开发公司”所订购的商品的客户编号、客户名称、商品编号、商品名称、数量和金额。 2.2.2 更新操作 (1)分别给5张表增加元组信息,具体信息任意 (2)将发票号码为I000000001的订单从数据库中删除,同时删除具体订货信息 (3)将上海的客户住址全部改为深圳 (4)将工作满5周年的员工薪水上调5%,工作满10周年的员工薪水上调8% (5)将客户c20090001在2008年1月购买的所有商品单价打9折 (6)根据订单明细表,修改订单主表的订单金额信息 三 数据定义语言及视图练习 3.1数据库 教材第二章第5题 3.2实验内容 (1)定义数据库 (2)定义表,并声明主键和外键 (3)在供应商表中按照所在城市建立一个非聚集索引 (4)修改供应商表中供应商状态Status属性为vChar(6)类型 (5)为三建工程项目建立一个供应情况的视图,包括供应商名、零件名和零件数量。并针对该视图完成以下操作 ①显示使用的各种零件名及零件数量 ②显示供应商精益的供应数量 ③更改供应商精益的供应零件从“螺母”改为“齿轮” ④删除供应商丰盛泰的对齿轮的供应 ⑤修改视图增加对供应项目名的显示 ⑥增加供应商丰盛泰对造船厂项目的螺母供应量为700 (6)用SQL语句重新定义第二部分的订单表:订单编号的构成:年月日流水号共12位,如200708090001;订单编号、客户编号、员工编号、发票号码设为NOT NULL;业务员必须是员工;订货日期和出货日期的默认值(DEFAULT)为系统当前日期;订单金额默认值为0,;发票号码建立UNIQUE约束 本文来源:https://www.wddqw.com/doc/5ef89700677d27284b73f242336c1eb91a3733cd.html