數據庫
Delete Truncate Drop 區別
答:這三個操作都是針對數據庫的表進行操作,都有刪除表的功能,其中的區別在于:
Delete:只將表中的數據進行刪除,不刪除定義不釋放空間,是dml語句,需要提交事務,如果不想刪除可以回滾。delete每次刪除一行,并在事務日志中為所刪除的每行記錄一項。數據兩大的情況下,執行速度相較于其他兩個而言較慢。
Truncate:僅僅刪除表中數據,不刪除定義但釋放表空間,是DDL語句,操作立刻生效,無法通過binlog回滾,會清空所有數據且速度較快。
Drop:表中的數據和表的結構都會被刪除,且釋放空間,是DDL語句,操作立刻生效,無法回滾,操作速度相較于其他兩個最快。
數據庫語句操作分類:DML,DDL,DCL,DQL,TCL
DML(數據操作語言):對表中的數據進行操作,語句包括增刪改查:insert,delete,update,select
DDL(數據定義語言):對表進行操作,語句包括:create,truncate,drop,alter
DCL(數據控制語言):用來管理數據庫用戶、控制數據庫的訪問權限:grant……to……,revoke……from……
DQL(數據查詢語言):執行順序:先從表中獲取數據(from),然后根據條件進行篩選(where),再根據分組字段進行分組(group by……having),查出數據(select),然后根據查到的數據進行排序(order by),最后進行分頁操作(limit)
SELECT
字段列表
FROM
表名列表
WHERE
條件列表
GROUP BY
分組字段列表
HAVING
分組后條件列表
ORDER BY
排序字段列表
LIMIT
分頁參數
常用函數
decode(條件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
nvl:nvl(string1, replace_with)
mod(m,n): m/n的余數
round(n,p): 四舍五入
length 長度
lower 小寫
upper 大寫
to_date 轉化日期
to_char 轉化字符
to_number 轉變為數字
ltrim/rtrim/trim 去左/右/中 空格
substr(c,p,n) 截取字符串,從p位開始截,包含p位,截取n位
KETTLE內存溢出解決方案
答:找到kettle的安裝路徑,找到spoon.bat,點擊進行編輯,找到對應的字段進行調整:-Xmx1024m 加大,最好是265m的整數倍,修改默認緩存條數(默認為1萬),雙擊Transformation空白地方,會彈出一個界面,修改Nr of rows in rowset值。
kettle中黃色的鎖,綠色的對勾,紅色的停止代表的意思
黃色的鎖:表示不論上一步是否執行成功,將會繼續向下執行,下一步可以正常執行
綠色的對勾:表示只有當上一步的任務執行成功并且沒有任何錯誤的時候才會執行下一步
紅色停止:表示當上一個作業項的執行結果為假或者沒有成功執行時,執行下一個作業項
雙斜線:并行啟動下一個條目,右鍵菜單launch next entries in parallel可以設置
Oracle的五種約束
- 非空(not null) 約束:不能為空;
- 主鍵(PRIMARY KEY)約束:唯一的標識表中的每一行;
- 唯一(UNIQUE)約束:每列字段的值不能相同;
- 外鍵(FOREIGN KEY)約束:用來維護從表與主表之間的引用完整性;
- 條件(CHECK)約束:表中每行都要滿足該約束條件
Oracle和MySQL的區別
1、Oracle是大型數據庫,而MySQL是中小型數據庫。
2、Oracle的內存占有量非常大,而mysql非常小
3、MySQL支持主鍵自增長,指定主鍵為auto increment,插入時會自動增長。Oracle主鍵一般使用序列。
4、group by用法:MySQL中group by在select語句中可以隨意使用,但是在Oracle中如果查詢語句中有組函數,那其他列名必須是組函數處理過的或者是group by子句中的列,否則報錯。
5、引號方面:MySQL中用雙引號包起字符串,Oracle中只可以用單引號包起字符串。
創建索引的優缺點
優點:
索引是數據庫優化
表的主鍵會默認自動創建索引
大量降低數據庫的IO磁盤讀寫成本,極大提高了檢索速度
索引事先對數據進行了排序,降低查詢是數據排序的成本,降低CPU的消耗
缺點:
索引本身也是一張表,該表保存