前言
對于后端開發人員來說,經常會和數據打交道,今天總結下數據庫相關的知識。包括MySQL,JDBC基礎數據庫系統原理知識點,JDBC進階數據庫系統原理知識點,,性能優化。以下對這些內容做一些簡單的總結,同時我也有完整的思維導圖,博客上不方便展示,若有需要,請關注微信公眾號永倫的小屋,后臺回復 數據庫 即可獲取。
細節1. .1 數據庫的概述
1.2 安裝MySQL
登錄和退出mysql客戶端1.3 SQL
1.4 DDL
1.5 DML1.6 DCL1.7 DQL
條件查詢
聚合函數
.8 約束
1.9 中文無法插入解決辦法1.10 連接類型
右外連接
2. JDBC2.1 JDBC 的原理2.2 四大核心類
2.3 四大參數2.4 預編譯語句集2.5 DAO模式2.6 時間類型的轉換2.7 大數據存取2.8 批處理3. JDBC_進階3.1 事務
JDBC 中開啟和關閉事務
3.2 三種并發讀問題
幻讀3.3 四種隔離級別
讀未提交3.4 連接池3.5 JNDI
3.6 . .1 安裝 unzip mongo-r2.6.5.zip
cd mongo-r2.6.5
scons all -j 12//12 為 CPU 核數,用來加速編譯過程
若未安裝 scons,使用命令 sudo apt-get scons
4.2 編譯后的文件4.3 搭建
-f conf/.conf /運行 加載指定配置文件/
4.4 連接
操作:
1、拷貝到指定目錄 :cp mongo bin
2、執行程序 mongo 127.0.0.1:12345/test(ip端口數據庫)~
3、關閉 mongodb use admin -》db.shutdownServer(),kill -15 進程
4、重新啟動 mongodb:numactl --interleave=all bin/mongod -f conf/mongod.conf
4.5 數據庫使用
1、連接數據庫
/bin/mongo 127.0.0.1:12345
2、顯示數據庫
show dbs

3、切換數據庫
use imooc(庫名)
4、切換后刪除數據庫
db.dropDatabase()
5、創建數據庫
use imooc(庫名)
6、查看數據庫
show dbs
7、創建 imooc_collection 并插入數據
db.imooc_collection.insert({x:1}) -> json 數據
_id全局唯一不重復,可自行定義不重復字段
db.imooc_collection.insert({x:1,_id:1})
插入多條語句(支持js語法)
for(i=3;i<100;i++) db.imooc_collection.insert({x:i})
8、顯示表結構
show collections
9、查詢數據表中數據
a) 查詢所有 db.imooc_collection.find()
b) 條件查詢(x:1的數據) db.imooc_collection.find({x:1})

c)高級查詢
db.imooc_collection.find().count()/*統計條數*/
db.imooc_collection.find().skip(3).limit(2).sor({x:1})/*過濾掉前三條并限制返回2條且使用x排序*
4.6 數據更新
1.db.imooc_collection.update({x:1},{x:999}) #將x為1的數據更新為x=999
update接收兩個參數,第一個是過濾條件,這里是x=1的數據,第二個是需要修改的目標值
2.另一種情況,一條數據包含三個字段值,如
>db.imooc_collection.insert({x:100,y:100,z:100})
如果直接執行>db.imooc_collection.update({z:100},{y:99}) #將z為100的數據中的y更新為99
這樣會將x和z覆蓋掉,只剩下y:99
為了避免這種情況,需要:
>db.imooc_collection.update({z:100},{$set:{y:99}}) #加入set操作符
set操作符為部分更新操作符,使用set后,內容中存在的字段會被更新,而不存在的字段會保持原狀
如果查找的數據不存在則創建:
> db.user.update({name: 'admin'}, {name: 'admin-updated'}, true)
第三個參數為true即可
mongoDB:update方法有四個參數

第一個參數:查找數據的條件,如{c:1} 表示查找c為1的數據
第二個參數:要更新的數據,如{c:2} 跟新符合條件的數據c為2,默認只更新第一個符合條件的數據。
第三個參數:boolean類型,更新數據不存在時是否創建一條數據,默認為false,設置為true時,自動創建數據。
第四個參數:boolean類型,跟新數據時是否更新所有符合條件的數據,默認為false,只跟新一條符合條件的數據,設置為true時,更新所有符合條件的數據。
如db.collection.update({c:1},{$set{c:2}},false,true)
update(舊數據,{$set:新數據},false,true),只能使用部分更新操作符號$SET
4.7 方法API
db.test.save({1:"hello"});保存數據到test集合中
db.test.insert({1:"hello"});插入數據到test集合中(和insert功能相同)
find:一個參數,查找數據的條件,不填則查找所有數據
update:上章說過
remove:刪除數據,一個參數(必須,否則會報錯):條件,默認刪除所有符合條件的數據。
drop:沒有參數,刪除當前數據表
count:查找數據的條數
sort:排序,一個參數,排序條件,{c:1} 根據c排序, 1為正序,-1為倒序。
show dbs:查詢所有數據庫
show tables:查詢數據表
show collections; 顯示當前選擇的db中的集合

use dbname:選擇數據庫,如果數據庫不存在,在第一次保存數據的時候會創建數據庫。
4.8 命令小結
scons all
mongod -f file
mongo ip:port
show dbs
use db
show collections
db.collection.insert();
db.collection.update()
db.collection.delete()
db.collection.count();
db.collection.find()
db.collection.getIndexes()
db.collection.ensuerIndex()
5. 性能優化5.1 MySQL 性能優化
分表技術(水平分割、垂直分割)讀寫[寫: //add]分離存儲過程 [模塊化編程,可以提高速度]對 mysql 配置優化 [配置最大并發數 my.ini, 調整緩存大小 ]mysql 服務器硬件升級定時的去清除不需要的數據,定時進行碎片整理()5.2 SQL語句優化5.3 索引
不使用索引
原文鏈接: