oracle数据库的使用
文章目錄
- 1.Oracle 的表空間分類
- 1.1永久表空間
- 1.2臨時表空間
- 1.3創建永久表空間命令
- 2 、創建用戶
- 2.1 通過 PL/SQL Developer 工具創建用戶
- 3 分配用戶權限
- 3.1對象權限(Object privileges)
- 3.2角色權限(Role privileges)
- 3.3系統權限(System privileges)
- 4 分配鏈接權限
- 5 分配系統權限
- 6、oracle的連接配置
- 6.1 文件位置
- 6.2 sqlnet.ora
- 6.3 tnsnames.ora
- 6.3.1ORCL
- 6.3.2PROTOCOL
- 6.3.3HOST
- 6.3.4PORT
- 6.4 listener.ora
- 6.4.1LISTENER
- 6.4.2PROTOCOL
- 6.4.3HOST
- 6.4.4PORT
- 7、 Net Configuration Assistant 工具
- 7.1 配置監聽程序
- 7.2 Oracle 本地網絡服務配置
- 7.2.1配置本地網絡服務要求:
- 7.2.2配置方式
- 8、Oracle 基本操作
- 1 Oracle 中的數據類型
- 1.1 字符類型
- 1.1.1 CHAR 類型
- 1.1.2 VARCHAR2 類型
- 1.1.3 NVARCHAR2 類型
- 1.2數字類型
- 1.2.1 NUMBER 類型
- 1.2.2 INTEGER 類型
- 1.3.1 BINARY_FLOAT 類型
- 1.3.2 BINARY_DOUBLE
- 1.4日期類型
- 1.4.1 DATE 類型
- 1.4.2 TIMESTAMP 類型
- 1.4.3 TIMESTAMP WITH TIME ZONE 類型
- 1.4.4 TIMESTAMP WITH LOCAL TIME ZONE 類型
- 1.5 LOB 類型
- 1.5.1 CLOB 類型(Character Large Object)
- 1.5.2 BLOB 類型(Binary Large Object)
- 1.5.3 NCLOB 數據類型
- 1.6 LONG & RAW & LONG RAW 類型
- 1.6.1 LONG 類型
- 1.6.2 LONG RAW 類型
- 1.6.3 RAW 類型
- 2 在 Oracle 中創建表
- 2.1 Oracle 表名命名規則
- 3 數據庫中的約束(未完待續)
- 3.1 定義
- 3.2 分類
- 3.2.1 主鍵約束
- 3.2.2外建約束
- 3.2.3 check約束
- 3.2.4 default 約束
- 3.2.5 unique(唯一約束)
- 3.2.6 not null 約束
- 4 數據庫中的表關系
- 4.1 定義
- 4.2 實現方式
- 4.3 分類
- 4.3.1 一對一
- 4.3.2 一對多
- 4.3.3 多對多
1.Oracle 的表空間分類
1.1永久表空間
表空間是數據庫的邏輯劃分,一個表空間只能屬于一個數據庫。所有的數據庫對象都存
放在指定的表空間中。但主要存放的是表,所以稱作表空間。
1.2臨時表空間
Oracle 臨時表空間主要用來做查詢和存放一些緩沖區數據。臨時表空間消耗的主要原因
是需要對查詢的中間結果進行排序。重啟數據庫可以釋放臨時表空間。
1.3創建永久表空間命令
create tablespace 永 久 表 空 間 名 稱 datafile ' 永 久 表 空 間 物 理 文 件 位 置 ' size 15M autoextend on next 10M permanent online; autoextend on next 10M 表示表空間大小如果超過15M則自動擴容10M,autoextend on next 10M 表示永久的意識記住oracle的安裝目錄,創建表空間需要用戶目錄
創建永久表空間,位置在oracle安裝目錄下
當我們創建用戶時,選則自己創建的表空間,此時的用戶創建的表和表中的數據都在自己創建的表空間里
臨時表空間不需要創建
注:創建表空間需要在sys和system用戶下創建表空間,普通用戶沒有權限
2 、創建用戶
2.1 通過 PL/SQL Developer 工具創建用戶
注意:需要sys用戶登陸數據庫
登陸用戶
缺少會話的權限,沒有權限,需要分配連接權限
3 分配用戶權限
3.1對象權限(Object privileges)
對象權限是指在指定的表,視圖,序列上制定執行動作的權限或權利。(表和視圖序列存儲過程都稱為數據庫對象)
3.2角色權限(Role privileges)
角色是可以授予用戶的相關權限的組,該方法使權限的授予,撤回更加容易管理。
3.3系統權限(System privileges)
為用戶分配創建表、創建用戶、創建視圖、創建存儲過程等權限。
4 分配鏈接權限
為當前用戶分配一個 connect 鏈接角色,connect表示鏈接
5 分配系統權限
創建表的時候提示沒有權限,需要創建系統權限
設置權限
此時創建表后提交,發現繼續報錯:提示用戶對表空間無權限
添加不限制表空間
設置用戶全部權限,可以給用戶dba角色
6、oracle的連接配置
6.1 文件位置
Oracle 目錄\product\11.2.0\dbhome_1\NETWORK\ADMIN
6.2 sqlnet.ora
名稱解析。通過這個文件來決定怎么樣找一個連接中出現的連接字符串。
如:sqlplus bjsxt/oracle@orcl
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
6.3 tnsnames.ora
用在 oracle client 端,用戶配置連接數據庫的別名參數,就像系統中的 hosts 文件一樣。
6.3.1ORCL
客戶端連接服務器端使用的服務別名。注意一定要頂行書寫,否則會無法識別服務別名。
6.3.2PROTOCOL
客戶端與服務器端通訊的協議,一般為 TCP,該內容一般不用改。
6.3.3HOST
ORACLE 服務器端 IP 地址或者 hostname。確保服務器端的監聽啟動正常。
6.3.4PORT
數據庫偵聽正在偵聽的端口,此處 port 的值一定要與數據庫偵聽正在偵聽的端口一樣。
6.4 listener.ora
用在 oracle server 端,可配置 Oracle 的監聽端口
6.4.1LISTENER
監聽名稱,可以配置多個監聽,多個監聽的端口號要區分開來。
6.4.2PROTOCOL
監聽協議,一般都使用 TCP 。
6.4.3HOST
本機 IP 地址或者 localhostname。
6.4.4PORT
監聽的端口號。
7、 Net Configuration Assistant 工具
7.1 配置監聽程序
7.2 Oracle 本地網絡服務配置
7.2.1配置本地網絡服務要求:
1,防火墻需要關閉
2,相互是可 ping 通的
7.2.2配置方式
8、Oracle 基本操作
1 Oracle 中的數據類型
1.1 字符類型
字符串數據類型還可以依據存儲空間分為固定長度類型(CHAR) 和可變長度類型
(VARCHAR2/NVARCHAR2)兩種。
1.1.1 CHAR 類型
CHAR 類型,定長字符串,會用空格填充來達到其最大長度。非 NULL 的 CHAR (12)
總是包含 12 字節信息。一個漢字是3個字節,CHAR 字段最多可以存儲 2,000 字節的信息。如果創建表時,不指定 CHAR 長度,則默認為 1。
1.1.2 VARCHAR2 類型
變長字符串,與 CHAR 類型不同,它不會使用空格填充至最大長度,一個漢字是3個字節,VARCHAR2 最多可以存儲 4,000 字節的信息。
1.1.3 NVARCHAR2 類型
這是一個包含 UNICODE 格式數據的變長字符串。無論是漢字和其他類型,都是統一的格式,一個表示一個字符, NVARCHAR2 最多可以存儲 4,000字節的信息。
1.2數字類型
1.2.1 NUMBER 類型
NUMBER(P,S)是最常見的數字類型。
P 是 Precision 的英文縮寫,即精度縮寫,表示整數的位數,最多不能超過 38 個有
效數字。
S 是 Scale 的英文縮寫,表示小數點數字的位數。
1.2.2 INTEGER 類型
INTEGER 是 NUMBER 的子類型,它等同于 NUMBER(38,0),用來存儲整數。若插
入、更新的數值有小數,則會被四舍五入。1.3浮點數
1.3.1 BINARY_FLOAT 類型
BINARY_FLOAT 是 32 位、 單精度浮點數字數據類型。可以支持至少 6 位精度,每個
BINARY_FLOAT 的值需要 5 個字節,包括長度字節。
1.3.2 BINARY_DOUBLE
BINARY_DOUBLE 是為 64 位,雙精度浮點數字數據類型。每個 BINARY_DOUBLE
的值需要 9 個字節,包括長度字節。
1.4日期類型
1.4.1 DATE 類型
DATE 是最常用的數據類型,日期數據類型存儲日期和時間信息。雖然可以用字符或數
字類型表示日期和時間信息,但是日期數據類型具有特殊關聯的屬性。為每個日期值, Oracle
存儲以下信息: 世紀、 年、 月、 日期、 小時、 分鐘和秒。一般占用 7 個字節的存儲空
間。
1.4.2 TIMESTAMP 類型
這是一個 7 字節或 12 字節的定寬日期/時間數據類型。它與 DATE 數據類型不同,因為
TIMESTAMP 可以包含小數秒,帶小數秒的 TIMESTAMP 在小數點右邊最多可以保留 9 位。
1.4.3 TIMESTAMP WITH TIME ZONE 類型
這是 TIMESTAMP 類型的變種,它包含了時區偏移量的值。
1.4.4 TIMESTAMP WITH LOCAL TIME ZONE 類型
將時間數據以數據庫時區進行規范化后進行存儲
1.5 LOB 類型
1.5.1 CLOB 類型(Character Large Object)
二進制數據,存儲單字節和多字節字符數據。最大長度 4G。
1.5.2 BLOB 類型(Binary Large Object)
它存儲非結構化的二進制數據大對象,它可以被認為是沒有字符集語義的比特流,一般是圖像、聲音、視頻等文件。最大長度 4G。
1.5.3 NCLOB 數據類型
存儲 UNICODE 類型的數據 ,最大長度 4G。
1.6 LONG & RAW & LONG RAW 類型
1.6.1 LONG 類型
它存儲變長字符串(超長字符串),最多達 2G 的字符數據(2GB 是指 2 千兆字節, 而不
是 2 千兆字符)。
1.6.2 LONG RAW 類型
能存儲 2GB 的原始二進制數據,可存放多媒體圖象聲音等。
1.6.3 RAW 類型
用于存儲二進制或字符類型數據,必須制定長度。這種數據類型存儲的數據不會發生字
符集轉換。可存放多媒體圖象聲音等。
2 在 Oracle 中創建表
2.1 Oracle 表名命名規則
必須以字母開頭
長度不能超過 30 個字符
避免使用 Oracle 的關鍵字
只能使用 A-Z、a-z、0-9、_#$
2.2使用帶有特殊符號的表名
Oracle 在創建表時,表名會自動轉換大寫。Oracle 對表名大小寫不敏感。
如果在定義表名時含有特殊符號,或者用小寫字母來定義表名則需要在表名兩側添加雙
引號。
3 數據庫中的約束(未完待續)
3.1 定義
對一個表中的屬性操作的限制叫做約束
3.2 分類
3.2.1 主鍵約束
不允許重復元素,不能為空,避免了數據冗余
3.2.2外建約束
保證事物所關聯的其他事物一定是存在的,事物與事物之間的關系是通過外建來體現的
3.2.3 check約束
限制某一個值,在某一范圍之內,保證事物屬性的取值在合法的范圍之內
create table student (student_id int primary key,stu_sal int check (stu_sal >=1000 and stu_sal <= 8000)3.2.4 default 約束
保證事物屬性一定會有一個值,不給該屬性取值時,系統會自動給該屬性取默認值
create table student (student_id int primary key stu_sal int check (stu_sal >=1000 and stu_sal <= 8000)stu_sex char(1) default '男')insert into student(stu_id,stu_sal) values (1,100) 性別沒有插入,此時執行默認值為男3.2.5 unique(唯一約束)
保證了事物屬性不允許重復,但允許為空
create table student (student_id int primary key,stu_sal int check (stu_sal >=1000 and stu_sal <= 8000)stu_sex char(1) default '男'stu_name varchar2(200) uniqueinsert into student2 values (1,6000,‘男’,‘張三’) insert into student2 values (2,6000,‘男’,‘張三’) --error,違反了唯一性約束 insert into student2 values (null,6000,‘男’,‘王五’) --error,主鍵不能為空 insert into student2 values (null,6000,‘男’,‘ ’) 唯一建能為空注:stu_name varchar2(200) unique not null unique和not null 約束可以組合使用唯一約束和主鍵約束的區別
不要用業務邏輯當主鍵
用一個編號當主鍵,把哪個本來可以當主鍵的當做唯一建,不需要用業務邏輯當主鍵
3.2.6 not null 約束
要求用戶必須為該屬性賦一個值,否則語法出錯
create table student (student_id int primary key,stu_email varchar2(50) not null,stu_name varchar2(200) unique,stu_sal int check (stu_sal >=1000 and stu_sal <= 8000)stu_sex char(1) default '男'insert into student5 values (1,hb.qq.com,zhangshan,6000) --error 有默認值也需要附值insert into student5 (stu_id,stu_email,stu_name,stu_sal) values (1,hb.qq.com,zhangshan,6000) 正確寫法insert into student5 values (stu_id, stu_email,stu_sal)values(3,'hb.qq.com',5000) --ok select * from student5 返回直:3,hb.qq.com,null,5000,男 如果一個字段不寫null,也不寫not null則默認是null,即默認值允許為空可以不給該字段賦值null 和 default區別
相同點:都允許用戶不賦值
不同點:null修飾的字段如果用戶不賦值則默認null。default修飾的字段如果用戶不賦值則默認是default指定的值
表和約束的區別
數據庫是通過表來解決存儲問題
數據庫是通過約束來解決事物的取直的有效性和合法性
建表的過程就是指定事物屬性及其事物屬性各種約束的過程
4 數據庫中的表關系
4.1 定義
表和表之間的聯系
4.2 實現方式
通過設置不同形式的外建來體現表和表不同關系
4.3 分類
4.3.1 一對一
既可以把表A的主鍵充當表B的外建
也可以把表B的主鍵充當表A的外建
4.3.2 一對多
把表A的主鍵充當表B的外鍵或則講:表A表的主鍵添加到B表的外鍵,在多的一方添加外鍵
4.3.3 多對多
班級 老師
學生 老師
一個班級對應多個老師,一個老師對應多個班級
一個學生對應多個老師,一個老師對應第一個學生
創建表
總結
以上是生活随笔為你收集整理的oracle数据库的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云之讯
- 下一篇: image库的使用笔记