- 博客(38)
- 收藏
- 关注
原创 SQL第19课——使用存储过程
各种DBMS对存储过程的实现不一,需要根据使用的DBMS来参考具体的DBMS文档。存储过程的执行远比编写要频繁得多,用execute接受存储过程名和需要传递给它的任何参数。2. 当物品有库存时,需要预定,不再出售给别人,并且减少物品数据反映正确的库存量;3. 将新添加的东西插入到需要插入的表中,在合适的列中存储生成的主键和传递的数据。3. 哪些物品入库(可以立即发货),哪些物品退订,需要通知相应的顾客。到目前为止,使用的大多数SQL语句都是针对一个或多个表的单条语句。需要更高的技能和更丰富的经验。
2024-10-20 18:49:52
735
原创 SQL第18课挑战题
1. 创建一个名为customerswithorders的视图,其中包含customers表中的所有列,但仅仅是那些已下订单的列。提示:可以在orders表上使用join来仅仅过滤所需的顾客,然后使用select来确保用有正确的数据。
2024-10-17 16:21:23
313
原创 SQL第18课——使用视图
视图仅仅是用来查看存储在别处数据的一种设施,本身不包含数据,返回的数据是从其他表中检索出来的。在添加或更改这些表中的数据时,视图将返回改变过的数据。假设经常需要这个格式的结果,不必在每次需要时执行这种拼接,而是创建一个视图,使用它即可。创建不绑定特定数据的视图是一种好办法,这样做不需要创建和维护多个类似视图。视图可以返回与底层表的表示和格式不同的数据。例:创建一个名为productcustomers的视图,联结三个表。视图是虚拟的表,只包含使用时,动态检索数据的查询。,只能用于创建不存在的视图。
2024-10-17 16:02:20
1339
原创 SQL第17课挑战题
1. 在Vendors表中添加一个网站列(vend_web)。需要一个足以容纳URL的大文本字段。2. 使用update语句更新vendor记录,以便加入网站(可以编造任何地址)
2024-10-12 16:30:55
306
原创 SQL第17课——创建和操纵表
使用交互式工具实际上就是使用SQL语句,这些语句不是用户自己写的,是界面工具会自动生成并执行相应的SQL语句。不同的DBMS的create table的语法有所不同,这条语句在绝大多数DBMS中有效,但对于DB2,必须从最后一列中去掉null.创建新表,指定的表名必须不存在,防止意外覆盖已有的表,SQL要求首先手工删除该表,再重建,而不是简单地用创建表语句覆盖它。每一列的定义都含有关键字not null,这会阻止插入没有值的列,如果插入没有值的列,讲返回错误且插入失败。就是没有值或者缺值。
2024-10-12 16:10:37
1293
原创 SQL第16课挑战题
1. 美国各州的缩写应始终用大写。更新所有美国地址,包括供应商状态(Vendors表中的vend_state)和顾客状态(customers表中的cust_state),使它们均为大写。2. 第15课挑战题1要求将自己添加到customers表中,现在删除自己,确保使用where子句(先用select对其进行测试,不然容易删除所有顾客)标准答案:加入的是42,所以删42。
2024-10-10 23:16:48
581
原创 SQL第16课——更新和删除数据
如从Products表中删除一个产品,但这个产品用在orderitems的已有订单中,那么delete语句将抛出错误并中止。null去除cust_email列中的值,与保存空字符串不同(' ',是一个值),null表示没有值。没有where子句的话,DBMS将会用这个电子邮件地址更新customers表中的所有行。有的SQL实现支持在update语句中使用from子句,用一个表的数据更新另一个表的行。在update语句中使用子查询,使得能用select语句检索出的数据更新列数据。1. 删除特定的行;
2024-10-10 22:54:36
1403
原创 SQL第15课挑战题
1. 使用insert和指定的列,将你自己添加到customers表中。明确列出要添加哪几列,且仅需要列出你需要的列。2. 备份order表和orderitems表。
2024-10-09 20:27:11
679
原创 SQL第15课——插入数据
使用insert的推荐方法是明确给出表的列名,这种表示可以只给某些列提供值,给其他列不提供值。如下,不提供cust_contact, cust_email列名,也不提供这两列的提供值。insert还存在另一种形式,利用它将select语句的结果插入表中,这就是insert select。将一个表的内容复制到一个全新的表(运行中创建的表),使用create select语句。select是最常用的语句,但是还有3个常用的SQL语句,第一个就是insert,insert语法,要求制定表名和插入到新行中的值。
2024-10-09 19:58:39
1281
原创 SQL第14课挑战题
1. 将两个select语句结合起来,以便从OrderItems表中检索产品ID(prod_id)和quantity。其中,一个select语句过滤数量为100的行,另一个select语句过滤ID以BNBG开头的产品。按产品ID对结果进行排序。3. 组合products表中的产品名称(prod_name)和customers表中的顾客名称(cust_name)并返回,然后按产品名称对结果进行排序。这是个错题,因为两个select 检索的列名得相同。2. 重新第一题,仅使用单个select语句。
2024-10-08 20:19:25
541
原创 SQL第14课——组合查询
union all为union的一种形式,它完成where子句完成不了的工作。组合相同表的两个查询所完成的工作与具有多个where子句条件的一个查询所完成的工作相同。union从查询结果集中自动去除了重复的行,如果想返回所有匹配行,可使用union all而不是union。对于较复杂的过滤条件,或者从多个表(而不是一个表)中检索数据的情形,使用union可能会使处理更简单。这些组合查询通常称为。在用union组合查询时,只能使用一条order by子句,必须位于最后一条select语句之后。
2024-10-08 20:00:37
1802
原创 SQL第13课挑战题
5. 列出供应商(vendors表中的vend_id)及其可供产品的数量,包括没有产品的供应商。3. 使用outer join联结products表和orderitems表,返回产品名称(prod_name)和与之相关的订单号(order_num)的列表,并按商品名称排序。1. 使用inner join,以检索每个顾客的名称(customers表中的cust_name)和所有的订单号(orders表中的order_num).4. 修改上一题中创建的SQL语句,使其返回每一项产品的总订单数(不是订单号)。
2024-10-07 20:43:12
527
原创 SQL第13课——创建高级联结
第12课只介绍了内联结或等值联结的简单联结,现在介绍三种其他联结:自联结(self-join), 自然联结(natural join), 外联结(outer join).与左外联结或右外联结包含一个表的不关联的行不同,全外联结包含两个表的不关联的行。自然联结要求只能选择那些唯一的列,一般通过对一个表使用通配符(select * ),而对其他表的列使用明确的子集来完成。本课讲另外一些联结(含义和使用方法),如何使用表别名,如何对被联结的表使用聚集函数。right:指出的是outer join右边的表,
2024-10-07 20:13:32
1149
原创 SQL第12课挑战题
有两种方法可以执行此操作:使用orderitems表的子查询来创建ordertotal列,或者将orderItems表与现有表联结并使用聚合函数。要使用这些表,还需要包括orders表(因为customers表与order items表不直接相关,customers表与orders表相关,而orders表与order items表相关)。1. 返回customers表中的顾客名称(cust_name)和Orders表中的相关订单号(order_num),并按顾客名称再按订单号对结果进行排序。
2024-10-06 22:12:25
476
1
原创 SQL第12课——联结表
Vendors表包含所有供应商信息,每个供应商占一行,具有唯一的标识,此标识称为主键(primary key).可以是供应商ID或任何其他唯一值。相应的笛卡儿积不是我们想要的,返回的数据用每个供应商匹配了每个产品,包括了供应商不正确的产品(即使供应商根本就没有产品)Products表只存储产品信息,除了存储供应商ID(Vendors表的主键)外,不存储其他有关供应商的信息。一个产品目录的数据库表,一类物品占一行,每一行对物品的介绍包含:产品描述,价格,以及生产该产品的供应商。vend_name来自一个表;
2024-10-06 20:20:40
1453
原创 SQL第11课挑战题
使用子查询来确定哪些订单(在orderitems中)购买了prod_id为br01的产品,然后从orders表中返回每个产品对应的顾客ID(cust_id)和订单日期(order_date)。返回顾客ID(orders表中的cust_id),并使用子查询返回total_ordered以便返回每个顾客的订单总数。1. 使用子查询,返回购买价格为10美元或以上产品的顾客列表。需要使用orderitems表查找匹配的订单号(order_num),然后使用order表检索这些匹配订单的顾客ID(cust_id).
2024-09-30 11:17:11
407
原创 SQL第11课——使用子查询
每个步骤可以单独作为一个查询来执行,可以把一条select语句返回的结果用于另一条select语句的where子句。select语句是SQL的查询,迄今为止所有的select语句都是简单查询,即从单个数据库表中检索数据的单条语句。SQL还允许创建子查询(subquery),即嵌套在其他查询中的查询。使用子查询并不总是执行这类数据检索的最有效方法,更好的方法,以后论述。3. 检索前一步骤返回的所有顾客ID的顾客信息——Orders表中。2. 对于检索出的每个顾客,统计其在orders表中的订单数目。
2024-09-30 09:46:01
1025
1
原创 SQL第10课挑战题
4. 返回总价至少为1000的所有订单的订单号(orderitems表中的order_num).需要计算总和item_price乘以quantity,按照订单号对结果进行排序。2. 返回名为cheapest_item的字段,该字段包含每个供应商成本最低的产品(使用products表中的prod_price),然后从最低成本到最高成本对结果进行排序。1. 从OrderItems表中返回每个订单号order_num各有多少行数order_lines,并按order_lines对结果进行排序。
2024-09-28 20:17:54
499
原创 SQL第10课——分组数据
group by 子句按照order_num分组数据,以便count(*)函数能够返回每个订单中的物品数目,having子句过滤数据,使得只返回包含三个或更多物品的订单,最后使用order by子句排序输出。group by分组的数据虽然带有一定的顺序输出的,但是不是特意的,不具有排序的功能,所以对输出的结果需要满足一定的顺序输出的话,需要设定order by子句。一般在使用group by子句时候,应该也给出order by子句,保证数据正确排序的唯一方法。如何分组数据,方便汇总表内容的子集。
2024-09-28 19:43:41
692
原创 SQL第9课挑战题
3. 确定products表中价格不超过10美元的最贵产品的价格(prod_price)。将计算所得的字段命名为max_price。1. 确定已售出产品的总数(使用orderitems中的quantity列)2. 确定已出售产品(prod_id)BR01的总数。
2024-09-27 11:08:05
252
原创 SQL第9课——汇总数据
avg()函数只能计算一个列的平均值,计算多个列,就需要多个avg()函数;列名必须作为函数参数给出。distinct只能用于count(),不能用于count(*)。sum(quantity)返回订单中所有物品数量之和,where子句保证只统计某个物品订单中的物品。在用于文本数据时,max()返回按该列排序后的最后一行。(9.21-----9.25在打研究生数模比赛,所以断更了几天,sorry)对行数计数,计算列值之和,得到列的平均值,返回所有列的平均值。确定表中行的数目或符合特定条件的行的数目。
2024-09-27 10:59:07
860
原创 SQL第8课挑战题
1. 返回顾客ID(cust_id),顾客名称(cust_name)和登录名(user_login),其中登录名全部为大写字母,并由顾客联系人的前两个字符(cust_contact)和其所在城市的前三个字符(cust_city)组成。2. 返回2020年1月的所有订单的订单号(order_num)和订单日期(order_date),并按照订单日期排序。
2024-09-20 19:36:45
252
原创 SQL第八课——使用函数处理数据
使用soundex()函数进行搜索,它匹配所有发音类似于Michael Green的联系名。如果决定使用函数,应该保证做好代码注释,以便以后自己或者他人能确切知道这些SQL代码含义。上一课中提过一个文本处理函数例子,Rtrim()函数去除列值右边的空格。日期和时间函数在SQL中具有重要的作用,但是它们很不一致,可移植性最差。函数一般是在数据上执行的,为数据的转换和处理提供了方便。在主要DBMS的函数中,数值函数是最一致,最统一的函数。Oracle使用多个函数,每种类型的转换有一个函数;
2024-09-20 19:06:02
860
原创 SQL第7课挑战题
1. 从vendors表中检索vend_id, vend_name, vend_address和vend_city ,将vend_name重命名为vname, 将vend_city重命名为vcity, 将vend_address重命名为vaddress。2. 从products表中返回prod_id, prod_price, sale_price。sale_price是一个包含促销价格的计算字段,所有产品降价10%。第一张图有个小问题,vname应该是vend_name的重命名。
2024-09-19 21:32:55
348
原创 SQL第7课——创建计算字段
此报表需要一个值,但是表中数据存储在两个列vend_name和vend_country中,并且,需要用括号将vend_country括起来。存储在表中的数据都不是应用程序所需要的,就需要直接从数据库中检索出转换,计算或格式化过的数据,而不是检索出数据。这个新计算列的名字是没有的,它只是一个值,但是未命名的列不能用于客户端应用中,因为客户端没有办法引用它。as vend_title,它只是SQL创建一个包含指定计算结果的名为vend_title的计算字段。将值联结到一起(将一个值附加到另一个值)构成单个值。
2024-09-19 21:15:49
504
原创 SQL第6课挑战题
3. 从products表中检索产品名称和描述,仅返回描述中同时出现toy和carrots的产品。请使用and和两个like比较。1. 从products表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中包含toy一词的产品。4. 从products表中检索产品名称和描述,仅返回在描述中以先后顺序同时出现toy和carrots的产品。2. 从products表中检索产品名称和描述,仅返回描述中未出现toy一词的产品,按产品名称对结果进行排序。
2024-09-18 10:09:46
262
原创 SQL第6课——用通配符进行过滤
通配符是SQL的where子句中有特殊含义的字符,为在搜索子句中使用通配符,必须使用like操作符!这课介绍什么是通配符,如何使用通配符,怎样使用like操作符进行通配搜索,以便对数据进行复杂过滤。,这种情况下'F%y'只匹配以F开头,结尾就不是以y结尾,无法匹配出想要的结果。like指示DBMS,后跟的搜索模式利用通配符匹配而不是简单的相等匹配进行比较。用来匹配值的一部分的特数字符,可以创建比较特定数据的搜索模式。2. 要用,也尽量不要用在搜索模式的开始处,搜索起来是最慢的;%:任何字符出现任意次数。
2024-09-18 09:54:06
577
原创 决策树,SVM,KMeans,CNN算法案例以及实现代码
针对这四种算法,整理出每一种算法的具体应用案例分析,以及具体的数据集针对算法的操作流程和结果分析。
2024-09-17 19:26:41
651
原创 SQL第5课挑战题
2. 查找所有至少订购了总量100个的BR01,BR02或BR03的订单。需要返回orderitems表中的订单号(order_num),产品ID(prod_id)和数量,并按照产品ID和数量进行过滤。1. 从vendors表中检索供应商名称,仅返回加利福尼亚州的供应商(需要按国家[USA]和州[CA]进行过滤,没准其他国家也存在一个加利福尼亚州)3. 返回所有价格在3美元到6美元之间的产品名称(prod_name)和价格(prod_price)。使用and,然后按价格对结果进行排序。
2024-09-17 15:40:08
332
原创 SQL第5课——高级数据过滤
这个例子SQL理解为“由供应商brs01制造的价格为10美元以上的所有产品,以及由供应商dll01制造的所有产品,而不管其价格如何”。where子句可以包含任意数目的and和or操作符,允许两者结合以进行复杂,高级的过滤。一个and子句,只过滤两个条件,增加多个过滤条件,每个条件间都要使用and关键字。用在where子句中的关键字,用来指示检索满足所有给定条件的行。where子句中用来指定要匹配值的清单的关键字,功能与or相当。where子句中使用的关键字,用来检索匹配任一给定条件的行。
2024-09-17 15:11:36
864
原创 SQL第4课挑战题
3. 结合第3课和第4课,从orderitems表中检索出所有不同订单号,其中包含100个或更多产品。4. 返回products表中所有价格在3美元到6美元之间得产品名称和价格,然后按价格对结果进行排序。2. 从products表中检索产品ID和产品名称,只返回价格为9美元或价格更高得产品。1. 从products表中检索产品ID和产品名称,只返回价格为9.49美元的产品。
2024-09-16 11:40:19
402
原创 SQL第4课——过滤数据
这个例子使用了简单的相等检验:检查这一列的值是否为指定值。,其语法与其他where子句的操作符稍有不同,需要两个值,一个范围的开始值,一个范围的结束值。,将值与字符串类型的列进行比较,需要用限定引号;null(无值,no value),与字段包含0,空字符串或仅仅包含空格不同。相等检验时看到的第一个where子句,它确定一个列是否包含指定的值。between必须与and连用(更英语一样),匹配范围中的所有值,用来检查具有null值得列,不能用是否等于,应该。根据where子句中指定的搜索条件进行过滤,
2024-09-16 11:06:02
842
原创 SQL第3课挑战题
3. 显示orderitems表中数量和价格(item_prices),并按照数量由多到少,价格由高到低排序。2. 从orders表中检索顾客ID和订单号,并先按顾客ID对结果进行排序,再按照订单日期倒序排列。1. 从Customers中检索所有顾客名称(cust_name),并按从Z到A的顺序显示结果。
2024-09-16 10:22:36
225
原创 SQL第三课——排序检索数据
仅在多个行具有相同的prod_price值时,才对产品按prod_name进行排序。如果prod_price列中所有的值都是唯一的,则不会按prod_name排序。只对prod_price列指定desc,对prod_name列不指定。prod_price列以降序排序,prod_name(在每个价格内)仍然按标准的升序排序。如果不排序,数据一般以它在表中出现的顺序显示,有可能是数据最初添加到表中的顺序。3. 进行排序的列不在select清单中,不能用这个技术。子句取一个或多个列的名字,据此对输出进行排序。
2024-09-15 11:27:20
937
原创 SQL第二课挑战题
2. 检索列出orderitems表中已经订购产品(prod_id)的清单,不用列每个订单,只列出不同产品的清单。3. 检索customers表中所有列,在编写另外的select语句,仅检索顾客的ID。使用注释,注释第一条语句。1.从Customers表中检索所有ID。
2024-09-14 19:56:55
248
原创 SQL第二课——创建数据库,检索数据
不同的DBMS和客户端显示数据的方式略有不同(如对齐格式不同,小数位数不同)。最好别使用*通配符,虽然能省事,不用明确列出所需列,但检索不需要的列通常会降低检索速度和应用程序的性能。值得注意得是,软件自带的sys是一个空的数据库,所以首先需要创建一个新的数据库,在。DISTINCT,指示数据库只返回不同的值(具有唯一性),必须放在列名的前面。注释从/*开始,到*/结束,中间的任何内容都是注释。列的顺序一般是表中出现的物理顺序,但并不总是如此。第一个数字是检索的行数,第二个数字是指从哪开始。
2024-09-14 19:39:33
980
决策树算法,支持向量机SVM算法,KMeans聚类算法,CNN神经网络算法,4个算法的具体案例以及代码
2024-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人