阿里云天池SQL训练营 - Task 1~5练习题

本文详述了阿里云天池SQL训练营的任务1至5,涵盖CREATE TABLE、ALTER TABLE、DELETE、恢复表、SELECT语句的使用,以及视图创建、数据插入、聚合函数、关联子查询和窗口函数的应用,旨在提升SQL操作和数据库管理能力。

本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql

Task 1练习题

3.1

编写一条 CREATE TABLE 语句,用来创建一个包含表 1-A 中所列各项的表 Addressbook (地址簿),并为 regist_no (注册编号)列设置主键约束

表1-A 表 Addressbook (地址簿)中的列

Answer

CREATE TABLE Addressbook
 (
 regist_no INTEGER NOT NULL,
 name VARCHAR(128) NOT NULL,
 address VARCHAR(256) NOT NULL,
 tel_no CHAR(10) ,
 mail_address CHAR(20) ,
 PRIMARY KEY (regist_no));

输出结果

3.2

假设在创建练习1.1中的 Addressbook 表时忘记添加如下一列 postal_code (邮政编码)了,请把此列添加到 Addressbook 表中。

列名 : postal_code

数据类型 :定长字符串类型(长度为 8)

约束 :不能为 NULL

Answer

ALTER TABLE Addressbook ADD postal_code CHAR(8) NOT NULL;

输出结果

 3.3

编写 SQL 语句来删除 Addressbook 表。

Answer

DROP TABLE Addressbook;

输出结果

无,再次查询数据库会提示该表不存在

3.4

编写 SQL 语句来恢复删除掉的 Addressbook 表。

Answer

没有可以恢复数据表的SQL语句,千万注意不要误删表

Task 2练习题

练习题1

编写一条SQL语句,从product(商品)表中选取出“登记日期(regist在2009年4月28日之后”的商品,查询结果要包含product_name和regist_date两列。

Answer

SELECT product_name, regist_date
 FROM product
 WHERE regist_date > '2009-04-28';

输出结果

 

练习题2

请说出对product 表执行如下3条SELECT语句时的返回结果。

 ①

SELECT *
  FROM product
 WHERE purchase_price = NULL;

SELECT *
  FROM product
 WHERE purchase_price <> NULL;

SELECT *
  FROM product
 WHERE product_name > NULL;

Answer

上面3条语句的是有问题的,返回结果为空,与实际不符。实际上在选取NULL 的记录时不能用=,<>,>=,>,<=,<这类常见比较运算符,应该使用IS NULL。

  • SELECT子句中可以使用常数或者表达式。
  • 使用比较运算符时一定要注意不等号和等号的位置。
  • 字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。
  • 希望选取NULL记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL运算符。

练习题3

代码清单2-22(2-2节)中的SELECT语句能够从product表中取出“销售单价(saleprice)比进货单价(purchase price)高出500日元以上”的商品。请写出两条可以得到相同结果的SELECT语句。执行结果如下所示。

product_name | sale_price | purchase_price 
-------------+------------+------------
T恤衫         |   1000    | 500
运动T恤       |    4000    | 2800
高压锅        |    6800    | 5000

Answer

 ①

SELECT product_name, sale_price, purchase_price
 FROM product
 WHERE sale_price >= purchase_price + 500;

SELECT product_name, sale_price, purchase_price
 FROM product
 WHERE sale_price - 500 >= purchase_price;

输出结果

 

练习题4

请写出一条SELECT语句,从product表中选取出满足“销售单价打九折之后利润

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值