Oracle數據庫筆記整理

Oracle數據庫

函數

大小寫轉換

SELECT ename, LOWER(ename) FROM emp;
SELECT ename, UPPER(ename) FROM emp;
複製代碼

截取

SELECT ename, SUBSTR(ename,1,2) FROM emp;
複製代碼

四捨五入

SELECT ROUND(3.54159) FROM dual;
SELECT ROUND(3.14159,3) FROM dual;
複製代碼

日期轉字符

SELECT TO_CHAR(SYSDATE, 'yyyy-MM-dd HH:mi:ss') FROM dual;
SELECT TO_CHAR(SYSDATE, 'yyyy-MM-dd HH24:mi:ss') FROM dual;
複製代碼

字符格式轉換

SELECT TO_CHAR(sal, '99,999.9999') FROM emp;
複製代碼

字符轉日期

SELECT TO_DATE('2019-06-11 15:08:00','yyyy-MM-dd HH24:mi:ss') FROM dual;
複製代碼

解決NULL空值問題

SELECT ename, NVL(comm,0) FROM emp;
複製代碼

錶鏈接

  • 左鏈接:left join,返回左表中全部的數據和右表中知足條件的數據
  • 右鏈接:right join,返回右表中全部的數據和左表中知足條件的數據
  • 內鏈接:inner join,返回左表和右表同時知足條件的數據

分頁

在MySQL分頁LIMIT,在ORACLE不支持LIMIT,引入ROWNUM僞列 如:查詢某表前5條數據sql

SELECT * FROM 表名 WHERE ROWNUM <=5;
複製代碼

可是ROWNUM不支持> >= =,故須要使用子查詢實現查詢。 如:數據庫

SELECT ename, deptno
FROM (SELECT ename, deptno, rownum AS rn FROM emp) t 
WHERE t.rn > 10
複製代碼

視圖

視圖就當作一張虛標,數據來源於真實的表。函數

建立視圖語法:ui

CREATE VIEW  視圖名
AS  SQL語句;
複製代碼

視圖須要建立視圖權限,登錄管理員帳號執行受權命令spa

GRANT CREATE TABLE, CREATE VIEW TO scott;
複製代碼

數據字典

表、索引、視圖等信息儲存在ORACLE數據庫的表中,這些表稱爲數據字典。code

序列

自增加

  • MySQL:auto_increment
  • ORACLE:不支持auto_increment

實現自增加原理對象

獲取當前的id,自增1 id++,做爲下一條數據的id插入。 id爲主鍵,id實現自增加。索引

建立序列語法:rem

CREATE SEQUENCE 序列名;
複製代碼

序列自己是一個對象,有兩個屬性。每次調用nextval,會自增加1個string

例子: 建表

CREATE TABLE weibo(
    id NUMBER PRIMARY KEY,
    user_id VARCHAR2(20),
    content VARCHAR2(1024),
    count NUMBER
);
複製代碼

建序列

CREATE SEQUENCE seq_weibo;
複製代碼

懟數據

INSERT INTO weibo(id, user_id, content, count)
VALUES (seq_weibo.nextval, 'admin', '21213131ea', 1);
INSERT INTO weibo(id, user_id, content, count)
VALUES (seq_weibo.nextval, 'admin', '21213131ea', 1);
複製代碼

觀察id,每次調用nextval會自增加1個。

SELECT * FROM weibo;
複製代碼

索引

目的:爲了加快查詢效率

建立主鍵時,會默認建立一個主鍵的索引。查詢索引字段效率高,非索引字段默認全表掃描。

單字段建立索引

CREATE INDEX 索引名
ON 表名(字段名)
複製代碼

例:

CREATE INDEX index_user_gameid
ON t_user_fee(gameid);
複製代碼

多字段建立索引

CREATE INDEX 索引名
ON 表名(字段1, 字段2, ...)
複製代碼

例:

CREATE INDEX index_user_gameid_msisdn
ON t_user_fee(msisdn, gameid);
複製代碼

注意: 一旦給索引的字段添加了函數,則該索引失效。

相關文章
相關標籤/搜索