SQL13日练习汇总

SQLDAY1:

Q1:简单说说关系型数据表和 Excel 表的异同。

同:都是二维表格式,都有行和列,行列交叉都是单元格,单元格内都储存数据。
异:关系型数据表不能合并单元格;关系型数据表的每一列都有明确的数据类型,不允许出现数据类型以外的数据。
Q2:列举几个这节课讲到的小tip或者注意事项。
1、访问关系型数据表的列,可以用<表名>.<列名>的方式
2、MySQL命令行,可以用PgUp 调出之前输入过的命令
3、MySQL的语句都是用“;”结尾的
4、MySQL的语句是不区分大小写的,但是也制定了一些特有的书写规则

SQLDAY2:

Q1:将SQLData 文件中的 5个sheet 都导入navicat中,并列举出相关注意事项。
1、Excel文件一定要是打开的
2、数据内容一定不能有特殊格式,比女加粗、比如框线
3、注意字段格式的设置,日期的格式、价格的格式、整数的格式
4、注意主键的设置,设置为第1列

Q2:总结第一节课在MySQL 中演示的 3条命令,以及第二节课上重点提到的 1条命令,按照书写规则分别写出,并指出其关键字和操作对象。
1、SHOW DATABASES;
关键字:SHOW DATABASES
操作对象:无
2、CREATE DATABASE sqllearning;
关键字:CREATE DATABASE
操作对象: sqllearning
3、USE sqllearnig;
关键字: USE
操作对象: sqllearning
4、SELECT prod_name FROM prod_info;
关键字:SELECT…FROM…
操作对象:prod_name、prod_info

Q3:SQL的语句类型有哪些?他们对应的操作对象分别是什么?

1、DDL:数据定义语言,操作对象是数据库、数据表
2、DML:数据操纵语言,操作对象是数据表中的数据(行、列)
3、DCL:数据控制语言,操作对象是数据库中的操作(特殊)

SQLDAY3:

Q1:写出单表查询的两个子句,并指出其关键字和操作对象。
1、子句1-SELECT[查询列
关键字–SELECT
操作对象–查询的列
2、子句2-FROM[数据表]
关键字–FROM
操作对象–数据表

Q2:写出对 milk_tea表的所有列查询语句,要求有至少三种写法。
在这里插入图片描述

Q3: 从表 milk_tea 中查询出商品名称(prod_name)、采购价(in_price)、销售价(sale_price)三个字段,同时增加以下几列并为其命名: “9折” (discount1), 9折后的销售价(new_sale1), 9折后的销售利润(new_profit1), “110%”(discount2),上浮 10%后的销售价(new_sale2), 上浮 10%后的销售利润(new_profit2)。

在这里插入图片描述

SQLDAY4:

Q1:对supplier_info表中的信息进行拼接,分别达到如下效果。
1、查询所有供应商信息,展示结果要求为“xxx供货商的地址为xxxxxxx,联系电话为xxxxxx。”,举例:“南京第一家供货商的地址为南京市光明大道 001 号,联系电话为1338888001。”,并将该列命名为“供应商信息”。
2、查询所有供应商信息,展示结果要求为“xxx供货商 | (地址) |(电话)。”,举例:“南京第一家供货商 | 南京市光明大道001 号 | 1338888001”,并将该列命名为“供应商信息”。( 2种方法)

在这里插入图片描述
在这里插入图片描述

Q2:按要求进行排序操作。
1、对产品信息表中的产品采购价按升序排列
2、对产品信息表中的产品销售价按降序排列
3、对产品信息表中的产品销售价按升序排列,同时对采购价按降序排列

在这里插入图片描述在这里插入图片描述在这里插入图片描述

SQLDAY5:

**Q1:写出过滤子句的结构(包括关键字和操作对象)以及该子句在整个语句中的位置。 **
结构:关键字WHERE
操作对象–过滤条件
位置:在SELECT …FROM…子句之后,ORDER BY …子句之前。

Q2:总结一下过滤子句(WHERE …)和排序子句(ORDER BY …)的异同。

异:意义不同。过滤子句是对行数据进行过滤,排序子句是对行数据进行排序。

同:都是非必需子句;都不能单独使用;都必须在SELECT…FROM 子句后面;过滤列或者排序列都可以不在SELECT部分展示;

**Q3:分别写出以下语句。 **
**1、 选出milk_tea 表的所有列。 **

SELECT * FROM milk_tea;

**2、 选出milk_tea 表的所有列,要求 sale_price不为空。 **

SELECT * FROM milk_tea WHERE sale_price IS NOT NULL;

3、 选出 milk_tea 表的所有列,并按 sale_price 列排序,sale_price 为空的话,按 10 处理。

SELECT * FROM milk_tea ORDER BY IFNULL (sale_price,10) ;

4、 选出 milk_tea 表的所有列,要求 sale_price 上浮 10%后大于 16。sale_price 为空的话,默认设置为 20。

 SELECT * FROM milk_tea WHERE IFNULL(sale_price,20) * 1.1 > 16;

5、 选出milk_tea 表的产品列,要求利润(sale_price – in_price)大于 5。如果 sale_price为空的话,默认设置为20。

SELECT prod_name FROM mike_tea WHERE IFNull(sale_price,20) - in_price >5 ;

6、 对5的结果按照sale_price倒序排列。

SELECT prod_name FROM mike_tea WHERE IFNull(sale_price,20) - in_price >5 ORDER BY sale_price DESC;

SQLDAY6:

Q1:写出 SQL语句中的通配符,及其用法。
1、下划线_:代表任意字符,且能代表的字符数仅为1。必须知道要代表的字符具体的位置。
2、百分号%:代表任意字符,且能代表的字符数为任意多个,包括0。

Q2:写出模糊查询的具体结构。
关键字(WHERE)+查询的列(字段名)+关键字(LIKE)+‘匹配文本’(含通配符)

Q3:写出以下语句。
**1、 从milk_tea表中找到产品名是‘薯’开头或者‘糖’结尾的。 **

SELECT * FROM mike_tea WHERE prod_name LIKE ‘薯%’ OR prod_name LIKE ‘%糖’;

**2、 从milk_tea表中找到产品名是‘薯’开头或者‘糖’结尾的,且产品名称只有2个字。 **

SELECT * FROM mike_tea WHERE prod_name LIKE ‘薯_’ OR prod_name LIKE ‘_糖’;

**3、 从milk_tea表中找到产品名是‘奶’开头并且‘茶’结尾的。 **

SELECT * FROM mike_tea WHERE prod_name LIKE ‘奶%’ AND prod_name LIKE ‘%茶’;

4、 从milk_tea表中找到销售价格不大于 10的产品。(2种写法)

SELECT * FROM mike_tea WHERE NOT sale_price >10;
SELECT * FROM mike_tea WHERE NOT sale_price <=10;

SQLDAY7:

Q1:总结课上讲到的几种数值型数据类型,并举例具体用法。示例:DEMICAL(5, 2),表示总长度 5位,小数点后2位,比如123.12、2.12。

1、INTEGER:表示整数型,正负数都可以,一般就写作INTEGER,比如1,23,-14,1000
2、DECIMAL:定点型,表示小数位数确定的小数,一般要求写明数据宽度,参考DECIMAL(5,2),表示总长度不超过5位,小数点后2位,比如123.12,2.12。
3、FLOAT:浮点型,表示小数位数不确定的小数,一般写作FLOAT,比如1.12,1.123,
但是也可以明确标出长度和小数位数,此时写作FLOAT(5,3),表示总长度不超过5位, 小数点后不超过3位,比如1.12,1.123。12.12。

Q2:总结课上讲到的几种文本型数据类型,并分析其使用场景。
1、CHAR:定长文本型。示例CHAR(10),表示字符总个数不超过10个,字符可以是英文.中文、数字或者特殊符号。如果不足10个,填充空格,比如‘home’、‘家春秋’。
2、VARCHAR:不定长文本型。示例VARCHAR(255),表示字符个数不超过255个。
CHAR型会按照定义长度填充字符,因此分配空间是固定的,适用于长度固定的字符串,比如手机号、身份证号,查找起来比较方法。但对于长度不固定的字符串,使用CHAR型会存在空间浪费情况。
VARCHAR型按照具体字符动态分配空间,适用于长度不固定的字符串,对空间浪费少。

Q3:新建一个叫做test_sjlx2的表,表内有两列分别为 id_date(数据类型 date), id_char(数据类型 varchar(255)), 表内数据分别为 id_date 列是“当时的日期”,“当时日期的后1天”,“当时日期的前1天”,“当时日期的后1个月”, id_char列是“123”,“ home”,“家春秋”,“今天星期五”。 并用 CHAR_LENGTH函数和 LENGTH 函数分别操作 id_char列,得出结果,并分析异同。

在这里插入图片描述

SQLDAY8:

Q1:使用聚合函数完成如下操作。
1、产品信息表中一共有多少产品?
2、有哪些产品类别,每个类别分别又有多少种产品?
3、一共有多少客户购买了商品?
4、哪些客户购买了商品,分别购买了多少?

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

Q2:使用WHERE和HAVING 对数据记录进行正确过滤。
1、各类别中,产品销售价在 10块以上的分别有多少?
2、各类别中,产品数量在 5件以上的分别有哪些?
3、购买商品超过5件的用户有哪些?

在这里插入图片描述在这里插入图片描述在这里插入图片描述

SQLDAY9:

Q1:总结一下子查询的几种类别,及分别的用法和特征(包括子查询返回值的样式、子查询在主查询语句中的位置)。
1、标量子查询:返回为一个值,可以作为常数处理。用作主查询语句的常数列(SELECT)、主查询语句的过滤条件(WHERE)、主查询语句分组的筛选条件(HAVING)。
2、关联子查询:返回为一列数据,与主查询语句中的字段存在关联关系。用于主查询语句的过滤条件(WHERE)、主查询语句分组的筛选条件。关联条件需要写在子查询部分。
3、普通子查询:返回为一列数据。用于主查询语句的过滤条件(WHERE),表示不连续的
取值范围,与IN配套使用。
4、普通子查询:返回一个二维表。用于主查询语句的目标表(FROM)。

Q2:具体说明内联结和外联结的异同,以及联结的具体写法。
同:两者都是通过共有列将表关联,都是任列上的拓展。
异:内联结只保留存在相等关系的行。外联结哪边外,则哪边保留所有行,另一边只保留存在相等关系的行。
具体写法:查看联结表的结构–找到共有列–定义列的等值关系–确定内外联结

Q3:按要求写出以下语句。
1、找出所有洁云牌抽纸的销售流水(使用标量子查询)。
2、找出各类商品中,价格高于该类商品均价的部分(使用关联子查询)。
3、用联结的方法改写第一题。
4、归总下所有商品的销量。

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

SQLDAY10:

Q1:写出插入语句的两种语句结构,并分析其使用场景。
INSERT INTO<表名>VALUES(<插入值1>,<插入值2>,.…);
INSERT INTO<表名>(<插入字段1>,<插入字段2>,…)VALUES(<插入值>,<插入
值>,……);
第一种写法较为简单,仅适用于整行插入,且要求表结构固定。
第二种写法更为具体,既可以用于整行插入也可以用于部分行插入,且插入顺序可以进行自定义。并且,即使表结构后续发生修改,只要插入字段依然存在,则该语句依旧有效。

Q2:请写出更新表的语句结构(多列),以及更新操作的注意事项。
UPDATE<表名>
SET<列名1>=值1,<列名2>=值2
WHERE<过滤条件>;
一定要注意过滤条件的检查。

Q3:分别写出以下语句。
1、 向milk_tea表中插入一个完整的行:(9,测试商品1,100g,2019-01-01,12,13,
20)
2、 向 milk_tea 表中插入以下数据:prod_id = 10,pro_date = “2018-01-01”,
prod_name = “测试商品 2”
3、 从milk_tea表中找到‘棒棒糖’的行,修改prod_id 为11后重新插入 milk_tea表
4、 修改prod_id为11的行数据,将prod_name修改为“测试商品 3”
5、 删除prod_id 为 9、10、11的行。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

SQLDAY11:

Q1:请写出创建表语句的结构、常用的属性及相关注意事项。
CREATE TABLE<表名>
<字段名1><数据类型><属性>,
<字段名2> …
) ;
常用属性有是否允许空值–NOT NULL,缺省值设定-DEFAULT。
注意事项有表名、字段名唯一,DEFAULT后只能接常数

Q2:写出为表增加字段和修改字段数据类型的语句结构。
ALTER TABLE<表名>ADD<字段名><数据类型><属性>;
ALTER TABLE<表名>MODIFY COLUMN<字段名><数据类型><属性>;

Q3:写出以下语句
1、 复制milk_tea表的prod_id/prod_name/prod_date/valid_month列至表milk_tea2,
使其的prod_id列为milk_tea 表中prod_id值添加前缀‘T’,其余列与milk_tea 表
一模一样
2、 增加net_w 列,类型为VARCHAR(255)
3、 修改net_w 列与 milk_tea 表中的 net_w 列完全一样
4、 修改milk_tea2 表中的 pro_date列缺省值为‘20190401’
5、 删除milk_tea2 表的 net_w和valid_month列
6、 删除milk_tea2 表

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

SQLDAY12:

Q1:按要求复制milk_tea 表,并进行如下操作。
1、复制 milk_tea表中prod_id为1-5的行,并命名为 copy_milk_tea 表。
2、在 copy_milk_tea 表上建立视图,视图名为 view_milk_tea。查看该视图。
3、对视图进行查询操作,找出销售价高于15的产品。

在这里插入图片描述在这里插入图片描述在这里插入图片描述

Q2:按要求对 copy_milk_tea 表进行操作,并同时查看视图。
1、插入 milk_tea表中prod_id为6的行。
2、删除 copy_milk_tea表中销售价格为 15的行。

在这里插入图片描述
在这里插入图片描述

Q3:简单阐述视图与表的异同。(对比复制表操作)
同:都是二维表结构,都可以使用SELECT语句的全部操作
异:视图是虚拟的表,本身不包括数据,其内容随着SELECT语句的结果而改变。但如果是复制表,则是固定不变的,即使AS后的SELECT语句结果发生改变,复制表也不会发生改变。不可以通过视图更新原表数据。

SQLDAY13:

Q1:什么是事务?SQL中为什么要使用事务管理?
成批执行的SQL语句叫做事务。
使用事务管理,可以确保成批执行的语句完全执行或完全不执行,并且可以通过自定义保留点,控制语句执行进度。
使用事务管理,可以确保数据库信息的完整性。

Q2:请总结SAVAPOINT的用法。
创建保留点:SAVEPOINT<保留点名>;
回退到保留点: ROLLBACK TO<保留点名>;
释放保留点:RELEASE SAVEPOINT<保留点>;

Q3:请写出以下语句(Navicat中操作)
1、 从milk_tea表复制出 milk_tea2表。
2、 对milk_tea表的 in_price列增加 UNIQUE属性
3、 开启一个事务管理
4、 插入值 prod_id – ‘T1’, prod_name – ‘测试商品 1’,in_price – 88
5、 插入值 prod_id – ‘T2’, prod_name – ‘测试商品 2’,in_price – 88
6、 回退
7、 重复5的操作

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值