SQL13日练习汇总

    科技2024-12-17  9

    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的操作

    Processed: 0.049, SQL: 8