数据库经典面试题

news2024/9/29 19:14:40

习题一

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

②结果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树莓派4B +Ubuntu20.04+ROS1的使用(2)

首先确定一下主机与从机的ip地址&#xff08;非常重要&#xff09; 在这次实验中&#xff0c;主机是一台Ubuntu20.04.03系统的台式机&#xff0c;我们间通过这台准备来远程遥控树莓派上的ros1系统&#xff0c;它的ip地址是192.168.230.181 从机是一台搭载Ubuntu20.04桌面版ro…

项目管理十大知识领域之项目人力资源管理

一、项目人力资源管理的概述 作为项目管理的重要组成部分&#xff0c;项目人力资源管理旨在有效管理和利用项目团队的人力资源&#xff0c;以实现项目目标。它涵盖了对人员的招聘、培训、激励和绩效管理等方面&#xff0c;旨在确保项目团队的高效运转和成员的专业发展。项目人…

录课视频太大怎么办?3种方法一键瘦身~

录制视频是现代人常用的一种记录生活的方式&#xff0c;但是视频文件大小往往会很大&#xff0c;不利于存储和分享。为了解决这个问题&#xff0c;我们需要使用视频压缩软件来压缩视频文件大小&#xff0c;以便更方便地存储和分享。 方法一&#xff1a;嗨格式压缩大师 嗨格式压…

el-tree获取当前选中节点及其所有父节点的id(包含半选中父节点的id)

如下图,我们现在全勾中的有表格管理及其下的子级,而半勾中的有工作台和任务管理及其子级 现在点击保存按钮后,需要将勾中的节点id及该节点对应的父节点,祖先节点的id(包含半选中父节点的id)也都一并传给后端,那这个例子里就应该共传入9个id,我们可以直接将getCheckedK…

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握

课程地址&#xff1a;【新课uniapp零基础入门到项目打包&#xff08;微信小程序/H5/vue/安卓apk&#xff09;全掌握】 https://www.bilibili.com/video/BV1mT411K7nW/?p12&share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 四、vue组件 uni-app官网 …

【面试】测试/测开(ING3)

190. 栈和堆在内存管理上的区别 栈 1&#xff09; 栈是由系统自动分配和回收的内存。 2&#xff09;栈的存储地址是由高地址向低地址扩展的。 3&#xff09;栈是一个先进后出的结构。 4&#xff09;栈的空间大小是一个在编译时确定常数&#xff0c;即栈的大小是有限制的&#x…

Windows连接Ubuntu桌面

平时Windows连接Ubuntu服务器都是使用Xshell、FinalShell等工具&#xff0c;但这些连接之后只能通过终端进行操作&#xff0c;无法用桌面方式与服务器交互。 本文介绍如何通过工具&#xff0c;实现Window连接远程Ubuntu服务器&#xff0c;并使用桌面方式交互。 系统版本&#x…

C/C++ BM5 合并K个已排序的链表

文章目录 前言题目1 解决方案一1.1 思路阐述1.2 源码 2 解决方案二2.1 思路阐述2.2 源码 总结 前言 在接触了BM4的两个链表合并的情况&#xff0c;对于k个已排序列表&#xff0c;其实可以用合并的方法来看待问题。 这里第一种方法就是借用BM4的操作&#xff0c;只不过是多个合…

Redis内部数据结构ziplist详解

什么是ziplist Redis官方对于ziplist的定义是&#xff08;出自ziplist.c的文件头部注释&#xff09;&#xff1a; The ziplist is a specially encoded dually linked list that is designed to be very memory efficient. It stores both strings and integer values, where …

three.js 缓动算法.easing(渐入相机动画)

效果&#xff1a;淡入&#xff0c;靠近物体 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div c…

go实现判断20000数据范围内哪些是素数(只能被1和它本身整除的数),采用多协程和管道实现

实现一个并发程序&#xff0c;用于寻找 20000 以内的所有素数。使用了 Goroutines 和 Channels 来分发和处理任务&#xff0c;并通过 WaitGroup&#xff08;实现为 exitChan&#xff09;来同步 Goroutines 的退出。 一.GO代码 package mainimport ("fmt""time…

docker安装confluence全套流程

docker安装confluence全套流程 1.安装mysql2.创建mysql容器3.拉取confluence7容器4.拷贝mysql驱动到confluence中:1195ef11d768为容器id(需要修改为你自己的)5.创建confluence容器6.激活confluence到数据连接可能需报数据库编码和环境隔离错误 1.安装mysql docker pull mysql/…

保姆版Vps安装灯塔(ARL)

因为灯塔的默认端口为5003&#xff0c;所以我们在安装之前就在防火墙里把我们的5003端口打开 打开端口步骤如下&#xff1a; 1.我们打开控制面板&#xff0c;在控制面板里点击 系统和安全 。如下图&#xff1a; 2.接着点击 Windows Defender防火墙,如下图&#xff1a; 3.再…

好用的流程图工具

分享工作中常用的装逼工具 目前市面上的流程图或者思维导图工具挺多的&#xff0c;但是有的会限制使用数量或者收费&#xff0c;典型的有processon、Xmind&#xff0c;推荐今天Mermaid(官网)。 快速上手 中文教程&#xff1a;Mermaid 初学者用户指南 | Mermaid 中文网。我们选择…

Spring | Spring中的Bean--下

Spring中的Bean: 4.Bean的生命周期5.Bean的配装配式 ( 添加Bean到IOC容器的方式 依赖注入的方式 )5.1 基于XML的配置5.2 基于Annotation (注解) 的装配 (更常用&#xff09;5.3 自动装配 4.Bean的生命周期 Spring容器可以管理 singleton作用域的Bean的生命周期&#xff0c;在此…

51单片机_电压采集器电压表

实物演示效果&#xff1a; https://www.bilibili.com/video/BV1My4y1F7xY/?vd_source6ff7cd03af95cd504b60511ef9373a1d 一、基本功能 利用51单片机作为主控芯片&#xff0c;3段式电压采集。模拟量经A/D&#xff08;ADC0809&#xff09;模数转换芯片&#xff0c;把模拟量转换…

【计算机网络】(1)OSI七层模型、协议、交换技术、路由器技术

文章目录 计算机网络功能与分类计算机网络的定义计算机网络的功能计算机网络的指标计算机网络的性能指标计算机网络的非性能指标 计算机网络的分布范围以及拓扑结构划分图计算机网络分类总线型拓扑星型拓扑环形图拓扑树型拓扑分布式拓扑 通信技术信道物理信道逻辑信道 发信机OS…

微信小程序(六)tabBar的使用

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1. 标签栏文字的内容以及默认与选中颜色 2. 标签栏图标的默认样式与选中样式 3. 标签选项路径页面 4.标签栏背景颜色 &#x1f43c;&#xff08;文末补充&#xff09;设置标签栏后为什么navigator标签无法跳转页…

ros2仿真学习04 -turtlebot3实现cartographer算法建图演示

安装看这里 https://blog.csdn.net/hai411741962/article/details/135619608?spm1001.2014.3001.5502 虚拟机配置&#xff1a; 内存16g cpu 4 核 磁盘40G,20G 不够 启动仿真 ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py启动成功如下 启动建图 重新开一个…

springboot 集成短信发送功能(人工智能编写)

要在Spring Boot中集成短信发送功能&#xff0c;你可以使用第三方的短信服务提供商的API来实现。以下是一个基本的示例代码&#xff0c;我是通过chatGPT4.0一键生成代码。 1. 添加依赖&#xff1a;在pom.xml文件中添加相应的短信服务提供商的SDK依赖&#xff0c;例如阿里云的a…