Oracle 資料庫
Oracle → 甲骨文
Oracle資料庫是一種關系型資料庫,由行和列組成
資料:文字、圖片、視頻
- DB(DataBase) 資料庫: 用于存盤資料的倉庫
- 資料庫存盤資料的最小單位是表 Table,遵循sql標準
- DBS(DataBase System): 資料庫系統
- DBMS(DataBase Management System)資料庫管理系統
Oracle:資料庫的版本
| Oracle DB | 版本功能 |
|---|---|
| Oracle7、Oracle8 | 本地化訪問 |
| Oracle8i、Oracle9i | 可以網路訪問 |
| Oracle10g、Oracle11g | 支持網格訪問、分布式操作 |
| Oracle12c | 支持云技術訪問 |
市場上常見的資料庫:
| 引數\資料庫 | Excel、Access | Sql、Server(MicroSoft)、MySQL(Oracle) | Oracle(Oracle) | DB2 (IBM) |
|---|---|---|---|---|
| 存盤量 | 2W條之內 | 10W 級別 | 1000W 級別 | 1000W 級別 |
| 安全性 | 無 | 賬號/密碼 | 賬號/密碼 | 賬號/密碼/權限 |
| 費用 | 0 | 0 | 服務收費 | 服務收費 |
單表存盤的資料達到了千萬級別(不影響查詢效率)
SQL(Structured Query Lanuage)結構化查詢語言:
不同資料庫之間差異性
- 資料型別
- 庫函式
- PL/SQL編程:函式、存盤程序、觸發器、游標等
1. 啟動資料服務: (Oracle 控制面板 → 管理工具 → 服務)
OracleService + 實體名(OracleServiceOrcl)
2. 啟動資料庫服務監聽器,讓客戶端可以連上資料:
OracleOraDb10g_home1TNSListener
帳號密碼:system/system 資料庫:orcl
3. Oracle的資料型別:
3.1 資料型別:number
? number():代表一個數值型別,默認是38位最大
? number(n):代表一個n位的整數,number(3) → (- 999 — 999)
? number(n,m):代表n位有效數字,小數部分占2位
3.2 字串型別
char(n) :定長的字串,最大只能存盤3個位元組(一個漢字)
char(10):只能存盤10個字符 不足也用10字符存盤 —— 浪費存盤空間,但查詢效果高于varchar,最大值是2000字符
varchar(n):變長的字串
varchar(10):最多10個字符,不足按照實際大小存盤 —— varchar最大值是4000字符
varchar2(Oracle10g 開始)
varchar2(n):變長的字串對varchar進行優化 —— 查詢效率比varchar高,其他都一樣,varchar最大值是4000字符
3.3 時間型別
data:精確到 年、月、日、時、分、秒
timestamp:精確到 年、月、日、時、分、秒、毫秒的后5位)
3.4 大欄位類(大資料)
blob:二進制方式存盤的大欄位(大資料):視頻檔案、圖片檔案(最大值4G)
clob:位元組碼存盤的大欄位(大資料):(最大值4G)
DDL:資料定義語言
DML:資料操縱語言
TCL:事務控制語言
DCL:資料控制語言
DQL:資料查詢語言
4. DDL陳述句(資料庫定義語言)
表名、列名命名規范:
以(字母,- $ _)為首字母,后面跟(字母,- $ _ 數字),不能是Oracle關鍵字
4.1 創建表
create table 表名{
列名1 資料型別,
列名2 資料型別,
.......
列名n 資料型別
}
4.2 修改表結構
新增列:
alert table 表名
add(
列名1 資料型別,
列名2 資料型別,
.......
列名n 資料型別
)
修改列的資料型別:
alter table 表名
modify 列名 新的資料型別;
注意:新的資料型別必須兼容老的資料型別
洗掉列:
alter table (表名) drop column (列名);
修改列名:
alter table 表名rename(列名) to(新的列名);
修改表名:
rename (表名)to (新的表名)
4.3 表的約束
資料設計的三大范式
? 1、第一范式:列不可在分(原子性)
? 2、第二范式:先在滿足第一范式的基礎上 行資料要可以區分(主鍵)
? 3、第三范式 :先在滿足第二范式的基礎上 本表的非主屬性依賴其他表 必須只能依賴其他表的主屬性(外鍵)
添加約束:
alter table t_class
add constraint 約束名 約束類別 列
約束類別
? 1、主鍵約束 primary key
? 2、唯一鍵約束 unique
? 3、檢查約束 check
? 4、外鍵約束 foreign key
? 5、默認值 default
4.4 SQL 結構化查詢語言 (Structured Query Language)
? create table、alter table、drop table、truncate table
資料定義語言(DML Data Manipulation Language)
? DML陳述句做添 刪 改 只能影響緩沖區內容
? DML陳述句必須與TCL陳述句配合使用才能真正影響表資料
insert into 表名(列名1,...列名n) values(值1,...值n);
update 表名 set 列名1=值1,...列名n=值n [where 列名xx=xxx];
delete from 表名 [where 列名xx=xxx];
事務控制語言(TCL->Transaction Control Language)
? commit; 提交事務
? rollback; 回滾
資料查詢語言(DQL Data Query Language)
select 列名1,...列名n from 表名 [where 列名xx=xxx];
5. 內置函式
5.1 字符函式:
? lower: 大寫轉為小寫
? upper: 小寫轉為大寫
? initcap: 把首字母轉為大寫
? instr: 查找某個字符在字串中的下標
? concat: 拼接字串
? substr: 截取字串
? trim: 去除前后空格
? lpad: 從左邊對字串使用指定的字符進行填充
? rpad: 從右邊對字串使用指定的字符進行填充
? replace: 替換
? length: 計算字串長度
5.2 數值函式:
? round: 四舍五入
? floor: 向下取整
? ceil: 向上取整
? trunc: 截斷
5.3 時間函式:
? sysdate: 獲取當前系統時間
? current_date: 獲取當前系統時間
? current_timestatmp: 獲取當前系統時間(毫秒)
? months_between: 計算兩個時間相隔多少個月
? add_months: 計算當前時間后面n個月之后的時間
? last_day: 計算當前時間所在月份的最后一天
? next_day: 從當前時間開始計算,距離最近的一個星期幾的日期(外國一個星期的第一天是星期日)
5.4 轉換函式:
? to_number: 把資料轉為數值型
? to_char: 把資料轉為字符型
? to_date: 把資料轉為時間型
5.5 通用函式:
? mvl:nvl(值,1) 判斷值是否為null,若為null,取1,否則取值
? nvl:nvl2(值,值1,值2) 判斷值是否為null,若為null,取值2,否則取值1
5.6 case when: 通用條件運算式
5.7 decode: 特有函式計算方式
5.8 dense_rank() over(partition by)不考慮并發情況下的磁區域
5.9 row_number() over(partition by)考慮并發情況下的磁區域
5.10 rank() over(partition by) rownum 如果沒有出現并發情況則只出現前三個的磁區域排序,如果出現并發情況,則顯示所有并列的資料
is null 資料為null
is not null 資料不為null
= 等于
<> != 不等于
or 或者
and 并且
in 在...里面
not in 不在...里面
between and 在...范圍內
not between and 不在...范圍內
group by 目的是為了使用聚合函式 sum avg min max count
group by 哪個欄位,就只能查詢哪個欄位
子查詢:把查詢出來的結果當作條件繼續查詢
6. 表鏈接:
6.1 自連接:是內連接的一種特殊形式,自己與自己連接
A表 inner join A表 on A.欄位 = A.欄位
A表 A表 where A.欄位 = A.欄位
6.2 內連接:n張表進行連接,約束條件至少為 n-1 個,相匹配的資料顯示出來,不相匹配的資料不顯示
等值連接:
A表 inner join B表 on A.欄位 = B.欄位
A表 B表 where A.欄位 = B.欄位
非等值連接:
在連接條件使用除等于運算子以外的其它比較運算子比較被連接的 列的列值,這些運算子包括>、>=、<=、<、!>、!<和<>
6.3 外連接:
左外鏈接:
? N 張表進行連接,約束條件至少為 n - 1 個,以左表為驅動表(主表),左表中資料都顯示出來,右表中相匹配的資料顯示出來,不相匹配的顯示為null
右外連接:
? N 張表進行連接,約束條件至少為 n - 1 個,以右表為驅動表(主表),右表中資料都顯示出來,左表中相匹配的資料顯示出來,不相匹配的顯示為null
全外鏈接:
? N 張表進行連接,約束條件至少為 n - 1 個,內連接相匹配的資料 + 左外鏈接沒有匹配的資料 + 右外連接沒有匹配到的資料
6.4 笛卡爾連接
select * from A表,B表
select * from A表 cross join B表
7. DCL語言(資料控制語言):grant revoke
DBA、RESOURCE、CONNECT 三種標準角色
賦權方式:
? 直接把權限賦予用戶
? 把角色賦予用戶,不同的角色所擁有的權限不一樣
7.1 創建用戶
create user ztkj1710 identified by admin
7.2 賦予權限 grant
grant connect to ztkj1710
grant create session to ztkj1710
7.3 識訓權限 revoke
revoke connect from ztkj1710
?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/286076.html
標籤:Oracle
上一篇:Oracle資料庫失效物件處理
下一篇:Oracle的創建檔案
