資料庫小結

2021-08-19 08:50:08 字數 1405 閱讀 9250

在最近做的專案中碰到了資料庫方面的問題,對遇到的問題和處理方法做乙個小總。

1.左(右)連線查詢與多變聯合查詢的區別。

假定現在有兩張表user_info和adviser_verify_info表,使用者表中user_id為10000的使用者在adviser_verify_info表中可能有對應的記錄,也可能沒有對應的記錄,這是

用左連線查詢:

select user_info.`user_id`,user_info.nick_name, `adviser_verify_info`.`description` from 

user_info left join  `adviser_verify_info` on user_info.user_id = `adviser_verify_info`.user_id where user_info.`user_id` = 10000

可以查出來一條記錄。

用聯合查詢的方式查詢:

select user_info.`user_id`,user_info.nick_name, `adviser_verify_info`.`description` from 

user_info,`adviser_verify_info`  where user_info.`user_id` = 10000 and user_info.user_id = `adviser_verify_info`.user_id

查出來的記錄數為0;

兩者的目的都是通過使用者表的user_id欄位去關聯表adviser_verify_info查詢兩張表中與指定的user_id對應的資訊,通過比較這兩種方式可以發現,當a表中有對應的記錄,b表中沒有對應的記錄時,採用左連線查詢可以查出對應的記錄來,記錄中包含a表中的對應資訊,而採用聯合查詢的方式則查不出對應的記錄。

聯合查詢只要有一張表中沒有關聯條件對應的記錄,則無法查出記錄;而連線查詢則可以在其中某張表缺失關聯條件對應記錄的情況下查詢出記錄。

2.一般插入一張表中的記錄數是固定的,但之前碰到了一種情況,插入某張表中的記錄是不固定的,插入的記錄值是從另外一張表中根據查詢條件查詢出來的結果:

要在user_commission_count表中插入若干條記錄,這些記錄的使用者為在另外一張表user_commission中在滿足建立按時間在某個時間段內的使用者,記錄數需要以來查詢才能知道,這種情況下可以採用下面的寫法: values採用查詢的方式。

insert into user_commission_count (user_id,exchange_type,count,status,create_time,update_time)

select distinct(user_id),'p',0,0,now(),now() from user_commission

where  create_time between '2018-04-01' and '2018-04-30'

資料庫索引小結

正文內容本身就是一種按照一定規則排列的目錄稱為 聚集索引 在正文之外建立的目錄稱為 非聚集索引 對於索引的優化,從索引實現本身 1.對於等職查詢使用雜湊結構的索引,對含非等值查詢的使用b樹。2.壓縮索引鍵值,減少索引層數 對於使用者的選擇來說 1.對於查詢乙個範圍的值,或者多個記錄的值時使用聚集索引...

SQLite資料庫小結

sqlite是一種小型的資料庫,他的特點就是體積小,不依賴於第三方軟體,在使用的時候只需要提取其中的檔案就可以了,因為乙個 對應乙個.db檔案,所以在某些應用,比如android裝置,ios裝置上都能很方便使用。在android中,使用android資料庫自帶的sqlite包可以建立資料庫 impo...

資料庫概念小結

1.什麼是資料庫?答 資料庫就是乙個檔案系統 乙個軟體 可以以檔案的形式儲存大量的資料,並且支援標準的sql語句對資料庫中的資料進行crud操作。2.關係型資料庫 儲存關係資料模型的資料叫做關係型資料庫 3.什麼是e r圖?e entity 實體 r relation 關係 er圖中我們用矩形代表實...