首页 > 数据库 >SQL训练营:第十八章 视图View —— 数据界的“魔术镜”!

SQL训练营:第十八章 视图View —— 数据界的“魔术镜”!

时间:2025-01-01 13:28:00浏览次数:3  
标签:name -- movie 视图 movies SQL id View

嘿,各位数据界的小伙伴们,欢迎来到SQL训练营的第十八章!这一章,咱们要玩转一个超级有用的工具——视图View。视图就像是数据界的“魔术镜”,能让你看到数据的不同面貌,还能简化、格式化、过滤数据,甚至计算新字段!是不是听起来就像变魔术一样?那就跟着我一起来探索这个“魔术镜”吧!准备好了吗?让我们开始吧!


第一节:准备相关基础表和数据

为了方便我们练习视图,我们将创建几个新的表格,并插入一些与前几章不同的数据。假设我们有一个电影租赁平台,需要记录电影、导演、演员和租赁信息。我们将创建四个表格:movies(电影表)、directors(导演表)、actors(演员表)和 rentals(租赁表),并插入一些初始数据。

1. 创建表格
movies 表格(电影信息)
-- 创建 "movies" 表格,包含电影的基本信息
CREATE TABLE movies (
    movie_id INT PRIMARY KEY AUTO_INCREMENT,  -- 电影编号,自动递增
    title VARCHAR(100),                       -- 电影名称
    release_year YEAR,                        -- 上映年份
    director_id INT,                          -- 导演编号
    genre VARCHAR(50)                         -- 电影类型
);
directors 表格(导演信息)
-- 创建 "directors" 表格,包含导演的基本信息
CREATE TABLE directors (
    director_id INT PRIMARY KEY AUTO_INCREMENT,  -- 导演编号,自动递增
    first_name VARCHAR(50),                      -- 导演名
    last_name VARCHAR(50)                        -- 导演姓
);
actors 表格(演员信息)
-- 创建 "actors" 表格,包含演员的基本信息
CREATE TABLE actors (
    actor_id INT PRIMARY KEY AUTO_INCREMENT,     -- 演员编号,自动递增
    first_name VARCHAR(50),                      -- 演员名
    last_name VARCHAR(50),                       -- 演员姓
    movie_id INT                                 -- 所参演的电影编号
);
rentals 表格(租赁信息)
-- 创建 "rentals" 表格,包含租赁的基本信息
CREATE TABLE rentals (
    rental_id INT PRIMARY KEY AUTO_INCREMENT,    -- 租赁编号,自动递增
    customer_name VARCHAR(100),                  -- 客户姓名
    movie_id INT,                                -- 租赁的电影编号
    rental_date DATE,                            -- 租赁日期
    return_date DATE                             -- 归还日期
);
2. 插入数据
movies 表格数据
-- 插入五条电影记录
INSERT INTO movies (title, release_year, director_id, genre)
VALUES ('The Godfather', 1972, 1, 'Crime');

INSERT INTO movies (title, release_year, director_id, genre)
VALUES ('Pulp Fiction', 1994, 2, 'Crime');

INSERT INTO movies (title, release_year, director_id, genre)
VALUES ('Inception', 2010, 3, 'Sci-Fi');

INSERT INTO movies (title, release_year, director_id, genre)
VALUES ('The Dark Knight', 2008, 3, 'Action');

INSERT INTO movies (title, release_year, director_id, genre)
VALUES ('Forrest Gump', 1994, 4, 'Drama');
directors 表格数据
-- 插入五条导演记录
INSERT INTO directors (first_name, last_name)
VALUES ('Francis', 'Coppola');

INSERT INTO directors (first_name, last_name)
VALUES ('Quentin', 'Tarantino');

INSERT INTO directors (first_name, last_name)
VALUES ('Christopher', 'Nolan');

INSERT INTO directors (first_name, last_name)
VALUES ('Robert', 'Zemeckis');
actors 表格数据
-- 插入五条演员记录
INSERT INTO actors (first_name, last_name, movie_id)
VALUES ('Marlon', 'Brando', 1);

INSERT INTO actors (first_name, last_name, movie_id)
VALUES ('John', 'Travolta', 2);

INSERT INTO actors (first_name, last_name, movie_id)
VALUES ('Leonardo', 'DiCaprio', 3);

INSERT INTO actors (first_name, last_name, movie_id)
VALUES ('Christian', 'Bale', 4);

INSERT INTO actors (first_name, last_name, movie_id)
VALUES ('Tom', 'Hanks', 5);
rentals 表格数据
-- 插入五条租赁记录
INSERT INTO rentals (customer_name, movie_id, rental_date, return_date)
VALUES ('Alice Smith', 1, '2023-01-15', '2023-01-22');

INSERT INTO rentals (customer_name, movie_id, rental_date, return_date)
VALUES ('Bob Johnson', 2, '2023-02-10', '2023-02-17');

INSERT INTO rentals (customer_name, movie_id, rental_date, return_date)
VALUES ('Charlie Brown', 3, '2023-03-05', '2023-03-12');

INSERT INTO rentals (customer_name, movie_id, rental_date, return_date)
VALUES ('Diana Prince', 4, '2023-04-20', '2023-04-27');

INSERT INTO rentals (customer_name, movie_id, rental_date, return_date)
VALUES ('Eve Adams', 5, '2023-05-12', '2023-05-19');

现在,我们的 moviesdirectorsactorsrentals 表格已经准备好了,里面有一些电影、导演、演员和租赁的信息。接下来,我们将学习如何使用视图来简化和美化这些数据查询。

幽默小贴士:

视图就像是给数据库“化妆”,你可以通过它让数据看起来更加漂亮和易于理解。别担心,SQL 会帮你搞定这一切!

标签:name,--,movie,视图,movies,SQL,id,View
From: https://blog.csdn.net/caifox/article/details/144861847

相关文章

  • Python PySide + SQLite3 开发的 《️ POS点销管理系统》可用初型
    图:   目录:开发说明书:POS点销管理系统开发说明1.系统概述本系统是一个基于PythonPySide6开发的现代化POS点销管理系统,集成了商品管理、库存管理、会员管理、订单管理等核心功能。2.技术栈开发语言:Python3.8+GUI框架:PySide6数据库:SQLite3......
  • MySQL日志体系的深度解析:功能与差异
    优质博文:IT-BLOG-CN一、binlogbinlog记录数据库表结构和表数据变更,比如update/delete/insert/truncate/create,它不会记录select。存储着每条变更的SQL语句和XID事务Id等等。binlog日志文件如下:[root@192.168.10.11]#mysqlbinlogmysql-binlog.0000012..........#at......
  • MySQL DBA需要掌握的 7 个问题
    1. MySQL适用的场景是什么?数据量建议单实例T级或以内,不依赖存储过程、函数、触发器的传统oltp场景都适用,因为是一个相对轻量级的数据库灾备使用MySQL各类的高可用方案即可,比如主从、mha、mgr等。2. MySQL巡检应该怎么做?优先关注哪些参数?可以从以下几个方面去做:服务器配......
  • General ML interview questions
    QuestionsHowtocombatwithoverfittingDifferencebetweenRandomForestandXGBoostHowtohandlemissingvalue?Howtotrainaregressiontree?DifferencebetweenGradientDescent(GD)andStochasticGradientDescent(SGD)MoreVariantsofSGDNon-differ......
  • SQL进阶技巧:如何生成一个员工及其有效门禁卡的列表?
    目录0需求描述1数据准备2问题分析方法1:使用窗口函数row_number()方法2:采用casewhen 3小结往期精彩0需求描述目标:生成一个员工及其有效门禁卡的列表。规则员工可能有多个门禁卡。每个员工在同一时间只能有一个有效的门禁卡。默认最新的门禁卡是有效的(因为......
  • ScrollViewContext.triggerTwoLevel
    ScrollViewContext.triggerTwoLevel(Objectobject)基础库3.0.0开始支持,低版本需做兼容处理。小程序插件:支持功能描述触发下拉二级。参数Objectobject属性类型默认值必填说明durationnumber500否动画时长easingFunctionstringease否动画曲线......
  • ScrollViewContext.triggerRefresh
    ScrollViewContext.triggerRefresh(Objectobject)基础库3.0.0开始支持,低版本需做兼容处理。小程序插件:支持功能描述触发下拉刷新。参数Objectobject属性类型默认值必填说明durationnumber300否动画时长easingFunctionstringease否动画曲线......
  • ScrollViewContext.scrollTo
    ScrollViewContext.scrollTo(Objectobject)基础库2.14.4开始支持,低版本需做兼容处理。小程序插件:支持微信Windows版:支持微信Mac版:支持功能描述滚动至指定位置参数Objectobject属性类型默认值必填说明topnumber否顶部距离leftnumber否......
  • ScrollViewContext.scrollIntoView
    ScrollViewContext.scrollIntoView(stringselector,objectScrollIntoViewOptions)基础库2.14.4开始支持,低版本需做兼容处理。小程序插件:支持微信Windows版:支持微信Mac版:支持功能描述滚动至指定位置参数stringselector元素选择器objectScrollIntoViewOpti......
  • ScrollViewContext.closeTwoLevel
    ScrollViewContext.closeTwoLevel(Objectobject)基础库3.0.0开始支持,低版本需做兼容处理。小程序插件:支持功能描述关闭下拉二级。参数Objectobject属性类型默认值必填说明durationnumber500否动画时长easingFunctionstringease否动画曲线......