数据库经典面试题

习题一

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.rhkb.cn/news/241501.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汽车生产污废水处理需要哪些工艺设备

对于汽车生产过程中产生的污废水处理&#xff0c;需要运用一系列的工艺设备来实现有效的清洁和回收利用。下面让我们一起来探索一下吧&#xff01; 首先&#xff0c;汽车生产工艺设备中最常见的是物理处理设备。物理处理包括沉淀、过滤和吸附等过程。其中&#xff0c;沉淀操作可…

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题三 模块一

竞赛需要完成三个阶段的任务&#xff0c;分别完成三个模块&#xff0c;总分共计 1000分。三个模块内容和分值分别是&#xff1a; 1.第一阶段&#xff1a;模块一 网络平台搭建与设备安全防护&#xff08;180 分钟&#xff0c;300 分&#xff09;。 2.第二阶段&#xff1a;模块二…

Android Studio安卓开发入门第一天

1.用Button实现页面跳转 &#xff08;1&#xff09;在主页面activity_main.xml中添加Button&#xff1a; <Buttonandroid:layout_width"wrap_content"android:layout_height"wrap_content"android:id"id/abd"android:text"hello&#…

洛谷P5731 【深基5.习6】蛇形方阵(C语言)

思路感觉还是比较好想的。 从 1 到 n 依次算。先往右&#xff0c;走到头往下&#xff0c;再走到头往左&#xff0c;以此类推。 #include<stdio.h>int main() {int n, i, j, k1,t0;scanf("%d", &n);int a[100][100];if (n % 2 0)t n / 2;elset n / 2 …

【手撕C语言 第四集】分支和循环(上)

文章目录 一、什么是语句&#xff1f;二、分支语句&#xff08;选择结构&#xff09;1.if语句悬空elseif书写形式的对比 2.switch语句在switch语句中的 breakdefault子句 3.循环语句while循环while语句中的break和continue总结&#xff1a; continue介绍总结: 一、什么是语句&a…

16.桥接模式

桥接模式 介绍 桥接模式是一种结构型设计模式&#xff0c;它通过将抽象部分与实现部分分离&#xff0c;使它们可以独立变化。这种模式通过组合的方式来实现&#xff0c;而不是继承。桥接模式通过将抽象和实现解耦&#xff0c;从而实现抽象和实现的分离&#xff0c;使得系统更加…

2023年全球软件架构师峰会(ArchSummit深圳站):核心内容与学习收获(附大会核心PPT下载)

本次峰会是一次重要的技术盛会&#xff0c;旨在为全球软件架构师提供一个交流和学习的平台。本次峰会聚焦于软件架构的最新趋势、最佳实践和技术创新&#xff0c;吸引了来自世界各地的软件架构师、技术专家和企业领袖。 在峰会中&#xff0c;与会者可以了解到数字化、AIGC、To…

Doris配置外表以及多个Hive外表的配置

1.场景分析 以Clickhouse、Doris、Starrocks等为代表的mpp分析数据库正在快速的兴起&#xff0c;以其高效查询、跨库整合能力收到广大技术人员的喜爱。本文主要浅显介绍下作者在使用Doris时&#xff0c;通过建立catlog进行跨库查询。 废话不多少&#xff0c;直接上代码 2.相关…

element-ui的el-upload组件实现上传拖拽排序图片顺序(sortablejs)

<template><!-- 省略其他配置 --><el-upload ref"upload" :file-list.sync"fileList"></el-upload></template><script>import Sortable from sortablejs;export default {data() {return {fileList: []};},mounted()…

transbigdata笔记:清理研究区域内的轨迹漂移

1 方法介绍 transbigdata 考虑了三种轨迹漂移&#xff0c;需要被清理 速度阈值&#xff1a;如果当前轨迹数据点与之前&#xff08;和后续&#xff09;轨迹数据点之间的速度超过阈值&#xff0c;则视为漂移。 距离阈值&#xff1a;如果当前轨迹数据点与上一个&#xff08;和后…

力扣每日一练(24-1-18)

经验一&#xff1a;不要把问题想复杂 Python&#xff1a; min_price float(inf)max_profit 0for price in prices:min_price min(min_price, price)max_profit max(max_profit, price - min_price)return max_profit C#&#xff1a; public int MaxProfit(int[] prices) {i…

Power BI - 5分钟学习新增自定义列

每天5分钟&#xff0c;今天介绍Power BI新增自定义列 我们在日常工作中有时需要对导入的数据进行额外处理&#xff0c;如两个字符串列拼接【产品编号】【产品名称】&#xff0c;或者【数据量】*【价格】得到销售值等等。 以计算产品销售为例&#xff0c;导入样例数据&#xff…

OpenGL Assimp加载各类型模型(.obj、.fbx、.glb、.3ds)

1.简介 本博客以.glb格式为例&#xff0c;加载glb格式的3d模型&#xff0c;网上找了一圈&#xff0c;基本上都是根据OpenGL官方示例&#xff0c;加载.obj格式的3d模型。 下面以.obj和.glb格式的3D模型简单介绍一下。 常见的.obj格式的3D模型如下所示&#xff1a;纹理都已经被…

Git一台电脑 配置多个账号

Git一台电脑 配置多个账号 Git一台电脑 配置多个账号 常用的Git版本管理有 gitee github gitlab codeup &#xff0c;每个都有独立账号&#xff0c;经常需要在一个电脑上向多个代码仓提交后者更新代码&#xff0c;本文以ssh 方式为例配置 1 对应账号 公私钥生成 建议&#…

计算机找不到msvcp120.dll的修复方法,总结五种可靠的方法

在计算机使用过程中&#xff0c;遭遇“找不到msvcp120.dll”这一问题的困扰是许多用户都可能遇到的情况。这一特定的系统文件msvcp120.dll&#xff0c;作为Microsoft Visual C Redistributable Package的重要组成部分&#xff0c;对于运行某些应用程序至关重要。当系统提示无法…

统计学-R语言-6.1

文章目录 前言参数估计的原理总体、样本和统计量点估计区间估计评价估计量的标准有效性 总体均值的区间估计一个总体均值的估计&#xff08;大样本&#xff09;一个总体均值的估计&#xff08;小样本估计&#xff09; 练习 前言 本篇文章将开始介绍参数估计的相关知识。 参数估…

新手入门Java第二阶段 封装概念及包、访问修饰符和static修饰符介绍

第三章 封装 课前回顾 1.带参方法如何定义 访问修饰符 返回值类型 方法名(参数列表){//形式参数列表}对象名.方法名(实参列表);2.方法的参数是如何传递的 在java中&#xff0c;方法参数的传递都是值传递。只是基本数据类型作为参数传递时&#xff0c;传递的是值的拷贝。引用…

Linux--磁盘与文件系统

目录 1.什么是文件系统 2.磁盘 2.1什么时磁盘 2.2磁盘的物理存储结构 2.3磁盘的逻辑抽象结构 3.磁盘文件系统&#xff08;EXT2&#xff09; inode Table(i结点表) Data Block inode Bitmap(inode位图) Block Bitmap(块位图) 在Linux如何删除文件 Group Descriptor Ta…

C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加)

文章目录 1.计算日期到天数转换题目详情代码思路 2.KY111 日期差值题目详情代码思路 3.KY222 打印日期题目详情代码 4.KY258 日期累加题目详情代码思路 1.计算日期到天数转换 传送门 题目详情 代码 #include <iostream> using namespace std; int GetDay(int year,int…

【创作活动】ChatGPT 和文心一言哪个更好用?

文章目录 文心一言优点缺点 ChatGPT优点缺点 Java编码能力比较对人工智能的看法 ChatGPT是由OpenAI开发的交互式AI大模型&#xff0c; 文心一言是由百度研发的知识增强大语言模型&#xff0c;本文从Java开发的角度对比一下哪个更好用&#xff08;本文仅用于投稿CSDN创造活动&am…