国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)庫(kù) 基礎(chǔ)面試第一彈

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)庫(kù) 基礎(chǔ)面試第一彈。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. SQL語(yǔ)句類型

1. DDL(Data Definition Language,數(shù)據(jù)定義語(yǔ)言):

DDL語(yǔ)句用于定義數(shù)據(jù)庫(kù)對(duì)象(如表、索引、視圖等)。常見的DDL語(yǔ)句包括:

  CREATE:用于創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象,如創(chuàng)建表、索引、視圖等。

  ALTER:用于修改數(shù)據(jù)庫(kù)對(duì)象的結(jié)構(gòu),如修改表的列、添加約束等。

  DROP:用于刪除數(shù)據(jù)庫(kù)對(duì)象,如刪除表、索引、視圖等。

  TRUNCATE:用于刪除表中的所有數(shù)據(jù),但保留表結(jié)構(gòu)

DDL(數(shù)據(jù)定義語(yǔ)言)示例:

# 創(chuàng)建表
CREATE TABLE employees (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  age INT,
  salary DECIMAL(10, 2)
);

# 修改表結(jié)構(gòu)
ALTER TABLE employees ADD COLUMN department VARCHAR(50);

DROP TABLE employees; #刪除表

2. DML(Data Manipulation Language,數(shù)據(jù)操作語(yǔ)言):

DML語(yǔ)句用于對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作(插入、更新、刪除)。常見的DML語(yǔ)句包括:

  • SELECT:用于從數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)。
  • INSERT:用于向表中插入新的數(shù)據(jù)。
  • UPDATE:用于更新表中的數(shù)據(jù)。
  • DELETE:用于刪除表中的數(shù)據(jù)。

DML(數(shù)據(jù)操作語(yǔ)言)示例:

INSERT INTO employees (id, name, age, salary)
VALUES (1, 'John Doe', 30, 5000);  # 插入數(shù)據(jù)

UPDATE employees SET salary = 6000 WHERE id = 1; #更新數(shù)據(jù)

DELETE FROM employees
WHERE id = 1;  # 刪除數(shù)據(jù)

3. DQL(Data Query Language,數(shù)據(jù)查詢語(yǔ)言):

DQL語(yǔ)句用于從數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)。DQL語(yǔ)句的核心是SELECT語(yǔ)句,可以使用SELECT語(yǔ)句查詢滿足特定條件的數(shù)據(jù),并對(duì)結(jié)果進(jìn)行排序、分組等處理

DQL(數(shù)據(jù)查詢語(yǔ)言)示例:

SELECT * FROM employees; 

SELECT * FROM employees
WHERE age > 25;     # 查詢特定條件的數(shù)據(jù)


SELECT name, salary FROM employees; # 查詢特定列的數(shù)據(jù)

4.?DCL(Data Control Language,數(shù)據(jù)控制語(yǔ)言)

DCL語(yǔ)句用于對(duì)數(shù)據(jù)庫(kù)的訪問權(quán)限進(jìn)行管理。常見的DCL語(yǔ)句包括:

  • GRANT:用于授予用戶訪問權(quán)限。
  • REVOKE:用于撤銷用戶的訪問權(quán)限。
  • DENY:用于拒絕用戶的訪問權(quán)限。

DCL(數(shù)據(jù)控制語(yǔ)言)示例:

GRANT SELECT, INSERT ON employees TO user1;  #授予用戶訪問權(quán)限

REVOKE SELECT, INSERT ON employees FROM user1; # 撤銷用戶的訪問權(quán)限

DENY SELECT, INSERT ON employees TO user1; # 拒絕用戶的訪問權(quán)限

2. 索引作用,底層結(jié)構(gòu)及常見類型

索引在數(shù)據(jù)庫(kù)中起著重要的作用,它可以提高數(shù)據(jù)庫(kù)的查詢性能和數(shù)據(jù)的檢索速度。索引是一種數(shù)據(jù)結(jié)構(gòu),用于快速定位和訪問數(shù)據(jù)庫(kù)中的特定數(shù)據(jù)。

作用:

  • 提高查詢性能:通過使用索引,可以減少數(shù)據(jù)庫(kù)查詢的數(shù)據(jù)量,從而提高查詢速度。
  • 加速數(shù)據(jù)檢索:索引可以幫助數(shù)據(jù)庫(kù)快速定位和訪問滿足特定條件的數(shù)據(jù),減少數(shù)據(jù)的掃描時(shí)間。

底層結(jié)構(gòu):
數(shù)據(jù)庫(kù)索引的底層結(jié)構(gòu)可以有多種實(shí)現(xiàn)方式,常見的包括以下幾種:

  1. B-樹(B-Tree)索引:B-樹是一種平衡的多路搜索樹,它的特點(diǎn)是可以自動(dòng)調(diào)整樹的結(jié)構(gòu)以適應(yīng)數(shù)據(jù)的插入和刪除操作。B-樹索引常用于磁盤存儲(chǔ)的數(shù)據(jù)庫(kù),因?yàn)樗梢詼p少磁盤訪問次數(shù),提高查詢效率。

  2. B+樹(B+Tree)索引:B+樹是在B-樹的基礎(chǔ)上進(jìn)行優(yōu)化的一種數(shù)據(jù)結(jié)構(gòu)。它與B-樹類似,但在葉子節(jié)點(diǎn)上存儲(chǔ)了所有的關(guān)鍵字和對(duì)應(yīng)的數(shù)據(jù)指針,這樣可以加快范圍查詢和順序訪問的速度。B+樹索引是大多數(shù)關(guān)系型數(shù)據(jù)庫(kù)中最常用的索引類型。

  3. 哈希(Hash)索引:哈希索引使用哈希函數(shù)將關(guān)鍵字映射到一個(gè)固定長(zhǎng)度的哈希值,然后將哈希值與數(shù)據(jù)的存儲(chǔ)位置關(guān)聯(lián)起來。哈希索引適用于等值查詢,但不適用于范圍查詢或排序操作。

  4. 全文(Full-Text)索引:全文索引用于對(duì)文本內(nèi)容進(jìn)行搜索,它可以對(duì)文本字段中的關(guān)鍵詞進(jìn)行索引和檢索,支持全文搜索和模糊匹配。

常見類型:
在常見的關(guān)系型數(shù)據(jù)庫(kù)中,常用的索引類型包括:

    1. 主鍵索引(Primary Key Index):用于唯一標(biāo)識(shí)表中的記錄,保證主鍵的唯一性和索引的快速訪問。

    2. 唯一索引(Unique Index):用于保證某個(gè)列或列組合的唯一性,可以加速唯一性檢查。

    3. 聚集索引(Clustered Index):指定表的物理順序,表中的記錄按照聚集索引的順序存儲(chǔ)。

    4. 非聚集索引(Non-Clustered Index):不指定表的物理順序,獨(dú)立存儲(chǔ)索引的數(shù)據(jù)結(jié)構(gòu)。

    5. 復(fù)合索引(Composite Index):使用多個(gè)列組合作為索引的鍵,支持多個(gè)列的聯(lián)合查詢。

    6. 全文索引(Full-Text Index):用于全文搜索和模糊匹配的索引類型,支持對(duì)文本內(nèi)容進(jìn)行搜索。

3. 事務(wù)的特性

  1. 原子性(Atomicity):事務(wù)是一個(gè)原子操作單元,要么全部執(zhí)行成功,要么全部失敗回滾。原子性確保事務(wù)中的所有操作要么全都執(zhí)行,要么全都不執(zhí)行,不會(huì)出現(xiàn)部分操作成功而部分操作失敗的情況。

  2. 一致性(Consistency):事務(wù)在執(zhí)行之前和執(zhí)行之后,數(shù)據(jù)庫(kù)的完整性約束沒有被破壞。一致性確保數(shù)據(jù)庫(kù)從一個(gè)一致的狀態(tài)轉(zhuǎn)移到另一個(gè)一致的狀態(tài),它定義了數(shù)據(jù)在事務(wù)執(zhí)行過程中的合法變化。

  3. 隔離性(Isolation):事務(wù)的執(zhí)行是相互隔離的,一個(gè)事務(wù)的操作不會(huì)被其他并發(fā)事務(wù)所干擾。隔離性確保事務(wù)在并發(fā)執(zhí)行時(shí),每個(gè)事務(wù)的操作都像是在獨(dú)立執(zhí)行,避免了并發(fā)讀寫操作導(dǎo)致的數(shù)據(jù)不一致問題。

  4. 持久性(Durability):一旦事務(wù)提交,其所做的修改將永久保存在數(shù)據(jù)庫(kù)中,即使系統(tǒng)發(fā)生故障或重啟。持久性確保事務(wù)提交后的修改是永久性的,不會(huì)因?yàn)橄到y(tǒng)故障而丟失。

4. 事務(wù)的隔離級(jí)別

  1. 讀未提交(Read Uncommitted):

    • 最低的隔離級(jí)別,事務(wù)中的未提交修改對(duì)其他事務(wù)都是可見的。
    • 可能導(dǎo)致臟讀(Dirty Read),即讀取到其他事務(wù)尚未提交的數(shù)據(jù),可能是不一致的數(shù)據(jù)。
    • 存在幻讀(Phantom Read),即在同一個(gè)事務(wù)中多次執(zhí)行同樣的查詢,結(jié)果集不一致。
  2. 讀已提交(Read Committed):

    • 事務(wù)只能讀取到已經(jīng)提交的數(shù)據(jù),未提交的數(shù)據(jù)對(duì)其他事務(wù)不可見。
    • 避免了臟讀的問題,但仍可能導(dǎo)致幻讀。
    • 大多數(shù)常見數(shù)據(jù)庫(kù)的默認(rèn)隔離級(jí)別。
  3. 可重復(fù)讀(Repeatable Read):

    • 保證了在同一事務(wù)中多次讀取同一數(shù)據(jù)時(shí),結(jié)果保持一致。
    • 讀取的數(shù)據(jù)是在事務(wù)開始時(shí)確定的快照,即使其他事務(wù)對(duì)數(shù)據(jù)進(jìn)行修改也不可見。
    • 避免了臟讀和幻讀的問題。
  4. 序列化(Serializable):

    • 最高的隔離級(jí)別,通過強(qiáng)制事務(wù)串行執(zhí)行來避免并發(fā)問題。
    • 保證了事務(wù)之間的完全隔離,避免了臟讀、幻讀和不可重復(fù)讀的問題。
    • 性能較差,一般情況下只在特殊需求下使用。

5. 事務(wù)并發(fā)引起的三大問題

  1. 臟讀(Dirty Read):

    • 臟讀指的是一個(gè)事務(wù)讀取了另一個(gè)事務(wù)尚未提交的數(shù)據(jù)。當(dāng)一個(gè)事務(wù)讀取到了被另一個(gè)事務(wù)修改但尚未提交的數(shù)據(jù)時(shí),如果另一個(gè)事務(wù)最終回滾,則讀取到的數(shù)據(jù)是無(wú)效的。
    • 臟讀可能導(dǎo)致數(shù)據(jù)不一致性和錯(cuò)誤的結(jié)果。
  2. 不可重復(fù)讀(Non-repeatable Read):

    • 不可重復(fù)讀指的是在同一個(gè)事務(wù)中,多次讀取同一數(shù)據(jù)時(shí),得到的結(jié)果不一致。這是因?yàn)樵谧x取過程中,其他并發(fā)事務(wù)對(duì)該數(shù)據(jù)進(jìn)行了修改或刪除。
    • 不可重復(fù)讀可能導(dǎo)致事務(wù)在多次讀取同一數(shù)據(jù)時(shí)無(wú)法保持一致性,破壞了事務(wù)的隔離性。
  3. 幻讀(Phantom Read):

    • 幻讀是指在同一個(gè)事務(wù)中,多次執(zhí)行同樣的查詢,得到的結(jié)果集不一致。這是因?yàn)樵诓樵冞^程中,其他并發(fā)事務(wù)插入了新的數(shù)據(jù)行,導(dǎo)致結(jié)果集發(fā)生了變化。
    • 幻讀可能導(dǎo)致事務(wù)在同一查詢中讀取到不同的數(shù)據(jù)行,無(wú)法保持一致性。

6. 死鎖的原因及解決辦法:

死鎖是指兩個(gè)或多個(gè)事務(wù)因?yàn)榛ハ嗟却龑?duì)方釋放資源而無(wú)法繼續(xù)執(zhí)行的狀態(tài)。死鎖的發(fā)生是由于以下原因之一或多個(gè)原因共同作用:

  1. 互斥條件(Mutual Exclusion):資源只能同時(shí)被一個(gè)事務(wù)占用,當(dāng)某個(gè)事務(wù)占用了一個(gè)資源后,其他事務(wù)無(wú)法同時(shí)占用該資源。

  2. 請(qǐng)求與保持條件(Hold and Wait):一個(gè)事務(wù)在持有資源的同時(shí),又申請(qǐng)其他事務(wù)所占有的資源。

  3. 不可剝奪條件(No Preemption):資源只能由持有者顯式釋放,其他事務(wù)無(wú)法強(qiáng)制搶占。

  4. 循環(huán)等待條件(Circular Wait):多個(gè)事務(wù)形成一個(gè)循環(huán)等待資源的鏈,每個(gè)事務(wù)都在等待下一個(gè)事務(wù)所占有的資源。

為了解決死鎖問題,可以采取以下幾種常用的解決辦法:

  1. 預(yù)防死鎖(Deadlock Prevention):

    • 通過破壞死鎖發(fā)生的四個(gè)必要條件中的一個(gè)或多個(gè),來預(yù)防死鎖的發(fā)生。
    • 可以在系統(tǒng)設(shè)計(jì)階段采用資源分配策略、事務(wù)調(diào)度策略等方式來預(yù)防死鎖。
  2. 避免死鎖(Deadlock Avoidance):

    • 在運(yùn)行時(shí)動(dòng)態(tài)判斷是否分配資源,避免可能導(dǎo)致死鎖的資源分配情況。
    • 通過資源分配的安全性檢查和資源請(qǐng)求的合理判斷,避免進(jìn)入可能導(dǎo)致死鎖的狀態(tài)。
  3. 檢測(cè)與恢復(fù)(Deadlock Detection and Recovery):

    • 允許死鎖發(fā)生,但通過周期性地檢測(cè)系統(tǒng)中的死鎖狀態(tài),并采取恢復(fù)措施來解除死鎖。
    • 可以使用圖算法(如資源分配圖)來檢測(cè)死鎖,并通過回滾、搶占資源等方式進(jìn)行恢復(fù)。
  4. 死鎖忽略(Deadlock Ignorance):

    • 假設(shè)死鎖很少發(fā)生或發(fā)生死鎖的代價(jià)較低,可以忽略死鎖問題,不采取專門的死鎖處理措施。
    • 此方法適用于某些特定環(huán)境下,如批處理系統(tǒng)等。

?

?

  文章來源地址http://www.zghlxwxcb.cn/news/detail-694477.html

  

到了這里,關(guān)于數(shù)據(jù)庫(kù) 基礎(chǔ)面試第一彈的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)之?dāng)?shù)據(jù)類型

    數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)之?dāng)?shù)據(jù)類型

    mysql常用數(shù)據(jù)類型 一、數(shù)值類型(整型、浮點(diǎn)型) 1、整型 eg:添加一個(gè)表格:點(diǎn)擊表——添加字段——名稱——類型,年齡age是tinyint類型,要在下方勾選無(wú)符號(hào),因?yàn)槟挲g都是正數(shù),不存在負(fù)數(shù)一說,所以不需要符號(hào)。 點(diǎn)擊保存,然后輸入表名,比如t1,就出現(xiàn)了t1 ? ?然后

    2024年02月06日
    瀏覽(20)
  • python 面試題第一彈

    淺拷貝(Shallow Copy)創(chuàng)建一個(gè)新的對(duì)象,該對(duì)象的內(nèi)容是原始對(duì)象的引用。這意味著 新對(duì)象與原始對(duì)象共享相同的內(nèi)存地址 ,因此對(duì)于可變對(duì)象來說,如果修改了其中一個(gè)對(duì)象,另一個(gè)對(duì)象也會(huì)受到影響。淺拷貝通常使用 copy 模塊的 copy() 函數(shù)或者對(duì)象的 copy() 方法來完成。

    2024年02月12日
    瀏覽(28)
  • 操作系統(tǒng) 面試第一彈

    進(jìn)程(Process)和線程(Thread)是操作系統(tǒng)中的重要概念,它們表示執(zhí)行中的程序的不同執(zhí)行單元。下面是它們的區(qū)別: 定義:進(jìn)程是一個(gè)獨(dú)立的執(zhí)行環(huán)境,具有獨(dú)立的內(nèi)存空間,包含程序代碼、數(shù)據(jù)和執(zhí)行狀態(tài)。線程是進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,共享相同的內(nèi)存空間和系統(tǒng)資

    2024年02月09日
    瀏覽(20)
  • 【軟考數(shù)據(jù)庫(kù)】第一章 計(jì)算機(jī)系統(tǒng)基礎(chǔ)知識(shí)

    【軟考數(shù)據(jù)庫(kù)】第一章 計(jì)算機(jī)系統(tǒng)基礎(chǔ)知識(shí)

    目錄 目錄 1.1 計(jì)算機(jī)系統(tǒng) 1.1.1 計(jì)算機(jī)硬件組成 1.1.2 中央處理單元 1.1.3 數(shù)據(jù)表示 1.1.4 校驗(yàn)碼 1.2 計(jì)算機(jī)體系結(jié)構(gòu) 1.2.1 體系結(jié)構(gòu)分類 1.2.2?指令系統(tǒng)存 1.2.3?儲(chǔ)系系統(tǒng) 1.2.4?輸入/輸出技術(shù) 1.2.5?總線結(jié)構(gòu) 1.3 可靠性、性能、安全 1.3.1 計(jì)算機(jī)可靠性 1.3.2?計(jì)算機(jī)系統(tǒng)的性能評(píng)價(jià) 1.

    2023年04月13日
    瀏覽(23)
  • 數(shù)據(jù)庫(kù)基礎(chǔ)(面試常見題)

    一、 數(shù)據(jù)庫(kù) 基礎(chǔ) 1. 數(shù)據(jù)抽象 :物理抽象、概念抽象、視圖級(jí)抽象,內(nèi)模式、模式、外模式 2. SQL語(yǔ)言 包括數(shù)據(jù)定義、數(shù)據(jù)操縱(Data Manipulation),數(shù)據(jù)控制(Data Control) 數(shù)據(jù)定義:Create Table,Alter Table,Drop Table, Craete/Drop Index等 數(shù)據(jù)操縱:Select ,insert,update,delete, 數(shù)據(jù)控制:grant,revoke 3

    2024年02月09日
    瀏覽(23)
  • 數(shù)據(jù)庫(kù)基礎(chǔ)面試第四彈

    1. 字符串(String): 字符串是Redis最基本的數(shù)據(jù)結(jié)構(gòu)。它可以存儲(chǔ)任意類型的數(shù)據(jù),包括文本、整數(shù)或二進(jìn)制數(shù)據(jù)。字符串類型的值最大可以達(dá)到512MB。 2. 列表(List): 列表是一個(gè)有序的字符串集合。它允許在列表的兩端進(jìn)行元素的插入和刪除操作,支持按照索引獲取元素

    2024年02月09日
    瀏覽(16)
  • 數(shù)據(jù)庫(kù)基礎(chǔ)面試第二彈

    樂觀鎖和悲觀鎖是在并發(fā)編程中使用的兩種并發(fā)控制機(jī)制,用于解決多線程或多進(jìn)程環(huán)境下的數(shù)據(jù)一致性問題。 1. 悲觀鎖 (Pessimistic Locking): 悲觀鎖的思想是假設(shè)并發(fā)訪問會(huì)導(dǎo)致沖突,因此在訪問共享資源之前,悲觀鎖會(huì)將資源鎖定,確保其他線程無(wú)法修改資源。悲觀鎖的

    2024年02月10日
    瀏覽(21)
  • 數(shù)據(jù)庫(kù)基礎(chǔ)面試第三彈

    1. MyISAM: MyISAM是MySQL最早的數(shù)據(jù)庫(kù)引擎之一。它被設(shè)計(jì)成處理大量的插入和查詢操作。MyISAM表格的數(shù)據(jù)存儲(chǔ)在三個(gè)文件上:.frm文件存儲(chǔ)表結(jié)構(gòu),.MYD文件存儲(chǔ)數(shù)據(jù),.MYI文件存儲(chǔ)索引。 MyISAM表格不支持事務(wù)處理和崩潰恢復(fù) ,因此在并發(fā)寫入操作和故障發(fā)生時(shí)可能會(huì)導(dǎo)致數(shù)據(jù)不

    2024年02月09日
    瀏覽(24)
  • 互聯(lián)網(wǎng)Java工程師面試題·Java 面試篇·第一彈

    互聯(lián)網(wǎng)Java工程師面試題·Java 面試篇·第一彈

    目錄 1、Java 中能創(chuàng)建 volatile 數(shù)組嗎? 2、volatile 能使得一個(gè)非原子操作變成原子操作嗎? 3、volatile 修飾符的有過什么實(shí)踐? 4、volatile 類型變量提供什么保證? 5、10 個(gè)線程和 2 個(gè)線程的同步代碼,哪個(gè)更容易寫? 6、你是如何調(diào)用 wait()方法的?使用 if 塊還是循環(huán)?為什

    2024年02月07日
    瀏覽(23)
  • 數(shù)據(jù)庫(kù)安全-第一章 Mysql 安全基礎(chǔ)-【web 環(huán)境搭建——LAMP-1】-LAMP & LNMP 簡(jiǎn)介

    數(shù)據(jù)庫(kù)安全-第一章 Mysql 安全基礎(chǔ)-【web 環(huán)境搭建——LAMP-1】-LAMP & LNMP 簡(jiǎn)介

    WEB 的本意是蜘蛛網(wǎng)和網(wǎng),在網(wǎng)頁(yè)設(shè)計(jì)中稱為網(wǎng)頁(yè)?,F(xiàn)廣泛譯作網(wǎng)絡(luò)、互聯(lián)網(wǎng)等技術(shù)領(lǐng)域。日常生活中用戶使用瀏覽器請(qǐng)求一個(gè) URL ,這個(gè) URL 標(biāo)識(shí)著某個(gè)特定的服務(wù)器的特定資源,服務(wù)器接收到請(qǐng)求之后,服務(wù)器就把生成的 HTML 網(wǎng)頁(yè)通過 HTTP 協(xié)議發(fā)送給瀏覽器。 早期的 WEB 頁(yè)

    2024年01月18日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包