臨時表、視圖與系統函數_Lab2

来源:https://www.cnblogs.com/cwh-top/archive/2023/10/08/17749854.html
-Advertisement-
Play Games

前言 每個索引都是一顆B+樹,對於聚簇索引,每一條完整記錄都存儲在B+樹都葉子節點上;對於其他索引,葉子節點存儲了索引列和主鍵。這麼做都是為了提升查詢速度,那麼在實際使用中,是不是應該給所有列都添加索引呢,索引該如何使用呢? 先見一張表,隨機添加一些數據: CREATE TABLE single_t ...


          實驗二 臨時表、視圖與系統函數

實驗目的:

理解CTE與視圖的知識,掌握臨時表、CTE與視圖的創建與使用方法,能夠根據需要創建CTE、視圖,掌握視圖應用技術,熟悉常用系統函數的應用方法。

實驗內容:

1、 針對指定的表進行全文檢索配置,利用全文檢索檢索記錄。
2、 創建視圖。
3、 練習常用系統函數使用方法

實驗過程及要求:

1、基於派生表或者CTE命令,完成以下操作,並把相應的命令寫在空白處。
(1)寫出查詢學生基本信息的語句,包括學號、姓名、專業班級、本人平均分(score1)、本班平均分(score1)、本人完成學分總計。
(2)查詢周四第5節有課的同學的名單,顯示學號、姓名、專業班級、課程名。

2、寫出以下視圖的創建命令,並把命令寫在空白處。
(1)查看課程表的視圖,顯示專業班級、課程名、教室、上課老師姓名
(2)創建學生視圖,通過該視圖只能更新數據學院的學生信息
(3)查看學生基本信息的視圖,包括學號、姓名、性別、年齡、本人電話、班級名稱、班導姓名、班導電話

4、 自主練習常用系統函數,理解函數的功能與含義。寫出以下命令與結果
(1) 顯示系統時間2年3個月後的日期與當年第幾周,輸出格式為:2023-09-21 38
(2)輸出一個基於你的MySQL的UUID
(3)輸出你的姓名全拼使用password、rsa、aes加密後的密碼。格式如下:
zhangsan
password('zhangsan')=
rsa('zhangsan')=
aes('zhangsan')=


具體實驗過程:

1. 基於派生表或者CTE命令,完成以下操作,並把相應的命令寫在空白處。

  (1)查詢學生基本信息的語句,包括學號、姓名、專業班級、本人平均分(score1)、本班平均分(score1)、本人完成學分總計。

-- 創建一個CTE
WITH student_info AS (
  SELECT ustudent.Sid, ustudent.Sname, ugrade.gname 
    AS
        class, usc.score1, AVG(usc.score1) OVER (PARTITION BY ugrade.gid) 
    AS 
        class_avg, SUM(ucourse.credit) OVER (PARTITION BY ustudent.Sid) 
    AS 
        total_credits
  FROM ustudent
  JOIN ugrade ON ustudent.gid = ugrade.gid
  JOIN usc ON ustudent.Sid = usc.sid
  JOIN ucourse ON usc.cid = ucourse.cid
)

-- 從CTE表中獲取信息
SELECT Sid, Sname, class, score1, class_avg, total_credits
FROM student_info;

AVG(usc.score1) OVER (PARTITION BY ugrade.gid) 為視窗函數的用法 partition by 是根據指定的分組

img


  (2)查詢周四第5節有課的同學的名單,顯示學號、姓名、專業班級、課程名。


WITH thursday_schedule AS
(
  SELECT ustudent.Sid, ustudent.Sname, ugrade.gname AS class, ucourse.Cname
  FROM ujobtable
  JOIN ustudent ON ujobtable.gid = ustudent.gid
  JOIN ugrade ON ustudent.gid = ugrade.gid
  JOIN ucourse ON ujobtable.cid = ucourse.Cid
  WHERE ujobtable.week = 4 AND ujobtable.timeseg like '%5%'
)
SELECT Sid, Sname, class, Cname
FROM thursday_schedule;

img



2. 寫出以下視圖的創建命令,並把命令寫在空白處。

  (1)查看課程表的視圖,顯示專業班級、課程名、教室、上課老師姓名。

CREATE VIEW course_schedule_view AS
SELECT ugrade.gname AS class, ucourse.Cname, ujobtable.room, uteacher.tname AS teacher_name
FROM ujobtable
JOIN ugrade ON ujobtable.gid = ugrade.gid
JOIN ucourse ON ujobtable.cid = ucourse.Cid
JOIN uteacher ON ujobtable.tid = uteacher.tid;

img

  (2)創建學生視圖,通過該視圖只能更新數據學院的學生信息。

CREATE VIEW student_update_view AS
SELECT *
FROM ustudent
WHERE gid IN (SELECT gid FROM ugrade WHERE did = 'CS');

img


  (3)查看學生基本信息的視圖,包括學號、姓名、性別、年齡、本人電話、班級名稱、班導姓名、班導電話。


CREATE VIEW student_info_view AS
SELECT ustudent.Sid, ustudent.Sname, ustudent.Ssexy AS gender, 
        YEAR(CURDATE()) - YEAR(ustudent.Sbdate) AS age, 
        ustudent.stele AS personal_phone,ugrade.gname AS class,
       homework.uteacher.tname AS class_teacher, homework.uteacher.tele AS class_teacher_phone
FROM ustudent
JOIN ugrade ON ustudent.gid = ugrade.gid
JOIN ujobtable ON ustudent.gid = ujobtable.gid
JOIN homework.uteacher ON ujobtable.tid = homework.uteacher.tid;

img


4. 自主練習常用系統函數,理解函數的功能與含義。寫出以下命令與結果

  (1)顯示系統時間2年3個月後的日期與當年第幾周,輸出格式為:2023-09-21 38

select DATE_ADD(DATE_SUB(curdate(), INTERVAL 2 YEAR ),INTERVAL 3 MONTH)
     , WEEK(CURDATE()) AS CurrentWeek;

img

  (2)輸出一個基於你的MySQL的UUID

SELECT UUID() AS generated_uuid;

img

  (3)輸出你的姓名全拼使用password、rsa、aes加密後的密碼。

格式如下:
zhangsanpassword('zhangsan')= PASSWORD('zhangsan')
rsa('zhangsan')= RSA_ENCRYPT('zhangsan', 'encryption_key')
aes('zhangsan')= AES_ENCRYPT('zhangsan', 'encryption_key')


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、功能介紹 海量數據操作ORM性能瓶頸在實體轉換上面,並且不能使用常規的Sql去實現 當列越多轉換越慢,SqlSugar將轉換性能做到極致,並且採用資料庫最佳API 操作資料庫達到極限性能,當然你如果不用sqlsugar瞭解一下原理也可以使用其他ORM實現 BulkCopy BulkCopy是一種 ...
  • 支持.Net Core(2.0及以上)與.Net Framework(4.0及以上)(註意:升級了,可以覆蓋到早期的.Net Framework4.0了,而且修複了資料庫欄位為Null時報錯的問題,無敵了!!) 此工具在IDataAccess介面中提供。 已被.Net圈內多家大廠採用! IDataA ...
  • 一:背景 1. 講故事 中秋國慶長假結束,哈哈,在老家拍了很多的短視頻,有興趣的可以上B站觀看:https://space.bilibili.com/409524162 ,今天繼續給大家分享各種奇奇怪怪的.NET生產事故,希望能幫助大家在未來的編程之路上少踩坑。 話不多說,這篇看一個.NET程式集泄 ...
  • 前言 上傳大文件時,原始HTTP文件上傳功能可能會影響使用體驗,此時使用分片上傳功能可以有效避免原始上傳的弊端。由於分片上傳不是HTTP標準的一部分,所以只能自行開發相互配合的服務端和客戶端。文件分片上傳在許多情況時都擁有很多好處,除非已知需要上傳的文件一定非常小。分片上傳可以對上傳的文件進行快速分 ...
  • Debian,作為最受歡迎的 Linux 發行版之一,於 2023 年 6 月 10 日正式發佈了其最新版本 Debian 12,代號“Bookworm”。Debian 12 帶來了許多新特性和改進,其中最引人註目的是 Linux 內核的升級,從之前的 5.10 LTS 升級到了 6.1。 這兩天嘗 ...
  • Css實現瀏覽滾動條效果 前言 也是有大半個月沒有更新文章了,大部分時間都在玩,然後就是入職的事。今天就更新一個小知識,刷抖音的時候看到的,感覺還不錯。 屬性介紹 關鍵屬性animation-timeline:動畫名稱; 用於控制動畫的時間軸。它可以讓你在一個元素上同時播放多個動畫,控制它們的開始時 ...
  • 一、簡介 ssh(secure shell,安全外殼協議),該協議有2個常用的作用:遠程連接、遠程文件傳輸。 協議使用埠號:預設是22。 可以是被修改的,如果需要修改,則需要修改ssh服務的配置文件: #/etc/ssh/ssh_config 埠號可以修改,但是得註意2個事項: a. 註意範圍, ...
  • 為什麼要使用skb_reserve函數把邊界對齊 skb_reserve 函數通常用於網路編程中的數據包處理,特別是在構建自定義協議棧或數據包處理模塊時。它的作用是為數據包的頭部預留額外的空間,以確保數據包的頭部數據在記憶體中是對齊的。 邊界對齊的概念是因為許多硬體平臺和網路協議要求數據包頭的位元組對齊 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...