本篇文章給大家帶來了關于的相關知識,其中主要總結介紹了數據庫使用的相關問題,包括了安裝、卸載、表空間、數據類型等方面,希望對大家有幫助。 推薦教程:《教程》
本篇文章給大家帶來了關于的相關知識,其中主要總結介紹了數據庫使用的相關問題,包括了安裝、卸載、表空間、數據類型等方面,希望對大家有幫助。
推薦教程:《教程》
卸載
執行.xml 文件進行自動卸載操作,執行過程中輸入回車或者yes,不能刪除的目錄在卸載執行完成后手動刪除。
介紹系統用戶sys, (權限 sys>>scott)
sys 要擁有系統管理員權限
可以直接登錄
用來操作企業管理器,管理員級別
scott 創始人名字,默認密碼是tiger
登錄使用 用戶登錄
[username/password] [@server] [as sysdba|sysper]
注意: 如果登錄本地數據庫就不用 @ 了
show user 查看當前登錄用戶 數據字典 (desc )表空間概述表空間:數據庫的邏輯存儲空間,一個數據庫包含多個表空間查看用戶表空間:
管理員數據字典:、
普通用戶數據字典:、
設置用戶的默認或臨時表空間
ALTER USER username DEFAULT|TEMPOPRRY TABLESPACE tablespace_name
創建永久表空間
CREATE TABLESPACE tablespace_name DATAFILE 'XX.dbf' SIZE 10m
創建臨時表空間
CREATE TEMPORARY TABLESPACE tablespace_name TEMPFILE 'XX.dbf' SIZE 10m
查看數據文件字典
desc dba_data_files
查看表空間文件存儲路徑
select file_name from dba_data_files where tablespace_name = 'tablespace_name';
修改表空間狀態
設置聯機或脫機狀態:ALTER |;
設置只讀或可讀寫狀態:ALTER READ ONLY|READ WRITE;
表空間修改數據文件
增加數據文件:ALTER ADD 'xx.dbf' SIZE xx;
刪除數據文件:ALTER DROP 'xx.dbf'; (不能刪除第一個數據文件,除非把表空間刪掉)
刪除表空間
DROP TABLESPACE tablespace_name [INCLUDING CONTENTS]
數據類型字符型
CHAR(n): MAX-2000
NCHAR(n): MAX-1000, 格式,存儲漢字比較多
(n): MAX-4000
(n): MAX-2000, 格式
數值型
(p,s) : p-有效數字位數,s-保留小數位數
FLOAT(n) : 二進制數據 1~126位 (*0.30103 得到10進制數據)
日期型
DATE: 精確到秒
: 精確到毫秒
其他類型 大文件
BLOB: 4G 二進制
CLOB: 4G 字符串
管理表創建表
添加字段
ALTER TABLE table_name add column_name data_type;
更改字段數據類型(無數據時)
ALTER TABLE table_name MODIFY column_name data_type;
刪除字段
ALTER TABLE table_name DROP COLUMN column_name;
修改字段名
ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name;
修改表名
RENAME table_name TO new_table_name;
刪除表
比速度快,刪除全部數據,不刪除表結構。
TRUNCATE TABLE table_name;
刪除表結構
DROP TABLE table_name;
在創建時復制表
CREATE TABLE new_table AS SELECT column1,...|* FROM old_table;
在添加時復制表
INSERT INTO new_table [(column1,...)] SELECT column1,...|* FROM old_table;
約束 :定義規則和確保完整性
非空約束:數據不能是NULL值,如用戶名、密碼等(設置非空約束之前表中不能有空數據)
主鍵約束:唯一標識,不能為空,加快查詢速度,自動創建索引。一張表只能設計一個,可以由多個字段構成(聯合或復合主鍵)。
啟用|禁用當前約束
DISABLE | ENABLE CONSTARINT constraint_name;
刪除當前約束
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
DROP PRIMARY KEY [CASCADE] ; [CASCADE] :外鍵約束關系
外鍵約束:主表的字段必須是主鍵,主從表中響應的字段是同一個數據類型,從表外鍵字段值必須來自主表中相應字段值,或者為null值。
創建表時添加外鍵約束
CREATE TABLE table2 (column_name datatype REFERENCES table1(column_name));
CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES table_name(column_name) [ON DELETE CASCADE]
修改表時添加外鍵約束
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES table_name(column_name) [ON DELETE CASCSDE] ; [ON DELETE CASCSDE]:級聯刪除
唯一約束:字段值不能重復
唯一約束和主鍵約束的區別
主鍵必須是非空,唯一約束允許有一個空值。主鍵在每張表中只能有一個,唯一約束在每張表中可以有多個。
修改表時添加唯一約束
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_name);
檢查約束:使表當中的值具有實際意義。
修改表時添加檢查約束
ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(column_name > 0);
查詢替換列的顯示名稱
設置數據格式
更改字符長度(字符類型)
== 數值類型格式(“9”代表一個數字)==
== 清除設置的格式==
COLUMN column_name CLEAR;
函數
函數的作用
函數的分類
數值函數
四舍五入: ROUND(n,[,m]) ; 省略m : m = 0 取整; m>0 : 保留小數點后m位;m 取整函數:CEIL(n) - 整數最大值
FLOOR(n) - 整數最小值
常用計算:ABS(n) - 絕對值
MOD(m,n) 取余數 m/n ,m和n有一個值為null,結果返回NULL
POWER(m,n) 返回m的n次冪,m和n有一個值為null,結果返回NULL
SORT(n) 平方根
三角函數:…
字符函數
大小寫轉換:UPPER(char)
LOWER(char)
(char) : 首字母大寫
獲取子字符串:n可以省略,截取到最后;m < 0 從尾部開始;
獲取字符串長度:(char)
字符串連接:(char1,char2) 與 || 操作符作用一樣
去除字串:TRIM(c2 FROM c1) 從c1當中去除c2字符串
LTRIM(c1 [, c2]) 從頭部開始去除一個c2 ,c2 為空去除左邊空格
LTRIM(c1 [, c2]) 從尾部開始去除一個c2,c2 為空去除右邊空格
TRIM(c1) 去除空格
替換函數:(char, [,]) 為空默認替換為空串
日期函數
系統時間: 默認格式 DD-MON-YY
(date,i)
(date,char)
(date)
(date1.date2) 兩個日期之間間隔的月份,計算間隔多少天直接日期相減
(date FROM )
轉換函數
日期>>字符:(date[,[,]]) date:將要轉換的日期 ; :轉換的格式; : 日期的語言,通常不寫;
字符>>日期:(date[,[,]]) --------只能輸出默認日期格式
數字>>字符:([,])
9: 顯示數字并忽略前面的0
0:顯示數字,位數不足,用0補齊
. 或D 顯示小數點
, 或G 顯示千位符
$:美元符號
S:加正負號(前后都可以)
字符>>數字:(char[,])
函數(都不滿足返回null)
decode(column_name, value1,result1,... , defaultValue)
你問我答:
聯合索引比單索引的效率高么?
如果聯合索引中的多個字段都在where謂詞中出現了,則聯合索引效率比單列索引高。因為通過多個條件可以從索引中過濾得到更少的記錄條數,也就減少了需要回表掃描的次數,甚至可以直接在聯合索引中得到所查的所有結果,則不再需要回表。
但是由于多列的聯合索引肯定要比單列索引大,也就是說同樣的索引需要存儲的物理塊要多于單列索引,所以,如果查詢中只出現了聯合索引中的某一列oracle查詢某列最大值,則其效率不如單列索引。
前導列的作用?
前導列的概念是這樣的,如果建立了f1,f2上的聯合索引,則在查詢時必須要用到f1,也就是所謂的前導列,該索引才會有效,因為索引是按照前導列排序的,如果where條件謂詞中沒有前導列,則需要執行索引掃描才能得到想要的結果,這種情況下其效率往往較差。
如果不需要前導列的話, 這個反轉又起到什么作用呢?
鑒于前面描述的前導列的概念,我們考慮如下表存儲table(f1,f2);
aa 1
ab 2
ac 3
ad 4
ae 5
如果我們對表table建立f1上的普通索引,由于按照f1進行排序,所以針對where f1=ad則需要遍歷所有的a開始的索引,而如果對f1建立索引,則由于da只有一個,則可以更快的得到需要的結果。
推薦教程:《視頻教程》
以上就是歸納總結數據庫使用的基本知識的詳細內容oracle查詢某列最大值,更多請關注鴻網互聯其它相關文章!