出处

【MySQL教程】SQL零基础教程,带你掌握最受企业欢迎的数据库语言!_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1PJ411m7Lz

准备工作


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for cust_info
-- ----------------------------
DROP TABLE IF EXISTS `cust_info`;
CREATE TABLE `cust_info`  (`cust_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`cust_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`tel` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of cust_info
-- ----------------------------
INSERT INTO `cust_info` VALUES ('C00100101', '赵一', '13377770001', 'zhaoyi@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100102', '赵二', '13377770002', 'zhaoer@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100103', '赵三', '13377770003', 'zhaosan@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100104', '钱大', '13377770004', 'qianda@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100105', '钱二', '13377770005', 'qianer@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100106', '钱三', '13377770006', 'qiansan@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100107', '孙大', '13377770007', 'sunda@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100108', '孙二', '13377770008', 'suner@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100109', '孙三', '13377770009', 'sunsan@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100110', '李一', '13377770010', 'liyi@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100111', '李二', '13377770011', 'lier@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100112', '李三', '13377770012', 'lisan@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100113', '吴大', '13377770013', 'wuda@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100114', '吴二', '13377770014', 'wuer@gmail.com');
INSERT INTO `cust_info` VALUES ('C00100115', '吴二', '13377770015', 'wuer@126.com');-- ----------------------------
-- Table structure for milk_tea
-- ----------------------------
DROP TABLE IF EXISTS `milk_tea`;
CREATE TABLE `milk_tea`  (`prod_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`prod_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`net_w` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`pro_date` date NULL DEFAULT NULL,`valid_month` int(0) NULL DEFAULT NULL,`in_price` decimal(10, 2) NULL DEFAULT NULL,`sale_price` decimal(10, 2) NULL DEFAULT NULL,PRIMARY KEY (`prod_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of milk_tea
-- ----------------------------
INSERT INTO `milk_tea` VALUES ('1', '奶茶', '150g', '2018-09-11', 12, 10.80, 15.00);
INSERT INTO `milk_tea` VALUES ('2', '奶糖', '150g', '2019-05-13', 18, 12.30, 20.00);
INSERT INTO `milk_tea` VALUES ('3', '棒棒糖', '15g', '2019-04-29', 18, 2.10, 2.50);
INSERT INTO `milk_tea` VALUES ('4', '饼干', '200g', NULL, 12, 16.10, 23.00);
INSERT INTO `milk_tea` VALUES ('5', '薯片', '100g', '2018-08-27', 12, 9.30, 15.00);
INSERT INTO `milk_tea` VALUES ('6', '薯条', '100g', '2018-08-31', 12, 8.80, 15.00);
INSERT INTO `milk_tea` VALUES ('7', '火腿肠', '550g', '2019-02-04', 12, 15.50, NULL);
INSERT INTO `milk_tea` VALUES ('8', '方便面', '100g', '2018-12-09', 18, 3.60, 4.00);-- ----------------------------
-- Table structure for order_list
-- ----------------------------
DROP TABLE IF EXISTS `order_list`;
CREATE TABLE `order_list`  (`serial_num` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`order_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`date` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`prod_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`prodname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`cust_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`cust_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`quantity` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of order_list
-- ----------------------------
INSERT INTO `order_list` VALUES ('00000001', '20190401001', '2019-04-01', '10001', '抽纸', 'C00100101', '赵一', '1');
INSERT INTO `order_list` VALUES ('00000002', '20190401001', '2019-04-01', '10002', '抽纸', 'C00100101', '赵一', '1');
INSERT INTO `order_list` VALUES ('00000003', '20190401002', '2019-04-01', '10003', '抽纸', 'C00100107', '孙大', '2');
INSERT INTO `order_list` VALUES ('00000004', '20190402001', '2019-04-02', '10004', '洗衣液', 'C00100114', '吴二', '1');
INSERT INTO `order_list` VALUES ('00000005', '20190402002', '2019-04-02', '10005', '洗衣液', 'C00100106', '钱三', '1');
INSERT INTO `order_list` VALUES ('00000006', '20190402002', '2019-04-02', '20001', '原味薯片', 'C00100106', '钱三', '3');
INSERT INTO `order_list` VALUES ('00000007', '20190402003', '2019-04-02', '20002', '黄瓜味薯片', 'C00100114', '吴二', '2');
INSERT INTO `order_list` VALUES ('00000008', '20190403001', '2019-04-03', '20003', '番茄味薯片', 'C00100109', '孙三', '2');
INSERT INTO `order_list` VALUES ('00000009', '20190403001', '2019-04-03', '20004', '原味瓜子', 'C00100109', '孙三', '2');
INSERT INTO `order_list` VALUES ('00000010', '20190404001', '2019-04-04', '20005', '奶油瓜子', 'C00100109', '孙三', '1');
INSERT INTO `order_list` VALUES ('00000011', '20190404002', '2019-04-04', '20006', '奶油瓜子', 'C00100111', '李二', '3');
INSERT INTO `order_list` VALUES ('00000012', '20190404002', '2019-04-04', '20007', '趣多多', 'C00100111', '李二', '3');
INSERT INTO `order_list` VALUES ('00000013', '20190404002', '2019-04-04', '30001', '可乐', 'C00100111', '李二', '5');
INSERT INTO `order_list` VALUES ('00000014', '20190405001', '2019-04-05', '30002', '可乐', 'C00100108', '孙二', '2');
INSERT INTO `order_list` VALUES ('00000015', '20190405002', '2019-04-05', '30003', '营养快线', 'C00100104', '钱大', '3');
INSERT INTO `order_list` VALUES ('00000016', '20190405003', '2019-04-05', '30004', '雪碧', 'C00100107', '孙大', '3');
INSERT INTO `order_list` VALUES ('00000017', '20190406001', '2019-04-06', '10001', '抽纸', 'C00100113', '吴大', '1');
INSERT INTO `order_list` VALUES ('00000018', '20190406001', '2019-04-06', '10002', '抽纸', 'C00100113', '吴大', '1');
INSERT INTO `order_list` VALUES ('00000019', '20190406002', '2019-04-06', '10003', '抽纸', 'C00100108', '孙二', '2');
INSERT INTO `order_list` VALUES ('00000020', '20190406002', '2019-04-06', '10004', '洗衣液', 'C00100108', '孙二', '2');
INSERT INTO `order_list` VALUES ('00000021', '20190406003', '2019-04-06', '10005', '洗衣液', 'C00100104', '钱大', '1');
INSERT INTO `order_list` VALUES ('00000022', '20190407001', '2019-04-07', '20001', '原味薯片', 'C00100106', '钱三', '2');
INSERT INTO `order_list` VALUES ('00000023', '20190407002', '2019-04-07', '20002', '黄瓜味薯片', 'C00100108', '孙二', '2');
INSERT INTO `order_list` VALUES ('00000024', '20190407003', '2019-04-07', '20003', '番茄味薯片', 'C00100107', '孙大', '2');
INSERT INTO `order_list` VALUES ('00000025', '20190409001', '2019-04-09', '20004', '原味瓜子', 'C00100115', '吴二', '3');
INSERT INTO `order_list` VALUES ('00000026', '20190410001', '2019-04-10', '20005', '奶油瓜子', 'C00100110', '李一', '1');
INSERT INTO `order_list` VALUES ('00000027', '20190410001', '2019-04-10', '20006', '奶油瓜子', 'C00100110', '李一', '1');
INSERT INTO `order_list` VALUES ('00000028', '20190410001', '2019-04-10', '20007', '趣多多', 'C00100110', '李一', '1');-- ----------------------------
-- Table structure for pet
-- ----------------------------
DROP TABLE IF EXISTS `pet`;
CREATE TABLE `pet`  (`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`owner` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`species` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`birth` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`death` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of pet
-- ----------------------------
INSERT INTO `pet` VALUES ('Bowser', 'Diane', 'dog', 'm', '1979-08-31', '1995-07-29');
INSERT INTO `pet` VALUES ('Buffy', 'Har_old', 'dog', 'f', '1989-05-13', '(Null)');
INSERT INTO `pet` VALUES ('Chirpy', 'Gw%enbird', 'cat', 'f', '1998-09-11', '(Null)');
INSERT INTO `pet` VALUES ('Claws', 'Gw%%en cat', 'dog', 'm', '1994-03-17', '(Null)');
INSERT INTO `pet` VALUES ('Fang', 'Benny', 'dog', 'm', '1990-08-27', '(Null)');
INSERT INTO `pet` VALUES ('Fluffy', 'Har_old', 'cat', 'f', '1993-02-04', '(Null)');-- ----------------------------
-- Table structure for prod_info
-- ----------------------------
DROP TABLE IF EXISTS `prod_info`;
CREATE TABLE `prod_info`  (`prod_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`prod_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`brand` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`class` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`cost` decimal(10, 2) NULL DEFAULT NULL,`sale_price` decimal(10, 2) NULL DEFAULT NULL,`supplier_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of prod_info
-- ----------------------------
INSERT INTO `prod_info` VALUES ('10001', '抽纸', '洁柔', '120抽*8', '日用品', 20.11, 28.80, 'NJ0001');
INSERT INTO `prod_info` VALUES ('10002', '抽纸', '维达', '120抽*8', '日用品', 18.02, 25.50, 'NJ0002');
INSERT INTO `prod_info` VALUES ('10003', '抽纸', '洁云', '120抽*8', '日用品', 19.11, 26.80, 'SH0001');
INSERT INTO `prod_info` VALUES ('10004', '洗衣液', '蓝月亮', '2.5kg', '日用品', 33.43, 43.80, 'SH0002');
INSERT INTO `prod_info` VALUES ('10005', '洗衣液', '奥妙', '2.5kg', '日用品', 35.82, 49.90, 'SZ0001');
INSERT INTO `prod_info` VALUES ('20001', '原味薯片', '乐事', '80g', '零食', 11.11, 18.30, 'SZ0002');
INSERT INTO `prod_info` VALUES ('20002', '黄瓜味薯片', '乐事', '80g', '零食', 12.31, 18.80, 'NJ0001');
INSERT INTO `prod_info` VALUES ('20003', '番茄味薯片', '乐事', '80g', '零食', 12.31, 18.80, 'NJ0002');
INSERT INTO `prod_info` VALUES ('20004', '原味瓜子', '洽洽', '200g', '零食', 5.40, 8.80, 'SH0001');
INSERT INTO `prod_info` VALUES ('20005', '奶油瓜子', '洽洽', '100g', '零食', 5.80, 9.00, 'SH0002');
INSERT INTO `prod_info` VALUES ('20006', '奶油瓜子', '良品铺子', '200g', '零食', 5.80, 9.50, 'SZ0001');
INSERT INTO `prod_info` VALUES ('20007', '趣多多', '卡夫卡', '280g', '零食', 13.54, 18.60, 'SZ0002');
INSERT INTO `prod_info` VALUES ('30001', '可乐', '百事', '350ml', '饮料', 2.21, 3.50, 'NJ0001');
INSERT INTO `prod_info` VALUES ('30002', '可乐', '可口可乐', '350ml', '饮料', 2.18, 3.50, 'NJ0002');
INSERT INTO `prod_info` VALUES ('30003', '营养快线', '娃哈哈', '350ml', '饮料', 3.56, 4.80, 'SH0001');
INSERT INTO `prod_info` VALUES ('30004', '雪碧', '可口可乐', '350ml', '饮料', 2.31, 3.20, 'SH0002');-- ----------------------------
-- Table structure for supplier_info
-- ----------------------------
DROP TABLE IF EXISTS `supplier_info`;
CREATE TABLE `supplier_info`  (`supplier_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`supplier_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`city` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`addr` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`tel` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of supplier_info
-- ----------------------------
INSERT INTO `supplier_info` VALUES ('NJ0001', '南京第一家供货商', '南京', '南京市光明大道001号', '1338888001');
INSERT INTO `supplier_info` VALUES ('NJ0002', '南京第二家供货商', '南京', '南京市光明大道002号', '1338888002');
INSERT INTO `supplier_info` VALUES ('SH0001', '上海第一家供货商', '上海', '上海市光明大道001号', '1558888001');
INSERT INTO `supplier_info` VALUES ('SH0002', '上海第二家供货商', '上海', '上海市光明大道002号', '1558888002');
INSERT INTO `supplier_info` VALUES ('SZ0001', '苏州第一家供货商', '苏州', '苏州市光明大道001号', '1998888001');
INSERT INTO `supplier_info` VALUES ('SZ0002', '苏州第二家供货商', '苏州', '苏州市光明大道002号', '1998888002');SET FOREIGN_KEY_CHECKS = 1;

查看数据

 

练习

===================DAY1===================
Q1:简单说说关系型数据表和Excel表的异同。
同:都是二维表格式,都有行和列,行列交叉都是单元格,单元格内都储存数据。
异:关系型数据表不能合并单元格;关系型数据表的每一列都有明确的数据类型,不允许出现数据类型以外的数据。Q2:列举几个这节课讲到的小tip或者注意事项。
1、访问关系型数据表的列,可以用<表名>.<列名>的方式
2、MySQL命令行,可以用PgUp调出之前输入过的命令
3、MySQL的语句都是用“;”结尾的
4、MySQL的语句是不区分大小写的,但是也制定了一些特有的书写规则===================DAY2===================
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_infoQ3: SQL的语句类型有哪些?他们对应的操作对象分别是什么?
1、DDL:数据定义语言,操作对象是数据库、数据表
2、DML:数据操纵语言,操作对象是数据表中的数据(行、列)
3、DCL:数据控制语言,操作对象是数据库中的操作(特殊)===================DAY3===================
Q1:写出单表查询的两个子句,并指出其关键字和操作对象。
1、子句1- SELECT [查询列]
关键字-SELECT
操作对象-查询的列
2、子句2-FROM[数据表]
关键字–FROM
操作对象–数据表Q2:写出对 milk_tea 表的所有列查询语句,要求有至少三种写法。
SELECT * FROM milk_tea;SELECT prod_id,prod_name,net_w,pro_date,valid_month,in_price,sale_price
FROM milk_tea;SELECT milk_tea.prod_id,milk_tea.prod_name,milk_tea.net_w,milk_tea.pro_date,milk_tea.valid_month,milk_tea.in_price,milk_tea.sale_price
FROM milk_tea;SELECT m.prod_id,m.prod_name,m.net_w,m.pro_date,m.valid_month,m.in_price,m.sale_price
FROM milk_tea AS m;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)。SELECT prod_name,in_price,sale_price,'9 折' AS discount1,ROUND(sale_price*0.9,2) AS new_sale1,ROUND(sale_price*0.9 - in_price,2) AS new_profit1,'110%' AS discount2,ROUND(sale_price*1.1,2) AS new_sale2,ROUND(sale_price*1.1 - in_price,2) AS new_profit2
FROM milk_tea;===================DAY4===================
Q1:对 supplier_info 表中的信息进行拼接,分别达到如下效果。
1、查询所有供应商信息,展示结果要求为“xxx 供货商的地址为 xxxxxxx,联系电话为
xxxxxx。”,举例:“南京第一家供货商的地址为南京市光明大道 001 号,联系电话为
1338888001。”,并将该列命名为“供应商信息”。SELECT CONCAT(supplier_name,'的地址为',addr,',联系电话为',tel) AS '供应商信息'
FROM supplier_info;2、查询所有供应商信息,展示结果要求为“xxx 供货商 | (地址) |(电话)。”,举
例:“南京第一家供货商 | 南京市光明大道 001 号 | 1338888001”,并将该列命名为“供
应商信息”。(2 种方法)SELECT CONCAT(supplier_name,'|',addr,'|',tel) AS '供应商信息'
FROM supplier_info;SELECT CONCAT_WS('|',supplier_name,addr,tel) AS '供应商信息'
FROM supplier_info;Q2:按要求进行排序操作。
1、对产品信息表中的产品采购价按升序排列
SELECT * FROM prod_info ORDER BY prod_info.cost;2、对产品信息表中的产品销售价按降序排列
SELECT * FROM prod_info ORDER BY prod_info.sale_price DESC;3、对产品信息表中的产品销售价按升序排列,同时对采购价按降序排列
SELECT * FROM prod_info ORDER BY prod_info.sale_price,prod_info.cost DESC;Q3:按要求进行查询去重操作。
1、查询出所有有销售记录的产品。
SELECT DISTINCT order_list.prodname FROM order_list;2、查询出所有购买商品的顾客姓名。
SELECT DISTINCT order_list.cust_name FROM order_list;===================DAY5===================
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 * FROM milk_tea WHERE  IFNULL(sale_price,20)-in_price> 5;6、对 5 的结果按照 sale_price 倒序排列。
SELECT * FROM milk_tea WHERE  IFNULL(sale_price,20)-in_price> 5 ORDER BY sale_price DESC;===================DAY6===================
Q1:写出SQL语句中的通配符,及其用法。
1、下划线_:代表任意字符,且能代表的字符数仅为1.必须知道要代表的字符具体的位置。
2、百分号%:代表任意字符,且能代表的字符数为任意多个,包括0。Q2:写出模糊查询的具体结构。
关键字(WHERE)+查询的列(字段名)+关键字(LIKE)+‘匹配文本’(含通配符)Q3:写出以下语句。
1、从 milk_tea 表中找到产品名是‘薯’开头或者‘糖’结尾的。
SELECT * FROM milk_tea WHERE prod_name LIKE '薯%' OR prod_name LIKE '%糖';2、从 milk_tea 表中找到产品名是‘薯’开头或者‘糖’结尾的,且产品名称只有 2 个字。
SELECT * FROM milk_tea WHERE prod_name LIKE '薯_' OR prod_name LIKE '_糖';3、从 milk_tea 表中找到产品名是‘奶’开头并且‘茶’结尾的。
SELECT * FROM milk_tea WHERE prod_name LIKE '奶%茶';4、从 milk_tea 表中找到销售价格不大于 10 的产品。(2 种写法)
SELECT * FROM milk_tea WHERE sale_price <10;SELECT * FROM milk_tea WHERE NOT sale_price >=10; ===================DAY7===================
Q1:总结课上讲到的几种数值型数据类型,并举例具体用法。示例:DEMICAL(5,2),表示
总长度5位,小数点后2位,比如123.12、2.12。
1、INTEGER:表示整数型,正负数都可以,一般就写作INTEGER,比如1,23,-14,100O
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
列,得出结果,并分析异同。
CREATE TABLE test_sjlx2
(
id_date date,
id_char varchar(255)
);SELECT CURRENT_DATE();
SELECT DATE_ADD(CURDATE(),INTERVAL 1 DAY);
SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY);
SELECT DATE_ADD(CURDATE(),INTERVAL 1 MONTH);INSERT INTO test_sjlx2 VALUES('2021-12-05','123');
INSERT INTO test_sjlx2 VALUES('2021-12-06','home');
INSERT INTO test_sjlx2 VALUES('2021-12-05','家春秋');
INSERT INTO test_sjlx2 VALUES('2022-01-05','今天星期五');SELECT id_date,id_char,CHAR_LENGTH(id_date),CHAR_LENGTH(id_char),LENGTH(id_date),LENGTH(id_char)
FROM test_sjlx2;===================DAY8===================
Q1:使用聚合函数完成如下操作。
1、产品信息表中一共有多少产品?
SELECT count(1) FROM prod_info;2、有哪些产品类别,每个类别分别又有多少种产品?
SELECT class,count(prod_id) FROM prod_info GROUP BY class;3、一共有多少客户购买了商品?
SELECT count(DISTINCT cust_id) FROM order_list;4、哪些客户购买了商品,分别购买了多少?
SELECT cust_id,cust_name,sum(quantity) FROM order_list GROUP BY cust_id;Q2:使用 WHERE 和 HAVING 对数据记录进行正确过滤。
1、各类别中,产品销售价在 10 块以上的分别有多少?
SELECT * FROM prod_info WHERE sale_price > 10;2、各类别中,产品数量在 5 件以上的分别有哪些?
SELECT * FROM prod_info GROUP BY class HAVING count(prod_id) > 5;3、购买商品超过 5 件的用户有哪些?
SELECT cust_id,cust_name FROM order_list GROUP BY cust_id HAVING sum(quantity) >5;Q3:写出我们所学过的所有子句,以及在完整语句中的书写顺序。并且指出各子句的操作
对象以及使用注意事项。
SELECT ...FROM ....WHERE ....GROUP BY .... HAVING ....ORDER BY.... ;
SELECT...FROM是必需子句,SELECT的操作对象是列名,FROM的操作对象是表名。
WHERE...子句用来过滤行,操作对象是针对列的关系表达式。
GROUP BY....子句用来进行分组,操作对象是聚合键,也是列名。要求 SELECT部分有聚合键。
HAVING...子句用来对分组结果进行筛选,操作对象是聚合函数,使用前提是必须存在GROUP BY子句。
ORDER BY...子句对查询结果进行排序,它一定是查询语句的最后一条子句。===================DAY9===================
Q1∶总结一下子查询的几种类别,及分别的用法和特征(包括子查询返回值的样式、子查询在主查询语句中的位置)。
1、标量子查询:返回为一个值,可以作为常数处理。用作主查询语句的常数列(SELECT)、主查询语句的过滤条件(WHERE)、主查询语句分组的筛选条件(HAVING)。
2、关联子查询:返回为一列数据,与主查询语句中的字段存在关联关系。用于主查询语句的过滤条件(WHERE)、主查询语句分组的筛选条件。关联条件需要写在子查询部分。
3、普通子查询:返回为一列数据。用于主查询语句的过滤条件(WHERE),表示不连续的取值范围,与IN配套使用。
4、普通子查询:返回一个二维表。用于主查询语句的目标表(FROM)。Q2:具体说明内联结和外联结的异同,以及联结的具体写法。
同:两者都是通过共有列将表关联,都是在列上的拓展。
异:内联结只保留存在相等关系的行。外联结哪边外,则哪边保留所有行,另一边只保留存在相等关系的行。
具体写法:查看联结表的结构–找到共有列–定义列的等值关系–确定内外联结(自由发挥)Q3:按要求写出以下语句。
1、找出所有洁云牌抽纸的销售流水(使用标量子查询)。
SELECT * FROM order_list
WHERE prod_id IN (SELECT prod_id FROM prod_infoWHERE brand = '洁云' AND prod_name = '抽纸');2、找出各类商品中,价格高于该类商品均价的部分(使用关联子查询)。
SELECT *
FROM (prod_info AS pi JOIN (SELECT class,avg(sale_price) FROM prod_info GROUP BY class ) AS aON pi.class = a.class) as n
WHERE pi.sale_price > a.avg(sale_price);3、用联结的方法改写第一题。
SELECT ol.*
FROM order_list ol JOIN prod_info pi ON ol.prod_id = pi.prod_id
WHERE brand = '洁云' AND prod_name = '抽纸';4、归总下所有商品的销量。
SELECT prodname, sum(quantity) as '商品销量'
FROM order_list
GROUP BY prodname;===================DAY10===================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)
INSERT INTO milk_tea VALUES (9,'测试商品 1','100g','2019-01-01',12,13,20);2、向 milk_tea 表中插入以下数据:prod_id = 10,pro_date = “2018-01-01”,prod_name = “测试商品 2”
INSERT INTO milk_tea (prod_id,pro_date,prod_name) VALUES (10,'2018-01-01','测试商品 2');3、从 milk_tea 表中找到‘棒棒糖’的行,修改 prod_id 为 11 后重新插入 milk_tea 表
UPDATE milk_tea SET prod_id = 11 WHERE prod_name = '棒棒糖';4、修改 prod_id 为 11 的行数据,将 prod_name 修改为“测试商品 3”
UPDATE milk_tea SET prod_name = '测试商品 3' WHERE prod_id = 11;5、删除 prod_id 为 9、10、11 的行。
DELETE FROM milk_tea WHERE prod_id IN (9,10,11);===================DAY11===================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 表
一模一样
CREATE TABLE milk_tea2 AS
SELECT CONCAT('T',prod_id) ,prod_name,pro_date,valid_month FROM milk_tea;2、增加 net_w 列,类型为 VARCHAR(255)
ALTER TABLE milk_tea2 ADD net_w VARCHAR(255);3、修改 net_w 列与 milk_tea 表中的 net_w 列完全一样
4、修改 milk_tea2 表中的 pro_date 列缺省值为‘20190401’
5、删除 milk_tea2 表的 net_w 和 valid_month 列
ALTER TABLE milk_tea2 DROP net_w ,DROP valid_month;6、删除 milk_tea2 表
DROP TABLE milk_tea2;===================DAY12===================
Q1:按要求复制 milk_tea 表,并进行如下操作。
1、复制 milk_tea 表中 prod_id 为 1-5 的行,并命名为 copy_milk_tea 表。
CREATE TABLE copy_milk_tea AS
SELECT * FROM milk_tea WHERE prod_id BETWEEN 1 AND 5;2、在 copy_milk_tea 表上建立视图,视图名为 view_milk_tea。查看该视图。
CREATE VIEW view_milk_tea AS SELECT * FROM copy_milk_tea;
SELECT * FROM view_milk_tea;3、对视图进行查询操作,找出销售价高于 15 的产品。
SELECT * FROM view_milk_tea WHERE sale_price > 15;Q2:按要求对 copy_milk_tea 表进行操作,并同时查看视图。
1、插入 milk_tea 表中 prod_id 为 6 的行。
INSERT INTO copy_milk_tea VALUES (SELECT * FROM milk_tea WHERE prod_id = 6);2、删除 copy_milk_tea 表中销售价格为 15 的行。
DELETE FROM copy_milk_tea WHERE sale_price = 15;Q3∶简单阐述视图与表的异同。(对比复制表操作)
同:都是二维表结构,都可以使用SELECT语句的全部操作
异:视图是虚拟的表,本身不包括数据,其内容随着SELECT语句的结果而改变。但如果是
复制表,则是固定不变的,即使AS后的SELECT语句结果发生改变,复制表也不会发生改
变。不可以通过视图更新原表数据。===================DAY13===================Q1:什么是事务?SQL中为什么要使用事务管理?
成批执行的SQL语句叫做事务。
使用事务管理,可以确保成批执行的语句完全执行或完全不执行,并且可以通过自定义保留点,控制语句执行进度。
使用事务管理,可以确保数据库信息的完整性。Q2:请总结SAVAPOINT的用法。
创建保留点: SAVEPOINT<保留点名>;
回退到保留点:ROLLBACK TO<保留点名>;
释放保留点: RELEASE SAVEPOINT<保留点>;Q3:请写出以下语句(Navicat 中操作)
1、从 milk_tea 表复制出 milk_tea2 表。
CREATE TABLE milk_tea2 AS
SELECT * FROM milk_tea;2、对 milk_tea 表的 in_price 列增加 UNIQUE 属性
ALTER TABLE milk_tea ADD CONSTRAINT UNIQUE( in_price);3、开启一个事务管理
BEGIN;4、插入值 prod_id – ‘T1’, prod_name – ‘测试商品 1’,in_price – 88
INSERT INTO milk_tea(prod_id,prod_name,in_price) VALUES ('T1','测试商品 1',88);5、插入值 prod_id – ‘T2’, prod_name – ‘测试商品 2’,in_price – 88
INSERT INTO milk_tea(prod_id,prod_name,in_price) VALUES ('T2','测试商品 2',88);6、回退
ROLLBACK;7、重复 5 的操作===================DAY14===================
Q:按照我们课堂操作,回顾总结下这 14 天的课程内容。并上传结果。

SQL题库:sqllearning3​—【未明学院】SQL课程作业相关推荐

  1. 【渝粤题库】陕西师范大学210006幼儿园课程作业(高起专)

    <幼儿园课程>(专科)作业 一.单选题 1.活动课程是以( )为中心来组织学习内容的. A 学科 B 问题 C 概念 D 儿童 2.( )指的是幼儿园教师根据实际情况灵活的将课程方案转化为 ...

  2. 未明学院:从国企联通到金融科技随手记,学长告诉你国企和互联网私企差别有多大?

    作者,W同学,未明学院学员 在未明学院完成课程的学习后,成功拿下上汽通用五菱汽车股份有限公司数据工程师offer和香港城市大学资讯ISM研究生offer 正文 首先自我介绍,我是四川大学信息管理与信息 ...

  3. 牛客网sql题库(1-30题)—— 个人答案与过程解析

    本篇博客分享一下我在牛客网sql题库刷题时,自己敲出来的结果.结果均通过了牛客网的结果验证. 具体的题目就不放在博客中了,感兴趣可以自行去搜索牛客网,找到sql题库在线编程 每道题下面都有我自己写的题 ...

  4. 题库明细 C#语言和SQL Server

    题库明细 C#语言和SQL Server 第一个C#程序 石振威 了解C#常用关键字(32道) 掌握变量的定义和使用方法(20道) 掌握C#控制台程序的结构组成(20道) 能够使用using和name ...

  5. 牛客网-SQL题库笔记

    牛客网-SQL题库笔记 01.最晚入职员工的所有信息 02.查找入职员工时间排名倒数第三的员工所有信息 03.查找各个部门当前领导当前薪水详情以及其对应部门编号 04.查找所有已经分配部门的员工的la ...

  6. 未明学院:双非学生风雨求职路 | 海投过上百封简历,面过券商、咨询、私募等6个方向后我得出的经验与教训

    作者/L同学 未明学院量化金融训练营优秀学员 01 写在前面 我是来自某双非财经一本的会计学大二学生,在最近的4-6月和许许多多的留学党一样奔波在寻找暑期实习的道路上.投出了几百封简历,有的遭拒,有的 ...

  7. 未明学院:找实习是门“玄学”?学姐这份券商、咨询、500强企业实习经验收藏好!

    作者: X同学,未明学院训练营优秀学员 我是一名商科大四在读的学生,从大二开始自己摸索着接触了很多种类的实习,前前后后有券商营业部.科创板投行.英国咨询公司.本土咨询公司.券商行业研究部门等不同类型的 ...

  8. 未明学院:实习达人养成计:四大/券商/咨询500强实习达人大学四年的方法论都在这里了!

    小明寄语: 每次和我们未明的学员交流完,小明内心的os都是:现在的学生都太优秀了pa~~✪ω✪正因此,如今大家求职的竞争也是越来越激烈.不过一代更比一代强,已经有越来越多的人有了提前职业规划,提升自身 ...

  9. 未明学院学员报告:“民以食为天”?看了这份天猫超市数据分析报告你就知道了!

    大家一定都有过,为了能够使用天猫超市的满减优惠券,四处找人凑单的经历吧?谁让天猫超市的优惠券那么多,又那么诱人呢~ 既然很多人都在天猫超市买东西,大家有没有想过,消费者们都喜欢在天猫超市买什么呢?什么 ...

  10. python 根据word生成ppt_未明学院:利用Python将Wordamp;PPT批量转成PDF

    Python中的许多库,像一个个具有不同功能的"工具",能帮助我们解决工作中的不同问题,提高工作效率! 本期将继续为大家放松python中的实用技能,本期的主题是:利用Python ...

最新文章

  1. plasma桌面设置好的面板消失了_Ubuntu Studio 将用 KDE Plasma 桌面环境替换 Xfce | Linux 中国...
  2. RMAN快速入门指南
  3. linux 下ab压力测试
  4. sqlplus 格式化一例
  5. .NET工程师的书单
  6. HTML初识HTML
  7. java aes解密算法_使用java实现AES算法的加解密(亲测可用)
  8. OpenSSL windows 下编译
  9. AD16更改器件封装如管脚间距等常规设置
  10. English Through Movie
  11. 【转贴】谈谈企业经营管理中的八大黑洞
  12. 微信小程序的页面布局(1)
  13. 学历是铜牌,能力是银牌,人脉是金牌,思维是王牌
  14. 解决因卸载WPS导致Excel表格打开提示“xls文件格式和扩展名不匹配,文件可能已损坏或不安全”
  15. HTML 下拉式菜单
  16. 批量将 txt 记事本文件按照固定行数拆分成单个独立的 txt 小文件
  17. 用python画爱心及代码演示
  18. NETDMIS5.0手动测量——智能识别2023
  19. 【FFmpeg】flv转码测试2: 24fps gop为24 恒定码率
  20. Exynos4412 移植针对Samsung的Linux-6.1(二)SD卡驱动——解决无法挂载SD卡的根文件系统

热门文章

  1. 计算机组成原理之移码表示法
  2. A电脑的gho还原到B电脑上的驱动解决方案
  3. 微信店铺小程序,让线上消费更加智慧化
  4. C++学习 链表,数据结构,链表读取,打印,文件输入
  5. 计算机设计计划进度安排怎么写,软件产品开发进度计划表.docx
  6. pip 安装依赖 requirements.txt
  7. 神经网络的认识(七)R-CNN
  8. 一本通提高篇 哈希和哈希表 (二)哈希表
  9. 机器学习数学基础之统计篇——概率论(python版)
  10. 数据结构---选择排序(直接选择排序和堆排序图解)