一、mysql如何作分頁前端
mysql數據庫作分頁用limit關鍵字,它後面跟兩個參數startIndex和pageSizemysql
二、mysql引擎有哪些,各自的特色是什麼?程序員
innodb和myisam兩個引擎,二者區別是
innodb支持事物,myisam不支持
innodb支持外鍵,myisam不支持
innodb不支持全文索引,myisam支持全文索引
innodb提供提交、回滾、崩潰恢復能力的事物的安全能力,實現併發控制
myisam提供較高的插入和查詢記錄的效率,主要用於插入和查詢redis
三、數據庫怎麼創建索引sql
create index account_index on `table name `(`字段名`(length)
四、一張表多個字段,怎麼建立組合索引mongodb
create index account_index on `table name `(`字段名`,'字段名')
五、如何應對數據的高併發,大量的數據計算數據庫
4.django中orm表性能相關的
select_related:一對多使用,查詢主動作連表
prefetch_related:多對多或者一對多的時候使用,不作連表,作屢次查詢django
六、數據庫內連表、左連表、右連表編程
內鏈接是根據某個條件鏈接兩個表共有的數據
左鏈接是根據某個條件以及左邊的錶鏈接數據,右邊的表沒有數據的話則爲null
右鏈接是根據某個條件以及右邊的錶鏈接數據,左邊的表沒有數據的話則爲nullwindows
七、視圖和表的區別
視圖是已經編譯好的sql語句,是基於sql語句的結果集的可視化的表,而表不是
視圖是窗口,表示內容
視圖沒有實際的物理記錄,而表有
視圖的創建和刪除隻影響視圖自己,不影響對應的表
八、關係型數據庫的特色
數據集中控制
數據獨立性高
數據共享性好
數據冗餘度小
數據結構化
統一的數據保護能力
九、mysql數據庫都有哪些索引
普通索引:普通索引僅有一個功能:加速查找
惟一索引:惟一索引兩個功能:加速查找和惟一約束(可含null)
外鍵索引:外鍵索引兩個功能:加速查找和惟一約束(不可爲null)
聯合索引:聯合索引是將n個列組合成一個索引,應用場景:同時使用n列來進行查詢
十、存儲過程
存儲過程不容許執行return語句,可是能夠經過out參數返回多個值,存儲過程通常是做爲一個獨立的部分來執行,存儲過程是一個預編譯的SQL語句。
十一、sql語句與數據庫優化:
簡答:
select句中避免使用 '*'
減小訪問數據庫的次數
刪除重複記錄
用where子句替代having子句
減小對錶的查詢
explain
深刻:
數據庫優化:
十二、char和vachar區別:
char是固定長度,存儲須要空間12個字節,處理速度比vachar快,費內存空間
vachar是不固定長度,須要存儲空間13個字節,節約存儲空間
1三、Mechached與redis
mechached:只支持字符串,不能持久化,數據僅存在內存中,宕機或重啓數據將所有失效
不能進行分佈式擴展,文件沒法異步法。
優勢:mechached進程運行以後,會預申請一塊較大的內存空間,本身進行管理。
redis:支持服務器端的數據類型,redis與memcached相比來講,擁有更多的數據結構和併發支持更豐富的數據操做,可持久化。
五大類型數據:string、hash、list、set和有序集合,redis是單進程單線程的。
缺點:數據庫的容量受到物理內存的限制。
1四、sql注入
sql注入是比較常見的攻擊方式之一,針對編程員編程的疏忽,經過sql語句,實現帳號沒法登錄,甚至篡改數據庫。
防止:凡涉及到執行sql中有變量時,切記不要用拼接字符串的方法
1五、什麼是觸發器
觸發器是一種特殊的存儲過程,主要是經過事件來觸發而被執行的,他能夠強化約束,來維護數據庫的完整性和一致性,能夠跟蹤數據內的操做從而不容許未經許可的 更新和變化,能夠聯級運算。
只有表支持觸發器,視圖不支持觸發器
1六、遊標是什麼?
是對查詢出來的結果集做爲一個單元來有效的處理,遊標能夠定在該單元中的特定行,從結果集的當前行檢索一行或多行,能夠對結果集當前行作修改,
通常不使用遊標,可是須要逐條處理數據的時候,遊標顯得十分重要
1七、 數據庫支持多有標準的SQL數據類型,重要分爲三類
數值類型(tinyint,int,bigint,浮點數,bit)
字符串類型(char和vachar,enum,text,set)
日期類型(date,datetime,timestamp)
1八、mysql慢查詢
慢查詢對於跟蹤有問題的查詢頗有用,能夠分析出當前程序裏哪些sql語句比較耗費資源
慢查詢定義:
指mysql記錄全部執行超過long_query_time參數設定的時間值的sql語句,慢查詢日誌就是記錄這些sql的日誌。
mysql在windows系統中的配置文件通常是my.ini找到mysqld
log-slow-queries = F:\MySQL\log\mysqlslowquery.log 爲慢查詢日誌存放的位置,通常要有可寫權限
long_query_time = 2 2表示查詢超過兩秒才記錄
1九、memcached命中率
命中:能夠直接經過緩存獲取到須要的數據
不命中:沒法直接經過緩存獲取到想要的數據,須要再次查詢數據庫或者執行其餘的操做,緣由多是因爲緩存中根本不存在,或者緩存已通過期
緩存的命中率越高則表示使用緩存的收益越高,應額用的性能越好,抗病發能力越強
運行state命令能夠查看memcached服務的狀態信息,其中cmd—get表示總的get次數,get—hits表示命中次數,命中率=get—hits / cmd—get
20、Oracle和MySQL該如何選擇,爲何?
他們都有各自的優勢和缺點。考慮到時間因素,我傾向於MySQL
選擇MySQL而不選Oracle的緣由
MySQL開源
MySQL輕便快捷
MySQL對命令行和圖形界面的支持都很好
MySQL支持經過Query Browser進行管理
https://www.cnblogs.com/songyifan427/ 步履不停總結
2一、什麼狀況下適合創建索引?
1.爲常常出如今關鍵字order by、group by、distinct後面的字段,創建索引
2.在union等集合操做的結果集字段上,創建索引,其創建索引的目的同上
3.爲常常用做查詢選擇的字段,創建索引
4.在常常用做錶鏈接的屬性上,創建索引
2二、數據庫底層是用什麼結構實現的,你大體畫一下:
底層用B+數實現,結構圖參考:
http://blog.csdn.net/cjfeii/article/details/10858721
http://blog.csdn.net/tonyxf121/article/details/8393545
2三、sql語句應該考慮哪些安全性?
1.防止sql注入,對特殊字符進行轉義,過濾或者使用預編譯的sql語句綁定變量
2.最小權限原則,特別是不要用root帳戶,爲不一樣的類型的動做或者組建使用不一樣的帳戶
3.當sql運行出錯時,不要把數據庫返回的錯誤信息所有顯示給用戶,以防止泄漏服務器和數據庫相關信息
2四、數據庫事物有哪幾種?
2五、MySQ數據表在什麼狀況下容易損壞?
服務器忽然斷電致使數據文件損壞
強制關機,沒有先關閉mysq服務器等
2六、drop,delete與truncate的區別
drop直接刪除表
truncate刪除表中數據,再插入時自增加id又從1開始
delete刪除表中數據,能夠加where子句
2七、數據庫範式
2八、MySQL鎖類型
根據鎖的類型分:能夠分爲共享鎖、排他鎖、意向共享鎖和意向排他鎖
根據鎖的粒度分:能夠分爲行鎖、表鎖
對於mysql而言,事務機制更可能是靠底層的存儲引擎來實現的,所以,mysql層面只有表鎖,
而支持事物的innodb存儲引發則實現了行鎖(在行相應的索引記錄上的鎖)
說明:對於更新操做(讀不上鎖),只有走索引纔可能上行鎖
MVCC(多版本併發控制)併發控制機制下,任何操做都不會阻塞讀取操做,
讀取操做也不會阻塞任何操做,只由於讀不上鎖
共享鎖:由讀表操做加上的鎖,加鎖後其餘用戶只能獲取該表或行的共享鎖,不能獲取排他鎖,
也就是說只能讀不能寫
排他鎖:由寫表操做加上的鎖,加鎖後其餘用戶不能獲取該表或該行的任何鎖,典型mysql事物中的更新操做
意向共享鎖(IS):事物打算給數據行加行共享鎖,事物在給一個數據行加共享鎖前必須先取得該表的IS鎖
意向排他鎖(IX):事物打算給數據行加行排他鎖,事物在給一個數據行家排他鎖前必須先取得該表的IX鎖
2九、如何解決MYSQL數據庫中文亂碼問題?
1.在數據庫安裝的時候指定字符集
2.若是在按完了之後能夠更改配置文件
3.創建數據庫時候:指定字符集類型
4.建表的時候也指定字符集
30、數據庫應用系統設計
1.規劃
2.需求分析
3.概念模型設計
4.邏輯設計
5.物理設計
6. 程序編制及調試
7.運行及維護
31.說一下 MySQL 數據庫存儲的原理?
過程是一個可編程的函數,它在數據庫中建立並保存。
它能夠有 SQL 語句和一些特殊的控制結構組成。
當但願在不一樣的應用 程序或平臺上執行相同的函數,或者封裝特定功能時,存儲過程是非 常有用的。
數據庫中的存儲過程能夠看作是對編程中面向對象方法的 模擬。它容許控制數據的訪問方式。
存儲過程一般有如下優勢:
3二、readis 和 mysql 的區別
readis 是內存數據庫,數據保存在內存中,速度快。 mysql 是關係型數據庫,持久化存儲,存放在磁盤裏面,功能強 大。檢索的話,會涉及到必定的 IO,數據訪問也就慢。
3二、redis 受攻擊怎麼辦?
主從 持久化存儲 Redis 不以 root 帳戶啓動 設置複雜密碼 不容許 key 方式登陸
3二、MongoDB是什麼
MongoDB 是一個面向文檔的數據庫系統。使用 C++編寫,不支持 SQL,但有本身功能強大的查詢語法。
MongoDB 使用 BSON 做爲數據存儲和傳輸的格式。BSON 是一種類 似 JSON 的二進制序列化文檔,支持嵌套對象和數組。
MongoDB 很像 MySQL,document 對應 MySQL 的 row,collection 對應 MySQL 的 table 應用場景:
不適合的場景:
缺點:不支持事務 MongoDB 佔用空間過大 維護工具不夠成熟
3三、 Mysql 和 redis 提升可用性
MySQL Replication 是 MySQL 官方提供的主從同步方案,用於將 一個 MySQL 實例的數據,同步到另外一個實例中。Replication 爲保證 數據安全作了重要的保證,也是如今運用最廣的 MySQL 容災方案。 Replication 用兩個或以上的實例搭建了 MySQL 主從複製集羣,提供 單點寫入,多點讀取的服務,實現了讀的 scale out. Sentinel 是 Redis 官方爲集羣提供的高可用解決方案。 在實際 項目中可使用 sentinel 去作 redis 自動故障轉移,減小人工介入 的工做量。另外 sentinel 也給客戶端提供了監控消息的通知,這樣 客戶端就可根據消息類型去判斷服務器的狀態,去作對應的適配操做。 下面是 Sentinel 主要功能列表: Monitoring:Sentinel 持續檢查集羣中的 master、slave 狀態, 判斷是否存活。 Notification:在發現某個 redis 實例死的狀況下,Sentinel 能經過 API 通知系統管理員或其餘程序腳本。 Automatic failover:若是一個 master 掛掉後,sentinel 立馬 啓動故障轉移,把某個 slave 提高爲 master。其餘的 slave 從新配 置指向新 master。 Configuration provider:對於客戶端來講 sentinel 通知是有效可 信賴的。客戶端會鏈接 sentinel 去請求當前 master 的地址,一旦發 生故障 sentinel 會提供新地址給客戶端。
3四、數據庫索引是什麼
數據庫索引,是數據庫管理系統中一個排序的數據結構,以協助 快速查詢、更新數據庫表中數據。索引的實現一般使用 B_TREE。 B_TREE 索引加速了數據訪問,由於存儲引擎不會再去掃描整張表得 到須要的數據;相反,它從根節點開始,根節點保存了子節點的指針, 存儲引擎會根據指針快速尋找數據。
3五、Redis mongodb 優缺點
MongoDB 和 Redis 都是 NoSQL,採用結構型數據存儲。兩者在使 用場景中,存在必定的區別,這也主要因爲兩者在內存映射的處理過 程,持久化的處理方法不一樣。MongoDB 建議集羣部署,更多的考慮到 集羣方案,Redis 更偏重於進程順序寫入,雖然支持集羣,也僅限於 主-從模式.
Redis 優勢:
缺點:
缺點:不支持事務 MongoDB 佔用空間過大 維護工具不夠成熟
3六、數據庫負載均衡
負載均衡集羣是由一組相互獨立的計算機系統構成,經過常規網 絡或專用網絡進行鏈接,由路由器銜接在一塊兒,各節點相互協做、共 同負載、均衡壓力,對客戶端來講,整個羣集能夠視爲一臺具備超高 性能的獨立服務器。
(1)實現原理 實現數據庫的負載均衡技術,首先要有一個能夠控制鏈接數據庫 的控制端。在這裏,它截斷了數據庫和程序的直接鏈接,由全部的程 序來訪問這個中間層,而後再由中間層來訪問數據庫。這樣,咱們就 能夠具體控制訪問某個數據庫了,而後還能夠根據數據庫的當前負載 採起有效的均衡策略,來調整每次鏈接到哪一個數據庫。
(2)實現多據庫數據同步 對於負載均衡,最重要的就是全部服務器的數據都是實時同步的。 這是一個集羣所必需的,由於,若是數不據實時、不一樣步,那麼用戶 從一臺服務器讀出的數據,就有別於從另外一臺服務器讀出的數據,這 是不能容許的。因此必須實現數據庫的數據同步。這樣,在查詢的時 候就能夠有多個資源,實現均衡。比較經常使用的方法是 Moebius for SQL Server 集羣,Moebius for SQL Server 集羣採用將核心程序駐留在 每一個機器的數據庫中的辦法,這個核心程序稱爲 Moebius for SQL Server 中間件,主要做用是監測數據庫內數據的變化並將變化的數 據同步到其餘數據庫中。數據同步完成後客戶端纔會獲得響應,同步 過程是併發完成的,因此同步到多個數據庫和同步到一個數據庫的時 間基本相等;另外同步的過程是在事務的環境下完成的,保證了多份 數據在任什麼時候刻數據的一致性。正由於 Moebius 中間件宿主在數據 庫中的創新,讓中間件不但能知道數據的變化,並且知道引發數據變 化的 SQL 語句,根據 SQL 語句的類型智能的採起不一樣的數據同步的策 略以保證數據同步成本的最小化。 數據條數不多,數據內容也不大,則直接同步數據 數據條數不多,可是裏面包含大數據類型,好比文本,二進制數 據等,則先對數據進行壓縮而後再同步,從而減小網絡帶寬的佔用和 傳輸所用的時間。 數據條數不少,此時中間件會拿到形成數據變化的 SQL 語句,然 後對 SQL 語句進行解析,分析其執行計劃和執行成本,並選擇是同步 數據仍是同步 SQL 語句到其餘的數據庫中。此種狀況應用在對錶結構 進行調整或者批量更改數據的時候很是有用。
(3)優缺點 優勢:
3七、MySQL 集羣的優缺點
優勢:
缺點:
3八、redis 有多少個庫?
Redis 一個實例下有 16 個庫
3九、redis 緩存命中率計算?
Redis 提供了 INFO 這個命令,可以隨時監控服務器的狀態,只 用 telnet 到對應服務器的端口,執行命令便可:
telnet localhost 6379 info
在輸出的信息裏面有這幾項和緩存的狀態比較有關係:
keyspace_hits:14414110 keyspace_misses:3228654 used_memory:433264648 expired_keys:1333536 evicted_keys:1547380
經過計算 hits 和 miss,咱們能夠獲得緩存的命中率:14414110 / (14414110 + 3228654) = 81% ,一個緩存失效機制,和過時時間 設計良好的系統,命中率能夠作到 95%以上
40、sqlserver,MySQL ,Oracle http,redis,https 默認端 口號?
41.mysql查重:
select * from table where id in (select idcard from table group by id having count(idcard)>1);
42.查詢並集:
SELECT oname,odesc FROM object_a
UNION
SELECT oname,odesc FROM object_b
43.查詢交集:
SELECT a.oname,a.odesc FROM object_a a INNER JOIN object_b b ON a.oname=b.oname AND a.odesc=b.odesc;
或
SELECT a.oname,a.odesc FROM object_a a INNER JOIN object_b b USING(oname,odesc);
44.查詢差集
SELECT a.oname, a.odesc
FROM
object_a a
LEFT JOIN object_b b
ON a.oname = b.oname
AND a.odesc = b.odesc
WHERE b.id IS NULL
45.清空表並重置自增id:
TRUNCATE TABLE table_name ;