数据库经典面试题

习题一

1.1 创建表

①创建Student表

mysql> create table Student (
    -> Sno int primary key,
    -> Sname varchar(255),
    -> Ssex varchar(10),
    -> Sdept varchar(50)
    -> );
Query OK, 0 rows affected (0.01 sec)

②创建Course表

mysql> create table Course (
    -> Cno int primary key,
    -> Cname varchar(255),
    -> Tno int
    -> );
Query OK, 0 rows affected (0.01 sec) 

③创建Score表

mysql> create table Score (
    -> Sno int,
    -> Cno int,
    -> Degree int,
    -> primary key (Sno,Cno)
    -> );
Query OK, 0 rows affected (0.01 sec) 

④创建Teacher表

mysql> create table Teacher (
    -> Tno int primary key,
    -> Tname varchar(255),
    -> Tsex varchar(10),
    -> Prof varchar(50)
    -> );
Query OK, 0 rows affected (0.00 sec) 

 1.2 在Student表中插入一条记录

①命令

mysql> insert into Student values(1,'张三','男','计科2003班');
Query OK, 1 row affected (0.01 sec)

②结果

1.3 查询课程名称为”数据库”,且分数低于60的学生姓名和分数 

#方法一
mysql> select s.Sname
    -> from Student s
    -> inner join Score SC on s.Sno = SC.Sno
    -> inner join Course c on SC.Cno = c.Cno
    -> where c.Cname = '数据库' and SC.Degree < 60;
Empty set (0.01 sec)
#方法二
mysql> select s.Sname,SC.Degree
    -> from Student s
    -> inner join Score SC on s.Sno = SC.Sno
    -> inner join Course c on SC.Cno = c.Cno
    -> where c.Cname = '数据库' and SC.Degree < 60;
Empty set (0.00 sec)
#方法三
mysql> select s.Sname, SC.Degree, C.Cname
    -> from Student s
    -> inner join Score SC on s.Sno = SC.Sno
    -> inner join Course C on SC.Cno = C.Cno
    -> where C.Cname = '数据库' and SC.Degree < 60;
Empty set (0.00 sec)

1.4 对于所有性别为“女”的学生,同时课程名为“高等数学”的分数统一加5 

mysql> update Score SC
    -> set Degree = Degree + 5
    -> where SC.Sno in (select s.Sno from Student s where s.Ssex = '女')
    -> and SC.Cno in (select c.Cno from Course c where c.Cname = '高等数学');
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0

1.5 删除姓名为“张”(学号=1) 课程名为”数据库”的课程成绩 

mysql> delete from Score
    -> where Sno = 1
    -> and Cno in (select c.Cno from Course c where c.Cname = '数据库');
Query OK, 0 rows affected (0.01 sec)

习题二

2.1 统计2021年11月每天新用户的次日留存率(保留2位小数)

①命令

mysql> DROP TABLE IF EXISTS tb_user_log;
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE TABLE tb_user_log (
    ->     id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    ->     uid INT NOT NULL COMMENT '用户ID',
    ->     artical_id INT NOT NULL COMMENT '视频ID',
    ->     in_time datetime COMMENT '进入时间',
    ->     out_time datetime COMMENT '离开时间',
    ->     sign_in TINYINT DEFAULT 0 COMMENT '是否签到'
    -> ) CHARACTER SET utf8 COLLATE utf8_bin;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> INSERT INTO tb_user_log(uid, artical_id, in_time, out_time, sign_in)
    -> VALUES
    -> (101,0,'2021-11-01 10:00:00','2021-11-01 10:00:42',1),
    -> (102,9001,'2021-11-01 10:00:00','2021-11-01 10:00:09',0),
    -> (103,9001,'2021-11-01 10:00:01','2021-11-01 10:01:50',0),
    -> (101,9002,'2021-11-02 10:00:09','2021-11-02 10:00:28',0),
    -> (103,9002,'2021-11-02 10:00:51','2021-11-02 10:00:59',0),
    -> (104,9001,'2021-11-02 10:00:28','2021-11-02 10:00:50',0),
    -> (101,9003,'2021-11-03 11:00:55','2021-11-03 11:01:24',0),
    -> (104,9003,'2021-11-03 11:00:45','2021-11-03 11:00:55',0),
    -> (105,9003,'2021-11-03 11:00:53','2021-11-03 11:00:59',0),
    -> (101,9002,'2021-11-04 11:00:55','2021-11-04 11:00:59',0);
Query OK, 10 rows affected (0.01 sec)
Records: 10  Duplicates: 0  Warnings: 0

②结果

2.2 编写SQL语句,查找所有订购了数量至少100个的BRO1、BR02或BRO3的订单。你需要返回 Orderltems表的订单号(order num) 、产品ID(prod id)和数量(quantity) ,并按产品ID和数量进行过滤 

①命令

mysql> DROP TABLE IF EXISTS `Orderltems`;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE TABLE IF NOT EXISTS `Orderltems` (
    -> prod_id VARCHAR(255) NOT NULL COMMENT '商品号',
    -> order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',
    -> quantity INT(255) NOT NULL COMMENT '商品数量'
    -> );
Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql> INSERT `Orderltems` VALUES('BRO1','a','105'),('BRO2','a2','1100'),('BR02','a2','200'),('BR04','a4','1121'),('BR017','a5','10'),('BR02','a2','19'),('BR017','a','75');
Query OK, 7 rows affected (0.00 sec)
Records: 7  Duplicates: 0  Warnings: 0

②结果

2.3 编写SQL语句,从Products表中检索所有的产品名称(prod name) ,以及名为quant sold的计算列,其中包含所售产品的总数(在Orderltems表上使用子查询和SUM(quantity)检索) 

①命令

mysql> DROP TABLE IF EXISTS `Products`;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE TABLE IF NOT EXISTS `Products` (
    -> `prod_id` VARCHAR(255) NOT NULL COMMENT '产品ID',
    -> `prod_name` VARCHAR(255) NOT NULL COMMENT '产品名称'
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO `Products` VALUES ('a0001','egg'),
    -> ('a0002','sockets'),
    -> ('a0013','coffee'),
    -> ('a0003','cola');
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0
mysql> DROP TABLE IF EXISTS `Orderltems`;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE IF NOT EXISTS `Orderltems` (
    -> prod_id VARCHAR(255) NOT NULL COMMENT '产品id',
    -> quantity INT(16) NOT NULL COMMENT '商品数量'
    -> );
Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql> INSERT INTO `Orderltems` VALUES ('a0001',105),('a0002',1100),('a0002',200),('a0013',1121),('a0003',10),('a0003',19),('a0003',5);
Query OK, 7 rows affected (0.00 sec)
Records: 7  Duplicates: 0  Warnings: 0

②结果

2.4 检索每个顾客的名称 (Customers表中的 cust name) 和所有的订单号(Orders 表中的 order num),列出所有的顾客,即使他们没有下过订单。最后根据顾客姓名cust name升序返回

①命令

mysql> DROP TABLE IF EXISTS `Customers`;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE IF NOT EXISTS `Customers` (
    -> cust_id VARCHAR(255) NOT NULL COMMENT '客户id',
    -> cust_name VARCHAR(255) NOT NULL COMMENT '客户姓名'
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT `Customers` VALUES ('cust10','andy'),('cust1','ben'),('cust2' ,'tony'),('cust22','tom'),('cust221','an'),('cust2217','hex'),('cust40','ace');
Query OK, 7 rows affected (0.00 sec)
Records: 7  Duplicates: 0  Warnings: 0
mysql> DROP TABLE IF EXISTS `Orders`;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE TABLE IF NOT EXISTS `Orders` (
    -> order_num VARCHAR(255) NOT NULL COMMENT '商品单号',
    -> cust_id VARCHAR(255) NOT NULL COMMENT '顾客id'
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT `Orders` VALUES ('a1','cust10'),('a2','cust1'),('a3','cust2'),('a4','cust22'),('a5','cust221'),('a7','cust22171');
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0

②结果

2.5 请统计2021年10月每个有展示记录的退货率不大于0.5的商品各项指标 

①命令

mysql> DROP TABLE IF EXISTS tb_user_event;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE tb_user_event (
    ->     id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    ->     uid INT NOT NULL COMMENT '用户ID',
    ->     product_id INT NOT NULL COMMENT '商品ID',
    ->     event_time datetime COMMENT '行为时间',
    ->     if_click TINYINT COMMENT '是否点击',
    ->     if_cart TINYINT COMMENT '是否加购物车',
    ->     if_payment TINYINT COMMENT '是否付款',
    ->     if_refund TINYINT COMMENT '是否退货退款'
    -> ) CHARACTER SET utf8 COLLATE utf8_bin;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> INSERT INTO tb_user_event (uid, product_id, event_time, if_click, if_cart, if_payment, if_refund) VALUES
    ->     (101,8001,'2021-10-01 10:00:00',0,0,0,0),
    ->     (102,8001,'2021-10-01 10:00:00',1,0,0,0),
    ->     (103,8001,'2021-10-01 10:00:00',1,1,0,0),
    ->     (104,8001,'2021-10-02 10:00:00',1,1,1,0),
    ->     (105,8001,'2021-10-02 10:00:00',1,1,1,0),
    ->     (101,8002,'2021-10-03 10:00:00',1,1,1,0),
    ->     (109,8001,'2021-10-04 10:00:00',1,1,1,1);
Query OK, 7 rows affected (0.00 sec)
Records: 7  Duplicates: 0  Warnings: 0

②结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/332571.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

物联网孢子捕捉分析仪在农田起到什么作用

TH-BZ03随着科技的飞速发展&#xff0c;物联网技术在农业领域的应用越来越广泛。其中&#xff0c;物联网孢子捕捉分析仪作为一种先进的设备&#xff0c;在农田中发挥着不可或缺的作用。本文将详细介绍物联网孢子捕捉分析仪在农田中的作用。 一、实时监测与预警 物联网孢子捕捉分…

TDengine 创始人陶建辉在汽车 CIOCDO 论坛发表演讲,助力车企数字化转型

当前&#xff0c;汽车行业的数字化转型如火如荼。借助数字技术的充分利用&#xff0c;越来越多的车企进一步提升了成本优化、应用敏捷性、高度弹性和效率。这一转型使得业务应用的开发和管理模式发生了颠覆性的创新&#xff0c;赋予了汽车软件快速响应变化和动态调度资源的能力…

FPGA引脚物理电平(内部资源,Select IO)-认知2

引脚电平 The SelectIO pins can be configured to various I/O standards, both single-ended and differential. • Single-ended I/O standards (e.g., LVCMOS, LVTTL, HSTL, PCI, and SSTL) • Differential I/O standards (e.g., LVDS, Mini_LVDS, RSDS, PPDS, BLVDS, and…

【RT-DETR有效改进】轻量化CNN网络MobileNetV2改进特征提取网络

前言 大家好&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持ResNet32、ResNet101和PP…

Debian 11.8.0 安装图解

引导和开始安装 这里直接回车确认即可&#xff0c;选择图形化安装方式。 选择语言 这里要区分一下&#xff0c;当前选中的语言作为安装过程中安装器所使用的语言&#xff0c;这里我们选择中文简体。不过细心的同学可能发现&#xff0c;当你选择安装器语言之后&#xff0c;后续安…

el-table实现搜索高亮展示并滚动到元素位置

效果展示&#xff1a; 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wid…

Dubbo-admin监控中心

监控中心 Dubbo-admin监控中心执行操作启动provider和consumer项目进行测试总体流程 Dubbo-admin监控中心 dubbo-admin下载路径 git clone https://github.com/apache/dubbo-admin.git图1-1 dubbo-admin项目文件展示 执行操作 # 启动zookeeper# 前端 cd dubbo-admin-ui npm i…

HTML前端CSS实现只显示1行或者2行、3行剩余显示省略号

想要做的效果: 文本只一行显示 /**实现思路&#xff1a;1.设置inline-block属相2.强制不换行3.固定高度4.隐藏超出部分5.显示“……”*/ {display: inline-block;white-space: nowrap; width: 100%; overflow: hidden;text-overflow:ellipsis; }文本只多行显示 /** 实现思路&…

ChatGLM-6B部署和微调实例

文章目录 前言一、ChatGLM-6B安装1.1 下载1.2 环境安装 二、ChatGLM-6B推理三、P-tuning 微调3.1微调数据集3.2微调训练3.3微调评估3.4 调用新的模型进行推理 总结 前言 ChatGLM-6B ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Mo…

基于Prism框架的WPF前端框架开发《知产代理数字化解决方案》

最近新开发了一套WPF前端界面框架&#xff0c;叫《知产代理数字化解决方案》&#xff0c;采用了时下流行的Prism框架作为整个系统的基础架构&#xff0c;演示了Prism中的IRegionManager区域管理器、IDialogAware对话框、IDialogService对话框服务、IContainerExtension容器等用…

Python实现自动化办公(使用第三方库操作Excel)

1 使用 xlrd 读取Excel数据 1.1 获取具体单元格的数据 import xlrd# 1. 打开工作簿 workbook xlrd.open_workbook("D:/Python_study_projects/Python自动化办公/Excel/test1.xlsx") # 2. 打开工作表 sheet1 workbook.sheets()[0] # 选择所有工作表中的第一个 # …

阿里云地域和可用区分布表,2024更新

2024年阿里云服务器地域分布表&#xff0c;地域指数据中心所在的地理区域&#xff0c;通常按照数据中心所在的城市划分&#xff0c;例如华北2&#xff08;北京&#xff09;地域表示数据中心所在的城市是北京。阿里云地域分为四部分即中国、亚太其他国家、欧洲与美洲和中东&…

springcloud Ribbon负载均衡服务调用

文章目录 代码下载地址简介测试 Ribbon负载均衡算法手写RoundRobinRule源码8001/8002微服务改造80订单微服务改造测试 代码下载地址 地址:https://github.com/13thm/study_springcloud/tree/main/days6_Ribbon 简介 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端…

ora-12154无法解析指定的连接标识符

用户反映查询的时候报错ora-12154 这个系统只做历史数据查询使用&#xff0c;使用并不平凡&#xff0c;该数据库曾做过一次服务器间的迁移。 用户描述&#xff0c;所有oracle客户端查询该视图都报tns错误&#xff0c;一般ora-12154会发生在连接数据库时&#xff0c;因为tns配…

flutter开发windows桌面软件,使用Inno Setup打包成安装程序,支持中文

最近使用flutter开发windows桌面软件的时候&#xff0c;想要将软件打包成安装程序&#xff0c;使用了flutter官方推荐的msix打包&#xff0c;但是打包出来的软件生成的桌面快捷方式有蓝色背景&#xff1a; 这个蓝色背景应该是没有设置为动态导致的&#xff0c;windows系统的屏幕…

C#,字符串匹配(模式搜索)RK(Rabin Karp)算法的源代码

M.O.Rabin Rabin-Karp算法&#xff0c;是由M.O.Rabin和R.A.Karp设计实现的一种基于移动散列值的字符串匹配算法。 通常基于散列值的字符串匹配方法&#xff1a;&#xff08;1&#xff09;首先计算模式字符串的散列函数&#xff1b;&#xff08;2&#xff09;然后利用相同的散…

mysql数据迁移报错Specified key was too long; max key length is 767 bytes

目录 场景&#xff1a; 说明&#xff1a; 疑问&#xff1a; 解决&#xff1a; 验证&#xff1a; 场景&#xff1a; 线上项目支持的过程中遇到mysql库表结构和数据由A库迁移到B库上提示Specified key was too long; max key length is 767 bytes报错&#xff0c;第一次遇到特此…

每日一题——LeetCode1266.访问所有点的最小时间

方法一 个人方法 找规律&#xff1a; 当前的点为current&#xff0c;下一个点为next&#xff0c;x为两点横坐标之间距离&#xff0c;y为两点竖坐标之间距离 1、当两点横坐标相同时&#xff0c;两点距离为y 2、当两点竖坐标相同时&#xff0c;两点距离为x 3、当两点x与y相同…

30分钟带你深入优化安卓Bitmap大图

30分钟带你源码深入了解Bitmap以及优化安卓大图 一、前言二、Bitmap入门1. 如何创建Bitmap?2. Bitmap的堆内存分布在哪里3. 图片文件越大&#xff0c;Bitmap堆内存会越大吗&#xff1f;4. 如何管理Bitmap的内存&#xff1f;5. 实战修改Bitmap的堆内存&#xff0c;改变图片的图…

MySQL中锁的概述

按照锁的粒度来分可分为&#xff1a;全局锁&#xff08;锁住当前数据库的所有数据表&#xff09;&#xff0c;表级锁&#xff08;锁住对应的数据表&#xff09;&#xff0c;行级锁&#xff08;每次锁住对应的行数据&#xff09; 加全局锁&#xff1a;flush tables with read lo…