大型网站开发周期,公司外文网站制作,wordpress直播平台,公司招聘信息目录 目录#xff1a;
一.视图
1.介绍什么是视图
2.视图的语法
语法讲解
实例操作
二.MySQL面试题
1.SQL脚本
2.面试题实战
三.思维导图 目录#xff1a;
随着数字化时代的飞速发展#xff0c;数据库技术#xff0c;特别是MySQL#xff0c;已经成为IT领域中不可…目录 目录
一.视图
1.介绍什么是视图
2.视图的语法
语法讲解
实例操作
二.MySQL面试题
1.SQL脚本
2.面试题实战
三.思维导图 目录
随着数字化时代的飞速发展数据库技术特别是MySQL已经成为IT领域中不可或缺的一环。从简单的数据存储到复杂的数据分析从个人博客到大型企业的核心系统MySQL都在背后默默地发挥着作用。而在这不断演变的过程中我们对于MySQL的了解和掌握也需要与时俱进。
在之前的博客中我们已经探讨了MySQL的许多基础和进阶功能。但今天我们要深入到一个经常被忽视但又非常重要的主题——视图View。视图在数据库中起到了一个非常特殊的角色它能够简化复杂的查询操作提高数据的安全性并帮助我们更好地组织和理解数据。
此外为了更好地服务我们的读者这篇博客还将涉及到一些常见的MySQL面试题。通过解答这些问题我们不仅能够测试和巩固自己的知识还能为即将参加面试的朋友们提供一些参考和启示。
在接下来的篇幅中我们将深入探讨视图的创建、使用和优化以及解答那些常常在面试中出现的关于MySQL的疑问。希望通过这次的学习你能对MySQL有更深入的理解和掌握。
准备好了吗让我们开始这次的探索之旅
一.视图
1.介绍什么是视图 虚拟表和普通表一样使用 2.视图的语法
语法讲解
创建视图
create view 视图名 as 查询语句 ;
视图修改
#方式一
create or replace view 视图名
as
查询语句;#方式二
alert view 视图名
as
查询语句;
删除视图
drop view 视图名
查看视图
#查看视图相关字段
desc 视图名;
#查看视图相关语句
show create view 视图名;实例操作
创建视图
CREATE VIEW v_su as
SELECT s.*,sc.cid,sc.score
FROMt_mysql_student s,t_mysql_score sc
WHEREs.sid sc.sid; 修改视图 ALTER VIEW v_su as
SELECT s.*,sc.cid,sc.score
FROMt_mysql_student s,t_mysql_score sc
WHEREs.sid sc.sid CREATE or REPLACE VIEW v_zx as
SELECT s.*,sc.cid,sc.score
FROMt_mysql_student s,t_mysql_score sc
WHEREs.sid sc.sid; 查看视图
desc v_sU SHOW CREATE view v_su 二.MySQL面试题
1.SQL脚本
/*Navicat Premium Data TransferSource Server : localhostSource Server Type : MySQLSource Server Version : 80018Source Host : localhost:3306Source Schema : mybatis_ssmTarget Server Type : MySQLTarget Server Version : 80018File Encoding : 65001Date: 04/07/2023 23:53:33
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS 0;-- ----------------------------
-- Table structure for t_mysql_course
-- ----------------------------
DROP TABLE IF EXISTS t_mysql_course;
CREATE TABLE t_mysql_course (cid varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 课程编号,cname varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 课程名称,tid varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 教师编号,PRIMARY KEY (cid) USING BTREE
) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 课程信息表 ROW_FORMAT Dynamic;-- ----------------------------
-- Records of t_mysql_course
-- ----------------------------
INSERT INTO t_mysql_course VALUES (01, 语文, 02);
INSERT INTO t_mysql_course VALUES (02, 数学, 01);
INSERT INTO t_mysql_course VALUES (03, 英语, 03);-- ----------------------------
-- Table structure for t_mysql_score
-- ----------------------------
DROP TABLE IF EXISTS t_mysql_score;
CREATE TABLE t_mysql_score (sid varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 学生编号外键,cid varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 课程编号外键,score float NULL DEFAULT 0 COMMENT 成绩,INDEX sid(sid) USING BTREE,INDEX cid(cid) USING BTREE,CONSTRAINT t_mysql_score_ibfk_1 FOREIGN KEY (sid) REFERENCES t_mysql_student (sid) ON DELETE RESTRICT ON UPDATE RESTRICT,CONSTRAINT t_mysql_score_ibfk_2 FOREIGN KEY (cid) REFERENCES t_mysql_course (cid) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 成绩信息表 ROW_FORMAT Dynamic;-- ----------------------------
-- Records of t_mysql_score
-- ----------------------------
INSERT INTO t_mysql_score VALUES (01, 01, 80);
INSERT INTO t_mysql_score VALUES (01, 02, 90);
INSERT INTO t_mysql_score VALUES (01, 03, 99);
INSERT INTO t_mysql_score VALUES (02, 01, 70);
INSERT INTO t_mysql_score VALUES (02, 02, 60);
INSERT INTO t_mysql_score VALUES (02, 03, 80);
INSERT INTO t_mysql_score VALUES (03, 01, 80);
INSERT INTO t_mysql_score VALUES (03, 02, 80);
INSERT INTO t_mysql_score VALUES (03, 03, 80);
INSERT INTO t_mysql_score VALUES (04, 01, 50);
INSERT INTO t_mysql_score VALUES (04, 02, 30);
INSERT INTO t_mysql_score VALUES (04, 03, 20);
INSERT INTO t_mysql_score VALUES (05, 01, 76);
INSERT INTO t_mysql_score VALUES (05, 02, 87);
INSERT INTO t_mysql_score VALUES (06, 01, 31);
INSERT INTO t_mysql_score VALUES (06, 03, 34);
INSERT INTO t_mysql_score VALUES (07, 02, 89);
INSERT INTO t_mysql_score VALUES (07, 03, 98);-- ----------------------------
-- Table structure for t_mysql_student
-- ----------------------------
DROP TABLE IF EXISTS t_mysql_student;
CREATE TABLE t_mysql_student (sid varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 学生编号,sname varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 学生名称,sage varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 学生年龄,ssex varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 学生性别,PRIMARY KEY (sid) USING BTREE
) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 学生信息表 ROW_FORMAT Dynamic;-- ----------------------------
-- Records of t_mysql_student
-- ----------------------------
INSERT INTO t_mysql_student VALUES (01, 赵雷, 1990-01-01, 男);
INSERT INTO t_mysql_student VALUES (02, 钱电, 1990-12-21, 男);
INSERT INTO t_mysql_student VALUES (03, 孙风, 1990-12-20, 男);
INSERT INTO t_mysql_student VALUES (04, 李云, 1990-12-06, 男);
INSERT INTO t_mysql_student VALUES (05, 周梅, 1991-12-01, 女);
INSERT INTO t_mysql_student VALUES (06, 吴兰, 1992-01-01, 女);
INSERT INTO t_mysql_student VALUES (07, 郑竹, 1989-01-01, 女);
INSERT INTO t_mysql_student VALUES (09, 张三, 2017-12-20, 女);
INSERT INTO t_mysql_student VALUES (10, 李四, 2017-12-25, 女);
INSERT INTO t_mysql_student VALUES (11, 李四, 2012-06-06, 女);
INSERT INTO t_mysql_student VALUES (12, 赵六, 2013-06-13, 女);
INSERT INTO t_mysql_student VALUES (13, 孙七, 2014-06-01, 女);-- ----------------------------
-- Table structure for t_mysql_teacher
-- ----------------------------
DROP TABLE IF EXISTS t_mysql_teacher;
CREATE TABLE t_mysql_teacher (tid varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 教师编号,tname varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 教师名称,PRIMARY KEY (tid) USING BTREE
) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 教师信息表 ROW_FORMAT Dynamic;-- ----------------------------
-- Records of t_mysql_teacher
-- ----------------------------
INSERT INTO t_mysql_teacher VALUES (01, 张三);
INSERT INTO t_mysql_teacher VALUES (02, 李四);
INSERT INTO t_mysql_teacher VALUES (03, 王五);SET FOREIGN_KEY_CHECKS 1;2.面试题实战 1.查询 01 课程比 02 课程成绩高的学生的信息及课程分数 #考察内容联表查询 内连接 所需表:t_mysql_student t_mysql_score SELECTs.*,( CASE WHEN t1.cid 01 THEN t1.score END ) 语文,( CASE WHEN t2.cid 02 THEN t2.score END ) 数学
FROMt_mysql_student s,( SELECT * FROM t_mysql_score WHERE cid 01 ) t1,( SELECT * FROM t_mysql_score WHERE cid 02 ) t2
WHEREs.sid t1.sid AND t1.sid t2.sid AND t1.score t2.score 2. 查询同时存在 01 课程和 02 课程的情况 SELECTs.*,( CASE WHEN t1.cid 01 THEN t1.score END ) 语文,( CASE WHEN t2.cid 02 THEN t2.score END ) 数学
FROMt_mysql_student s,( SELECT * FROM t_mysql_score WHERE cid 01 ) t1,( SELECT * FROM t_mysql_score WHERE cid 02 ) t2
WHEREs.sid t1.sid AND t1.sid t2.sid 03查询存在 01 课程但可能不存在 02 课程的情况(不存在时显示为 null ) #外连接 SELECT * from
( SELECT * FROM t_mysql_score WHERE cid 01 ) t1
LEFT JOIN
( SELECT * FROM t_mysql_score WHERE cid 02 ) t2
on t1.sidt2.sid 04查询不存在 01 课程但存在 02 课程的情况 #子查询 SELECT*
FROMt_mysql_student s,t_mysql_score sc
WHEREs.sid sc.sid AND s.sid NOT IN ( SELECT sid FROM t_mysql_score WHERE cid 01 ) AND sc.cid 02 05查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩 #聚合函数》 分组 外连接 SELECTs.sid,s.sname,ROUND( AVG( sc.score ) ) 分数
FROMt_mysql_student sLEFT JOIN t_mysql_score sc ON s.sid sc.sid
GROUP BYs.sid,s.sname
HAVING分数 60 06查询在t_mysql_score表存在成绩的学生信息 SELECTs.sid,s.sname
FROMt_mysql_student sINNER JOIN t_mysql_score sc ON s.sid sc.sid
GROUP BYs.sid,s.sname 07查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null ) #考核点 聚合函数 外连接 SELECTs.sid,s.sname,COUNT( sc.cid ),SUM( sc.score )
FROMt_mysql_score sc,t_mysql_student s
WHEREsc.sid s.sid
GROUP BYs.sid,s.sname 08查询「李」姓老师的数量 select count(*) from t_mysql_teacher where tname like 李% 三.思维导图