SQL 復習 03

函數與關鍵字

用法說明
round(x, n)四舍五入,x為浮點數,n為保留的位數
ceil(x)向上取整
floor(x)向下取整
truncate(x, n)截斷x,n為保留的位,該位之后的數值置零,位數表示示例:321.123,其中小數點前用負值表示,小數點位數為0,即 truncate(x, 0) 等同于舍棄小數部分取整
mod(a, b)返回 a 除以 b 的余數
abs(x)返回 x 的絕對值
rand()返回 0-1 的隨機浮點數
sign(x)返回數值的符號,1、-1或者0
avg(column)返回字段或數組切片的均值
var_pop(column)返回字段或數組切片的總體方差
var_samp(column)返回字段或數組切片的樣本方差(計算方法不同)
std(column)總體標準差
stddev_samp(column)樣本標準差
replace(str, a, b)將字符串中的 a 替換為 b(從頭開始檢索,替換所有存在的片段)
concat(a, b)合并字符串(不能直接 a + b)(接受多個參數,按順序合并)
concat_ws(fill, a, b)合并并在兩者之間填充 fill 片段
left(str, n) / right(str, n)左起 / 右起取 n 個字符
substring(str, x, n)左起 x 位(含)取 n 個字符
ltrim / rtrim / trim(str)去除 左 / 右 / 兩邊的空格
repeat(str, n)重復 n 次
char_length(str) / length(str)返回字符數 / 字節數(mysql 中中文字符默認 3 字節)
coalesce(column, value)使用 value 填充字段 column 中的空值
cast(column as dtype)將 column 字段的數據類型轉換為 dtype(如 char)
convert(column, dtype)同上
now()返回當前的年月日時分秒,默認格式為"%Y-%m-%d %h:%i:%s"
year/month/day/hour/minute/second(x)依次返回 x 中包含的年/月/日/時/分/秒
date(time)/time(x)返回 x 中的日期/時間
weekofyear(x)/dayofweek(x)顧名思義,注意每周以周日為第 0 天,周一為第 1 天
date_format(x, format)format 可以是 “%Y-%m-%d”,或者"%w"(返回周幾)
date_add/date_sub(x, interval n unit)x前移或后移一段時間,n 為數值,unit 為 year、month、day 等關鍵字
date_diff(a, b)兩個時間日期的差值
select * INTO OUTFILE filename from tablename;輸出到文件,默認在安裝目錄的 Data 文件夾
select * from tablename LIMIT n, m從 n 行開始(含)取 m 行
select … where column LIKE “%str%”匹配字符串,用 % 表示任意數量的任意字符,用 - 表示單個任意字符
select … where column REGEXP “regexp”類似 LIKE,使用正則表達式,更精準的匹配
select … IF(condition, true_value, false_value) from table條件賦值
select … CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 … ELSE last_value END from table多個條件匹配賦值

面試問題

1. 規范化與反規范化

規范化(Normalization)是通過組織數據庫的字段和表來最小化冗余和依賴性的過程。規范化的主要目的是添加、刪除或修改可以在單個表中進行的字段。

反規范化(Denormalization)是一種用于從數據庫的高范式到低范式訪問數據的技術。這也是通過合并相關表中的數據將冗余引入到表中的過程。

2. 規范化的 5 中范式(Normal Form)

  • 1NF:從表中刪除所有重復的列。創建相關數據表并識別唯一列。
  • 2NF:滿足第一范式的所有要求。將數據子集放置在單獨的表中并使用主鍵在表之間創建關系。
  • 3NF:滿足 2NF 的所有要求。刪除不依賴于主鍵約束的列。
  • 4NF:滿足第三范式的所有要求,并且不應該具有多值依賴。
  • 5NF:滿足第四范式,且表必須可以分解為較小的表,除非那些表在邏輯上擁有與原始表相同的主鍵。

3. 索引的三種類型

索引是一種性能優化方法,可以更快地從表中檢索記錄。索引為每個值創建一個條目,檢索數據會更快

  • 唯一索引:如果列是唯一索引的,則此索引不允許字段具有重復值。當定義主鍵時,可以自動應用唯一索引。
  • 聚集索引:這種類型的索引重新排序表的物理順序并根據鍵值進行搜索。每個表只能有一個聚集索引。
  • 非聚集索引:非聚集索引不會改變表的物理順序并保持數據的邏輯順序。每個表可以有 999 個非聚集索引。

區別:聚集索引用于通過改變記錄的存儲方式來輕松地從數據庫中檢索數據。數據庫按設置為聚集索引的列對行進行排序。非聚集索引不會改變其存儲方式,而是在表中創建一個完全獨立的對象。搜索后它指向原始表行。

4. 什么是游標?

數據庫游標是一種可以遍歷表中的行或記錄的控件。這可以被視為指向一組行中的一行的指針。游標對于檢索、添加和刪除數據庫記錄等遍歷非常有用。

5. 什么是觸發器?

數據庫觸發器是自動執行以響應數據庫中的表或視圖上的某些事件的代碼或程序。主要是觸發器有助于維護數據庫的完整性。觸發器允許您在對特定表執行插入、更新或刪除命令時執行一批 SQL 代碼。實際上,觸發器是特殊類型的存儲過程,被定義為就地或數據修改后自動執行。

示例:當新學生添加到學生數據庫時,應在相關表(如考試、分數和出勤表)中創建新記錄。

6. 什么是局部變量和全局變量以及它們的區別?

局部變量是可以在函數內部使用或存在的變量。其他函數不知道它們,并且無法引用或使用這些變量。每當調用該函數時都可以創建變量。

全局變量是可以在整個程序中使用或存在的變量。在全局中聲明的相同變量不能在函數中使用。每當調用該函數時都無法創建全局變量。

7. 什么是自增?

自動增量關鍵字允許用戶創建一個在將新記錄插入表中時生成的唯一編號。Oracle 中可以使用 AUTO INCREMENT 關鍵字,SQL SERVER 中可以使用 IDENTITY 關鍵字。大多數情況下,只要使用 PRIMARY KEY,就可以使用此關鍵字。

8. 什么是數據倉庫?

數據倉庫是來自多個信息源的數據的中央存儲庫。這些數據經過整合、轉換并可用于挖掘和在線處理。倉庫數據有一個數據子集,稱為數據集市。

9. 存儲過程的優點和缺點?

存儲過程可以用作模塊化編程——意味著創建一次、存儲并在需要時多次調用。這支持更快的執行而不是執行多個查詢。這減少了網絡流量并為數據提供了更好的安全性。缺點是只能在數據庫中執行,占用數據庫服務器較多的內存。

10. 什么是在線事務處理(OLTP)?

在線事務處理或 OLTP 管理基于事務的應用程序,可用于數據輸入和輕松的數據檢索處理。這種處理使得簡單性和效率變得更容易。與 OTLP 相比,它更快、更準確的結果和費用。(示例 – 每天的銀行交易)

11. SQL支持編程嗎?

不,SQL 沒有循環或條件語句。它像命令語言一樣用于訪問數據庫。

12. 什么是數據庫的 ACID 屬性?

ACID 是原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)

ACID 屬性用于確保數據事務在數據庫系統中得到可靠處理。對數據的單個邏輯操作稱為事務。

  • 原子性:要求每筆交易要么全有,要么全無。這意味著如果事務的一部分失敗,則整個事務失敗并且數據庫狀態保持不變。
  • 一致性:一致性屬性確保數據必須滿足所有驗證規則。簡而言之,您可以說您的事務在未完成其狀態的情況下永遠不會離開數據庫。
  • 隔離性:該屬性確保不滿足執行的并發性。提供隔離的主要目標是并發控制。
  • 持久性:持久性僅僅意味著一旦事務被提交,它將保持不變,甚至可能出現斷電、崩潰或錯誤。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39072.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39072.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39072.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux 多進程

目錄 0x01 linux中特殊的進程 0x02 進程的標識 0x03 創建子進程 0x01 linux中特殊的進程 0號進程:idle進程,系統啟動加載的進程1號進程:systemd進程,系統初始化,是所有進程的祖先進程 init2號進程:kthre…

YOLOv5白皮書-第Y6周:模型改進

📌本周任務:模型改進📌 注:對yolov5l.yaml文件中的backbone模塊和head模塊進行改進。 任務結構圖: YOLOv5s網絡結構圖: 原始模型代碼: # YOLOv5 v6.0 backbone backbone:# [from, number, module, args]…

每日匯評:黃金在 200 日移動平均線附近似乎很脆弱,關注美國零售銷售

1、金價預計將鞏固其近期跌勢,至 6 月初以來的最低水平; 2、對美聯儲再次加息的押注繼續限制了貴金屬的上漲; 3、金融市場現在期待美國零售銷售報告帶來一些有意義的推動; 周二金價難以獲得任何有意義的牽引力,并在…

Mac RN環境搭建

IOS RN ios android原生環境搭建有時候是真惡心,電腦環境不一樣配置也有差異。 我已經安裝官網的文檔配置了ios環境 執行 npx react-nativelatest init AwesomeProject 報錯 然后自己百度查呀執行 gem update --system 說是沒有權限,執行失敗。因…

POSTGRESQL 關于安裝中自動啟動的問題 詳解

開頭還是介紹一下群,如果感興趣Polardb ,mongodb ,MySQL ,Postgresql ,redis ,SQL SERVER ,ORACLE,Oceanbase 等有問題,有需求都可以加群群內有各大數據庫行業大咖,CTO,可以解決你的問題。加群請加 liuaustin3微信號 &…

OpenSSH 遠程升級到 9.4p1

OpenSSH 遠程升級到 9.4p1 文章目錄 OpenSSH 遠程升級到 9.4p1背景升級前提1. 升級 OpenSSL2. 安裝并啟用Telnet 升級OpenSSH 背景 最近的護網行動,被查出來了好幾個關于OpenSSH 的漏洞。這是因為服務器系統安裝后,直接使用了系統自帶版本的OpenSSH &am…

2023-08-15 linux mipi 屏幕調試:有一個屏幕開機時候不顯示,開機后按power 按鍵休眠喚醒就可以顯示。原因是reset gpio 被復用

一、現象:今天更新了一個新版本的buildroot linux sdk ,調試兩個mipi 屏幕,這兩個屏幕之前在其他的sdk都調好了的,所有直接把配置搬過來。但是有一個屏幕可以正常顯示,有一個屏幕開機時候不顯示,開機后按po…

CentOS防火墻操作:開啟端口、開啟、關閉、配置

一、基本使用 啟動: systemctl start firewalld 關閉: systemctl stop firewalld 查看狀態: systemctl status firewalld 開機禁用 : systemctl disable firewalld 開機啟用 : systemctl enable firewalld systemctl是…

angular注入方法providers

在Angular中有很多方式可以將服務類注冊到注入器中: Injectable 元數據中的providedIn屬性 NgModule 元數據中的 providers屬性 Component 元數據中的 providers屬性 創建一個文件名叫名 hero.service.ts叫 hero 的服務 hero.service.ts import { Injectable } from angular…

C語言,結構體,結構體大小,

1、結構體: 用于存儲不同數據類型的多個相關變量,從而形成一個具有獨立性的組合數據類型。 結構體的聲明: struct 結構體類型名{ 數據類型 成員1; 數據類型 成員2; 數據類型 成員3; ……… }&#xff1…

轉行軟件測試四個月學習,第一次面試經過分享

我是去年上半年從銷售行業轉行到測試的,從銷售公司辭職之后選擇去培訓班培訓軟件測試,經歷了四個月左右的培訓,在培訓班結課前兩周就開始投簡歷了,在結課的時候順利拿到了offer。在新的公司從事軟件測試工作已經將近半年有余&…

深信服數據中心管理系統 XXE漏洞復現

0x01 產品簡介 深信服數據中心管理系統DC為AC的外置數據中心,主要用于海量日志數據的異地擴展備份管理,多條件組合的高效查詢,統計和趨勢報表生成,設備運行狀態監控等功能。 0x02 漏洞概述 深信服數據中心管理系統DC存在XML外部實…

WPS-0DAY-20230809的分析和利用復現

WPS-0DAY-20230809的分析和初步復現 一、漏洞學習1、本地復現環境過程 2、代碼解析1.htmlexp.py 3、通過修改shellcode拿shell曲折的學習msf生成sc 二、疑點1、問題2、我的測試測試方法測試結果 一、漏洞學習 強調:以下內容僅供學習和測試,一切行為均在…

Keil開發STM32單片機項目的三種方式

STM32單片機相比51單片機,內部結構復雜很多,因此直接對底層寄存器編碼,相對復雜,這個需要我們了解芯片手冊,對于復雜項目,這些操作可能需要反復編寫,因此出現了標準庫的方式,對寄存器…

ES中倒排索引機制

在ES的倒排索引機制中有四個重要的名詞:Term、Term Dictionary、Term Index、Posting List。 Term(詞條):詞條是索引里面最小的存儲和查詢單元。一段文本經過分析器分析以后就會輸出一串詞條。一般來說英文語境中詞條是一個單詞&a…

日期時間常用功能和函數

1 time 模塊 time 模塊提供了很多與時間相關的類和函數,下面我們介紹一些常用的。 1.1 struct_time 類 time 模塊的 struct_time 類代表一個時間對象,可以通過索引和屬性名訪問值。對應關系如下所示: 索引屬性值0tm_year(年&a…

Docker容器與虛擬化技術:Docker資源控制、數據管理

目錄 一、理論 1.資源控制 2.Docker數據管理 二、實驗 1.Docker資源控制 2.Docker數據管理 三、問題 1.docker容器故障導致大量日志集滿,造成磁盤空間滿 2、當日志占滿之后如何處理 四、總結 一、理論 1.資源控制 (1) CPU 資源控制 cgroups&#xff0…

Java Vue Uniapp MES生產執行管理系統

本MES系統是一款B/S結構、通用的生產執行管理系統,功能強大! 系統基于多年離散智造行業的業務經驗組建,主要目的是為國內離散制造業的中小企業提供一個專業化、通用性、低成本的MES系統解決方案。 聯系作者獲取

Linux(進程控制)

進程控制 進程創建fork函數初識fork函數返回值寫時拷貝fork常規用法fork調用失敗的原因 進程終止進程退出碼進程常見退出方法 進程等待進程等待必要性獲取子進程status進程等待的方法 阻塞等待與非阻塞等待阻塞等待非阻塞等待 進程替換替換原理替換函數函數解釋命名理解 做一個…

re學習(32)【綠城杯2021】babyvxworks(淺談花指令)

鏈接:https://pan.baidu.com/s/1msA5EY_7hoYGBEema7nWwA 提取碼:b9xf wp:首先找不到main函數,然后尋找特殊字符串, 交叉引用 反匯編 主函數在sub_3D9當中,但是IDA分析錯了 分析錯誤后,刪除函數 創建函數 操…