婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 編程學習 >> 數據庫語言 >> 正文

數據庫與數據結構_數據庫數據結構

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2023/5/20

數據庫

SQL

1、SQL對大小寫不敏感

2、可以把 SQL 分為兩個部分:數據操作語言 (DML) 和 數據定義語言 (DDL)。SQL (結構化查詢語言)是用于執行查詢的語法。
2.1 SQL 語言也包含用于更新、插入和刪除記錄的語法。
查詢和更新指令構成了 SQL 的 DML 部分:
select - 從數據庫表中獲取數據
update - 更新數據庫表中的數據
delete - 從數據庫表中刪除數據
insert into - 向數據庫表中插入數據

​ 2.2 SQL 的數據定義語言 (DDL) 部分使我們有能力創建或刪除表格。我們也可以定義索引(鍵),規定表之間的鏈接,以及施加表間的約束。
​ SQL 中最重要的 DDL 語句:
create database <數據庫名> - 創建新數據庫
alter database <數據庫名> - 修改數據庫
create table <數據庫名> - 創建新表
alter table <數據庫名> - 變更(改變)數據庫表
drop table <數據庫名> - 刪除表
create index <數據庫名> - 創建索引(搜索鍵)
drop index <數據庫名> - 刪除索引

3、常用SQL語句
3.1 查看現有數據庫/表 show database/tables;
3.2 連接數據庫 use <數據庫名>;
3.3 從.sql文件引入SQL語句 source <.sql文件路徑>;
3.4 刪除數據庫 drop database <數據庫名>;
3.5 使用如下語句查看表中的列的基本信息:describe <表名>;

9. 在表中插入新紀錄

INSERT INTO <表名> (<列名1>, <列名2>, <列名3>, …)
VALUES (<值1>, <值2>, <值3>, …);

10. 在表中更新記錄

UPDATE <表名>
SET <列名1> = <值1>, <列名2> = <值2>, ...
WHERE <條件>;

SELECT語句可以從表中選擇數據:

SELECT <列名1>, <列名2>, …
FROM <表名>;

數據庫索引

​ 索引是對數據庫表中一個或多個列的值進行排序的數據結構,以協助快速查詢、更新數據庫表中數據。索引的實現通常使用B-TREE及其變種。因為索引存儲引擎不會再去掃描整張表,根節點保存了子節點的指針,因此存儲引擎從根節點開始,根據指針快速尋找數據,加速了數據訪問

1). 索引的底層實現原理和優化

在數據結構中,最常見的搜索結構就是二叉搜索樹和AVL樹(高度平衡的二叉搜索樹,為了提高二叉搜索樹的效率,減少樹的平均搜索長度)。然而,無論二叉搜索樹還是AVL樹,當數據量比較大時,都會由于樹的深度過大而造成I/O讀寫過于頻繁,進而導致查詢效率低下,因此對于索引而言,多叉樹結構成為不二選擇。特別地,B-Tree的各種操作能使B樹保持較低的高度,從而保證高效的查找效率。

2). 索引的優點

1、加快數據的檢索速度,這也是創建索引的最主要的原因;
2、表和表之間的連接;
3、用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間;
4、創建唯一性索引,可以保證數據庫表中每一行數據的唯一性;

3). 什么樣的字段適合創建索引?
1、作查詢選擇的字段
2、作表連接的字段
3、出現在order by, group by, distinct 后面的字段

4). 創建索引時需要注意什么?

1、字段:應該指定列為NOT NULL,除非你想存儲NULL。在mysql中,含有空值的列很難進行查詢優化,因為它們使得索引、索引的統計信息以及比較運算更加復雜。你應該用0、一個特殊的值或者一個空串代替空值;
2、離散大的字段:(變量各個取值之間的差異程度)的列放到聯合索引的前面,可以通過count()函數查看字段的差異值,返回值越大說明字段的唯一值越多,字段的離散程度高;
3、字段越小越好:數據庫的數據存儲以頁為單位,一頁存儲的數據越多,一次I/O操作獲取的數據越大效率越高。

5). 索引的缺點

1、時間方面:創建索引和維護索引要耗費時間,具體地,當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速度;
2、空間方面:索引需要占物理空間。

6). 索引的分類

1、普通索引和唯一性索引:索引列的值的唯一性
2、單個索引和復合索引:索引列所包含的列數
3、聚簇索引與非聚簇索引:聚簇索引按照數據的物理存儲進行劃分的。
對于一堆記錄來說,使用聚集索引就是對這堆記錄進行堆劃分,即主要描述的是物理上的存儲。正是因為這種劃分方法,導致聚簇索引必須是唯一的。聚集索引可以幫助把很大的范圍,迅速減小范圍。但是查找該記錄,就要從這個小范圍中Scan了;而非聚集索引是把一個很大的范圍,轉換成一個小的地圖,然后你需要在這個小地圖中找你要尋找的信息的位置,最后通過這個位置,再去找你所需要的記錄。

7). 主鍵、自增主鍵、主鍵索引與唯一索引概念區別

1、主鍵:指字段唯一、不為空值的列;
2、主鍵索引:指的就是主鍵,主鍵是索引的一種,是唯一索引的特殊類型。創建主鍵的時候,數據庫默認會為主鍵創建一個唯一索引;
3、自增主鍵:字段類型為數字、自增、并且是主鍵;
4、唯一索引:索引列的值必須唯一,但允許有空值。
主鍵是唯一索引,這樣說沒錯;但反過來說,唯一索引也是主鍵就錯誤了,因為唯一索引允許空值,主鍵不允許有空值,所以不能說唯一索引也是主鍵。

8). 主鍵就是聚集索引嗎?主鍵和索引有什么區別?

主鍵是一種特殊的唯一性索引,其可以是聚集索引,也可以是非聚集索引。在SQLServer中,主鍵的創建必須依賴于索引,默認創建的是聚集索引,但也可以顯式指定為非聚集索引。InnoDB作為MySQL存儲引擎時,默認按照主鍵進行聚集,如果沒有定義主鍵,InnoDB會試著使用唯一的非空索引來代替。如果沒有這種索引,InnoDB就會定義隱藏的主鍵然后在上面進行聚集。所以,對于聚集索引來說,你創建主鍵的時候,自動就創建了主鍵的聚集索引。

MySQL如何查看索引情況并優化

**索引類型:**mysql中支持 hash索引 和 btree索引 。innodb和myisam只支持 btree索引,而memory和heap存儲引擎可以支持hash和btree索引
**查詢索引方式:**我們可以通過 show status like '%Handler_read%'; 語句查詢當前索引使用情況
結論:
1)如果索引正在工作,則Handler_read_key的值會很高,這個值代表一個行被索引值讀的次數,很低值表名增加索引得到的性能改善不高,因此索引并不經常使用
2)如果Handler_read_rnd_next值很高意味著查詢運行效率很低,應該建立索引補救,這個值含義是在數據文件中讀取下一行的請求數。如果正在進行大量表掃描,Handler_read_rnd_next的數值將會很高。說明索引不正確或者沒有利用索引。

優化:
1)優化insert語句:
1.盡量采用 insert into test values(),(),(),()…
2.如果從不同客戶插入多行,能通過使用insert delayed語句得到更高的速度,delayed含義是讓insert語句馬上執行,其實數據都被放在內存隊列中個,并沒有真正寫入磁盤,這比每條語句分別插入快的多;low_priority剛好相反,在所有其他用戶對表的讀寫完后才進行插入。
3.將索引文件和數據文件分在不同磁盤上存放(利用建表語句)
4.如果進行批量插入,可以增加bulk_insert_buffer_size變量值方法來提高速度,但是只對MyISAM表使用
5.當從一個文本文件裝載一個表時,使用load data file,通常比使用insert快20倍

2)優化group by語句:
​ 默認情況下,mysql會對所有group by字段進行排序,這與order by類似。如果查詢包括group by但用戶想要避免排序結果的消耗,則可以指定order by null禁止排序。

3)優化order by語句:
​ 某些情況下,mysql可以使用一個索引滿足order by字句,因而不需要額外的排序。where條件和order by使用相同的索引,并且order by的順序和索引的順序相同,并且order by的字段都是升序或者降序。

4)優化嵌套查詢:
​ mysql4.1開始支持子查詢,但是某些情況下,子查詢可以被更有效率的join替代,尤其是join的被動表待帶有索引的時候,原因是mysql不需要再內存中創建臨時表來完成這個邏輯上需要兩個步驟的查詢工作。

數據結構

棧和堆的區別

  • 堆和棧的概念存在于數據結構中和操作系統內存中。
  • 在數據結構中,棧中數據的存取方式為先進后出。而堆是一個優先隊列,是按優先級來進行排序的,優先級可以按照大小來規定。完全二叉樹是堆的一種實現方式
  • 在操作系統中,內存被分為棧區和堆區。棧區內存由編譯器自動分配釋放,存放函數的參數值,局部變量的值等。其操作方式類似于數據結構中的棧。堆區內存一般由程序員分配釋放,若程序員不釋放,程序結束時可能由垃圾回收機制回收。

樹的深度優先遍歷和廣度優先遍歷分別用了什么數據結構

樹的存儲可以分為順序存儲和鏈式存儲結構,但為了滿足多子樹的場景,樹的存儲方式利用了順序存儲和鏈式存儲的,其方法有雙親表示法、孩子表示法、孩子兄弟表示法。

1、廣度優先遍歷/寬度優先搜索(https://www.zhihu.com/question/28549888)

  • 英文縮寫為BFS,即Breadth First Search。
  • 我們每一次搜索到一個點的時候,如果這個點不符合條件,那么搜索同一層中符合條件的點,再把這一層中符合要求的點一一拓展,按照上述形式搜索下去。
  • 其過程檢驗來說是對每一層節點依次訪問,訪問完一層進入下一層,而且每個節點只能訪問一次。
  • 先往隊列中插入左節點,再插右節點,這樣出隊就是先左節點后右節點了。
  • 廣度優先遍歷樹,需要用到隊列(Queue)來存儲節點對象,隊列的特點就是先進先出

2、深度優先搜索

  • 英文縮寫為DFS,即Depth First Search。
  • 我們每一次搜索到一個點的時候,如果這個點不符合條件,那么就return,返回到上一層(就是常說的回朔),如果這個點符合條件,就一直搜索下去,直到沒有點可以搜索。
  • 其過程簡要來說是對每一個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次。
  • 深度優先遍歷各個節點,需要使用到棧(Stack)這種數據結構。

平衡二叉樹 AVL

任一節點對應的兩棵子樹的最大高度差為1,也被稱為高度平衡樹。查找、插入和刪除在平均和最壞情況下的時間復雜度都是O(log n)

數組和鏈表的區別

數組的特點
1)在內存中,數組是一塊連續的區域。 拿上面的看電影來說,這幾個人在電影院必須坐在一起。
2)數組需要預留空間,在使用前要先申請占內存的大小,可能會浪費內存空間。 比如看電影時,為了保證10個人能坐在一起,必須提前訂好10個連續的位置。這樣的好處就是能保證10個人可以在一起。但是這樣的缺點是,如果來的人不夠10個,那么剩下的位置就浪費了。如果臨時有多來了個人,那么10個就不夠用了,這時可能需要將第11個位置上的人挪走,或者是他們11個人重新去找一個11連坐的位置,效率都很低。如果沒有找到符合要求的作為,那么就沒法坐了。
3)插入數據和刪除數據效率低,插入數據時,這個位置后面的數據在內存中都要向后移。刪除數據時,這個數據后面的數據都要往前移動。 比如原來去了5個人,然后后來又去了一個人要坐在第三個位置上,那么第三個到第五個都要往后移動一個位子,將第三個位置留給新來的人。 當這個人走了的時候,因為他們要連在一起的,所以他后面幾個人要往前移動一個位置,把這個空位補上。
4)隨機讀取效率很高。因為數組是連續的,知道每一個數據的內存地址,可以直接找到給地址的數據。
5)并且不利于擴展,數組定義的空間不夠時要重新定義數組。

鏈表的特點
1)在內存中可以存在任何地方,不要求連續。 在電影院幾個人可以隨便坐。
2)每一個數據都保存了下一個數據的內存地址,通過這個地址找到下一個數據。 第一個人知道第二個人的座位號,第二個人知道第三個人的座位號……
3)增加數據和刪除數據很容易。 再來個人可以隨便坐,比如來了個人要做到第三個位置,那他只需要把自己的位置告訴第二個人,然后問第二個人拿到原來第三個人的位置就行了。其他人都不用動。
3)查找數據時效率低,因為不具有隨機訪問性,所以訪問某個位置的數據都要從第一個數據開始訪問,然后根據第一個數據保存的下一個數據的地址找到第二個數據,以此類推。 要找到第三個人,必須從第一個人開始問起。
4)不指定大小,擴展方便。鏈表大小不用定義,數據隨意增刪。

各自的優缺點
1)數組的優點:隨機訪問性強;查找速度快
2)數組的缺點:插入和刪除效率低;可能浪費內存;內存空間要求高,必須有足夠的連續內存空間;數組大小固定,不能動態拓展

​ 1)鏈表的優點:插入刪除速度快;內存利用率高,不會浪費內存;大小沒有固定,拓展很靈活。
​ 2)鏈表的缺點;不能隨機查找,必須從第一個開始遍歷,查找效率低

- 數組 鏈表
讀取 O(1) O(n)
插入 O(n) O(1)
刪除 O(n) O(1)

動態數組

數組按照操作分為增刪改查

1)addLast(e):添加的元素是在數組尾部操作,不需要移動其他元素位置,直接添加即可。時間復雜度為O(1)。
2)addFirst(e):添加的元素是在頭部操作,插入時其他元素要依次往后挪。時間復雜度為O(n)。
3)add(index,e):根據索引添加元素,我們并不知道索引具體會插入在哪個位置。根據概率論分析,時間復雜度O(n/2) = O(n)。
4)除此之外我們還要考慮resize,當數組進行擴容時,時間復雜度同樣為O(n)。


1) removeLast(e):同增加操作一樣,時間復雜度為O(1)。
2)removeFirst(e):同增加操作一樣,時間復雜度為O(n)。
3)remove(index,e):同增加操作一樣,時間復雜度O(n/2) = O(n)。
4) 一樣也要考慮到擴容,時間復雜度為O(n)。


set(index,e):根據索引修改元素。當知道索引時,可以直接修改元素而不需要對其他元素進行操作。故時間復雜度O(1)。


1)get(index):通過索引查詢元素,直接查找。時間復雜度O(1)。
2)contains(e):查看數組中是否包含該元素。由于不是通過索引查找,我們需要遍歷數組,增加了時間量。時間復雜度O(n)。
3)find(e):查看數組中對應的索引是多少。同contains一樣需要遍歷數組。時間復雜度O(n)。

Tags:sql,數據庫  
責任編輯:admin
  • 上一篇文章: 沒有了
  • 下一篇文章: 沒有了
  • 相關文章列表
    沒有相關文章
    請文明參與討論,禁止漫罵攻擊。 昵稱:注冊  登錄
    [ 查看全部 ] 網友評論
    推薦文章
    • 此欄目下沒有推薦文章
    熱門文章
    • 此欄目下沒有熱點文章
    關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁面
    下到頁底
    晶體管查詢
    婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av
    <button id="4i884"></button>
  • <abbr id="4i884"><source id="4i884"></source></abbr>
  • <code id="4i884"><tr id="4i884"></tr></code>
  • <rt id="4i884"></rt>
    <li id="4i884"></li>
  • <rt id="4i884"><tr id="4i884"></tr></rt>
  • 亚洲成熟丰满熟妇高潮xxxxx| 50度灰在线观看| 欧美三级一级片| 99re99热| 又色又爽又高潮免费视频国产| 久久久天堂国产精品| 国产成人精品无码播放| 无码人妻精品一区二区三区在线| 99色精品视频| 精品人妻一区二区三区四区在线| 人妻久久久一区二区三区| 中文字幕第38页| 无限资源日本好片| 污污视频在线免费| 在线观看三级网站| 国产超级av在线| 成人免费在线观看视频网站| 99re精彩视频| 欧美人与动牲交xxxxbbbb| 9999在线观看| 男人添女人荫蒂免费视频| 色噜噜狠狠一区二区| 中文字幕亚洲欧洲| 三上悠亚久久精品| 亚洲国产成人精品无码区99| 91成人在线观看喷潮教学| 九九热在线免费| 日韩精品―中文字幕| 黄色片一级视频| 日本三区在线观看| 天天摸天天碰天天添| 国产精品久久久久久久久电影网| 狠狠干视频网站| 日本久久久精品视频| 日本免费观看网站| 国产成人av影视| 中文字幕第21页| 黄色一级大片免费| 国产亚洲精品网站| 99久久免费观看| 中国丰满人妻videoshd| 黄页网站大全在线观看| 777米奇影视第四色| 欧美性大战久久久久xxx| 91日韩视频在线观看| 亚洲va综合va国产va中文| 亚洲五月天综合| 成人在线免费播放视频| 天天综合成人网| 男人c女人视频| 欧美成人精品欧美一级乱| 成人免费视频久久| 日本韩国欧美在线观看| 国产中文字幕视频在线观看| 乱妇乱女熟妇熟女网站| 午夜免费一级片| 欧美视频在线观看网站| 亚洲网中文字幕| 欧美在线观看视频网站| 欧美性视频在线播放| 国产在线拍揄自揄拍无码| 国产激情在线观看视频| 国产精品又粗又长| 播放灌醉水嫩大学生国内精品| 三级黄色片播放| 丰满人妻中伦妇伦精品app| 97公开免费视频| 波多野结衣之无限发射| 午夜免费一级片| 欧在线一二三四区| 夜夜添无码一区二区三区| 日韩激情免费视频| 亚洲国产欧美91| av在线网站免费观看| 欧美一级xxxx| 91嫩草国产丨精品入口麻豆| 高清av免费看| 玩弄japan白嫩少妇hd| 欧美日韩不卡在线视频| 亚洲欧美日韩一二三区| 中文字幕12页| 福利在线一区二区三区| 丁香色欲久久久久久综合网| 亚洲五码在线观看视频| 福利在线一区二区三区| 黄色一级片国产| 男同互操gay射视频在线看| 免费特级黄色片| 日本欧美黄色片| 激情五月亚洲色图| 国产精品视频二| 无码精品a∨在线观看中文| 国产精品va在线观看无码| 最新天堂中文在线| 久久久精品视频国产| 秋霞在线一区二区| 日韩一级理论片| 在线能看的av网站| 中文字幕精品在线播放| 久久精品免费一区二区| 国产高潮免费视频| 少妇高潮大叫好爽喷水| 免费观看国产精品视频| 久久6免费视频| 成人在线观看你懂的| 北条麻妃在线视频| 91香蕉国产线在线观看| 无码人妻丰满熟妇区96| www.色欧美| 少妇高潮喷水久久久久久久久久| 日本黄网站免费| 欧美与动交zoz0z| 激情婷婷综合网| 亚洲国产一二三精品无码| 国产亚洲综合视频| 中文字幕色呦呦| 亚洲 激情 在线| 黄色大片中文字幕| 日韩欧美理论片| jizz欧美激情18| 人妻久久久一区二区三区| 亚洲综合伊人久久| 久久久精品麻豆| 男人添女人下部高潮视频在观看| 成年网站在线播放| 成人毛片视频网站| 欧美黑人在线观看| 日韩精品视频网址| 尤蜜粉嫩av国产一区二区三区| 国产免费观看高清视频| 国产精品免费看久久久无码| 亚洲欧美偷拍另类| 免费在线观看的毛片| 国产日本在线播放| 国产情侣第一页| 成人av在线不卡| 日韩国产小视频| 91亚洲精品国产| 亚洲国产精品无码av| 日本免费a视频| 加勒比成人在线| 日韩精品一区在线视频| 天堂8在线天堂资源bt| 97在线免费视频观看| 777久久精品一区二区三区无码 | 日韩人妻精品一区二区三区| 午夜免费一区二区| 国产小视频精品| 国产色视频在线播放| 中文av字幕在线观看| 爱爱爱视频网站| 四虎4hu永久免费入口| 国产一级爱c视频| 浮妇高潮喷白浆视频| aa在线免费观看| 无需播放器的av| 国产卡一卡二在线| 国产人妻777人伦精品hd| 久久婷婷五月综合色国产香蕉| 国产福利视频在线播放| 超碰影院在线观看| 欧美少妇在线观看| 国产网站免费在线观看| 日本黄大片一区二区三区| 天天摸天天舔天天操| 99er在线视频| 日本爱爱免费视频| 国产免费xxx| 一本久道综合色婷婷五月| 国产精品久久久久久9999| 大片在线观看网站免费收看| 波多野结衣综合网| 亚洲一二区在线观看| 真人抽搐一进一出视频| 成人一区二区三| www.69av| 天天看片天天操| 精品这里只有精品| 中文字幕视频三区| 亚洲国产精品久久久久婷蜜芽| 国产高清视频网站| 日韩国产欧美亚洲| 蜜桃福利午夜精品一区| 欧在线一二三四区| 日韩人妻无码精品久久久不卡| 日日噜噜夜夜狠狠| 波多野结衣作品集| 久久99久久久久久| 欧美精品aaaa| 国产福利视频在线播放| 久久久久99精品成人片| 国产精欧美一区二区三区白种人| 99热自拍偷拍| av无码久久久久久不卡网站| 色婷婷激情视频| 少妇一级淫免费播放| 超碰网在线观看| 3d动漫一区二区三区| 日韩a级在线观看| 神马午夜伦理影院|