数据库经典面试题

习题一

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.hqwc.cn/news/415874.html

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

相关文章

【算法】使用优先级队列(堆)解决算法题(TopK等)(C++)

文章目录 1. 前言2. 算法题1046.最后一块石头的重量703.数据流中的第K大元素 2.5 如何选择大根堆 与 小根堆&#xff1f; 为什么选择大根堆&#xff08;小根堆&#xff09;&#xff1f;692.前K个高频单词295.数据流的中位数 1. 前言 我们知道&#xff1a;优先级队列是一种常用…

神器yakit之web fuzzer功能

前言 yakit并不像burp一样单独设置爆破模块&#xff0c;但是yakit也是可以爆破的&#xff0c;并且更好用&#xff08;个人感觉&#xff09;。 手工测试场景中需要渗透人员对报文进行反复的发送畸形或者特定的payload进行查看服务器的反馈并以此来进行下一步的判断。 Fuzz标签便…

C#MQTT编程08--MQTT服务器和客户端(cmd版)

1、前言 前面完成了winform版&#xff0c;wpf版&#xff0c;为什么要搞个cmd版&#xff0c;因为前面介绍了mqtt的报文结构&#xff0c;重点分析了【连接报文】&#xff0c;【订阅报文】&#xff0c;【发布报文】&#xff0c;这节就要就看看实际报文是怎么组装的&#xff0c;这…

016-Vue-黑马2023:前后端分离开发(在线接口文档),前端工程化、Element、vue编写一个完成页面、Vue路由、vue打包部署到nginx

第三节 前后端分离开发 1、介绍 开发模式 前后端混合开发&#xff1a;传统开发模式 前后端分离开发&#xff1a;当前最为主流的开发模式 页面原型需求案例&#xff1a;分析出接口文档 离线开发文档示例&#xff1a; 2、YAPI&#xff08;官网已停用&#xff09; 202…

手机改直供电移除电池后使用改充电器供电改充电宝供电反复重启无法启动进入界面后重启黑屏

手机改直供电移除电池后使用改充电器供电改充电宝供电反复重启无法启动进入界面后重启黑屏 手机直供电改造拆电池问题接二连三无法连接电脑手机突然关机&#xff0c;反复重启 供电的解决方案新的希望 安装米家APP总结 手机直供电改造 首先我还是要声明一下&#xff0c;我非专业…

php反序列化之pop链构造(基于重庆橙子科技靶场)

常见魔术方法的触发 __construct() //创建类对象时调用 __destruct() //对象被销毁时触发 __call() //在对象中调用不可访问的方法时触发 __callStatic() //在静态方式中调用不可访问的方法时触发 __get() //调用类中不存在变量时触发&#xff08;找有连续箭头的…

cusor编程IDE + 配置gpt3.5 api

1、购买gpt3.5的api 可以使用这个 https://www.mailline.org?from1726 也可以自己想办法去官网获取 如果是mailline&#xff0c;需要选择第一个&#xff0c;可以先买一个看看&#xff0c;我每次都是买10个&#xff0c;一个0.8元&#xff0c;有5美刀的额度。 下单后获取到ke…

Windows电脑桌面便利贴,桌面便签记事本怎么设置?

在繁忙的工作中&#xff0c;因为有很多重要的事需要等忙完手头上的事后或者明后天才能去做&#xff0c;但又怕忘记&#xff0c;经常会用便利贴先记录下来。对于Windows电脑桌面便利贴&#xff0c;不仅需要随时可以记录图文内容&#xff0c;还要能添加待办清单&#xff0c;设置提…

MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成

文章目录 前言问题分析解决方案方案一&#xff1a;使用 CDATA 区块&#xff0c;依然使用 “ > ” 或者 “ < ”方案二&#xff1a;使用转义字符 个人简介 前言 今天在使用 MyBatis 时出现报错&#xff1a; Caused by: org.xml.sax.SAXParseException: 元素内容必须由格式…

Git教程学习:01 Git简介与安装

目录 1 版本控制1.1 什么是版本控制系统&#xff1f;1.2 本地版本控制系统1.3 集中式版本控制系统1.4 分布式版本控制系统 2 Git简史3 Git的安装3.1 在Linux上安装3.2 初次运行Git前的配置 1 版本控制 1.1 什么是版本控制系统&#xff1f; 版本控制系统(Version Control Syst…

Gin 框架之Cookie与Session

文章目录 一、Cookie和Session的由来二、Cookie简介1. 什么是Cookie2. Cookie规范3. 安全性4. Cookie 关键配置 三、Session简介1. 什么是Session2. Session 安全性3. 如何让客户端携带 sess_id 四、使用 Gin 的 Session 插件4.1 介绍4.2 基本使用 五、 session与store5.1 会话…

面对根据角色和单子状态如何有效的进行按钮权限的控制

当阁下看到这个按钮权限控制时&#xff0c;该如何应对 按钮权限是根据工单流程状态进行的&#xff0c;当工单走到某个流程时就显示该表格中对应的状态&#xff0c;初看也就简简单单&#xff0c;仔细一看&#xff0c;逻辑还是很复杂&#xff0c; 首先这里得说一下背景&#xff…