1. 觸發器的作用?
觸發器是一種特殊的存儲過程, 主要是通過時間來出發而被執行的. 它可以強化約束,
來維護數據的完整性和一致性, 可以跟蹤數據庫內的操作從而不允許未經許可的更新和變化. 可以級聯運算
2. 什么是存儲過程? 用什么來調用?
存儲過程是一個預編譯的SQL語句, 有點事允許模塊化的設計, 只需要創建一次,就可以被多次調用,
如果需要執行多次SQL,那么存儲過程的速度更快. 可以用命令對象來調用存儲過程. 可以供外部程序調用, 如java程序
3. 存儲過程的有優缺點?
優點: 存儲過程是一個預編譯的SQL語句, 執行效率高
放在數據庫中,直接調用,減少網絡通信
安全性高
可重復使用
缺點: 移植性差
4. 存儲過程與函數的區別?
存儲過程: 在數據庫中完成指定的增刪改查操作
申明: procedure
函數: 在編程語言中進行任務的處理
申明: function
5. 索引的作用? 和他的優點缺點是什么?
索引就是一種特殊的查詢表, 數據庫的搜索可以利用它加速對數據的檢索. 類似於現實生活中的目錄. 不需要查找整本書就可以找到想要的結果.
6. 什么樣的字段適合建立索引?
唯一, 不為空, 經常被查詢的字段 7. 索引的類型有哪些?
邏輯上: 單行索引,多行索引,唯一索引,非唯一索引,函數索引,域索引.
物理上: 分區索引, 非分區索引
B-tree: 正常性B樹
反轉型B樹
bitmap位圖索引
8. 什么是事務? 什么是鎖?
事務就是被綁在一起作為一個邏輯工作單元的SQL語句分組, 如果任何一個語句操作失敗那么整個操作就會失敗, 會回滾到之前的狀態. 要么全部執行, 要么一個都不執行.
鎖: DBMS中, 鎖是實現事務的關鍵.
9. 什么叫視圖? 游標是什么?
視圖就是一種虛擬的表, 具有和物理表相同的功能. 可以對視圖進行增改查操作, 視圖通常是一個表或多個表的行或列的子集
游標是遍歷結果集的一個指針, 用來逐條處理數據
10. 視圖的優缺點?
優點: 對數據的選擇性訪問
用戶可以通過簡單的查詢從復雜查詢中得到結果
維護數據的獨立性
對相同的數據產生不同的視圖
缺點: 性能
11. 列舉幾種表連接的方式,有什么區別?
左連接: 左邊為主表表數據全部顯示, 匹配表的不匹配部分不顯示
右連接: 右邊為主表表數據全部顯示, 匹配表的不匹配部分不顯示
內連接: 只有兩個元素表相匹配的才能在結果集中顯示
全外連接: 連接中的不匹配的數據全部會顯示出來
交叉連接: 笛卡爾乘積, 顯示的結果是連接表數的乘積
12. 主鍵和外鍵的區別?
主鍵在本表中是唯一的,不為空的, 外鍵可以重復和為空.
外鍵和另外一張表相關聯, 不能創建對應表中不存在的外鍵.
13. 在數據庫中查詢語句速度很慢, 如何優化?
建立索引
減少表之間的關聯
優化SQL語句
簡化查詢字段
14. 數據庫三范式是什么?
第一范式: 列不可再分
第二范式: 行可以唯一區分, 主鍵約束
第三范式: 表的非主屬性不能依賴其他表的非主屬性外鍵約束
15. union和union all有什么不同?
union會刪掉重復的記錄, union all不會
16. varchar2和varchar有什么區別?
varchar2是Oracle自己開發的, 目前varchar2和varchar是同義詞, 關鍵點是varchar是可變長度的, 可以根據實際的長度來存儲
17. oracle和mysql的區別?
庫函數不同
Oracle是用表空間來管理的, mysql不是
SQL語句不同
分頁查詢不同
18. oracle語句有多少類型?
DDL, DML, DCL
DDL: 建表,建數據庫,建立約束,修改約束,權限修改
DML: insert, update, delete
DCL: 管理用戶權限
19. oracle的分頁查詢語句?
select * from table where row_num between 1 and 10;
20. 從數據庫中隨機選擇50條?
select * from (select * from example order by dbms_random.random) where rownum <= 50;
21. order by與group by的區別?
order by是排序查詢
group by是分組查詢 having只能在group by之后, 使用group by查詢的語句需要使用聚合函數
22. commit在哪里會運用?
Oracle的commit就是DML語句提交數據. 在未提交之前你的操作都是保存在內存中, 沒有更新到物理內存中.
執行commit從用戶角度來講就是更新到物理文件了. 事實上commit還寫入了日志文件
23. 行轉列, 列轉行怎么轉?
使用decode函數, 或者使用case when語句
24. 什么是PL/SQL?
PL/SQL是一種程序語言,叫做過程化SQL語言, PL/SQL是對oracle數據庫對SQL語句的擴展.
在普通的SQL語句的使用上增加了編程語言的特點. 通過邏輯判斷,循環等操作來實現復雜的功能或者計算.
PL/SQL只有Oracle數據庫有, mySQL現在不支持PL/SQL
25. 序列的作用?
Oracle使用序列來生成唯一的編號, 用來處理一個表中的自增字段.
26. 表和視圖的關系?
視圖其實就是一條查詢語句, 用於顯示一個或多個表或其他視圖中的數據, 表就是關系型數據庫中實際存儲數據用的.
27. oracle基本數據類型?
字符串 char nchar varchar varchar2 nvarchar2
數字 number integer
浮點 binary_float binary_double float
日期時間 date timestamp
字符塊 blob clob nclob bfile
28. truncate與delete的區別?
delete table: 刪除內容, 不刪除定義, 不釋放空間
truncate: 刪除內容和定義,釋放空間
29. oracle獲取系統時間?
select to_char(sysdate,"yyyy-MM-dd") from dual
30. oracle如何去重?
使用distinct關鍵字