1. 程式人生 > >【Oracle】Oracle基礎知識

【Oracle】Oracle基礎知識

Oracle解除安裝

E:\app\meng.li\product\11.2.0\dbhome_1\deinstall\deinstall.bat執行這個批處理檔案就可以把Oracle解除安裝掉。

使用者

Sys 、system (sys的許可權高於system)

Sysman 操作企業管理器使用者

Scott (Oracle創始人之一)預設密碼是 tiger

使用system使用者登入

[username/password] [@server][assysdba|sysoper]

例:system/root @orcl as sysdba

Orcl就是自己設定的服務名。

在system使用者下連線sys使用者

例:Connect sys/root as sysdba


檢視登入使用者

Show user 命令


通過資料字典檢視其他的使用者資訊

Dba_users資料字典 (檢視資料字典的結構 descdba_users)


例:檢視系統中所有的系統使用者的名字

Select username from dba_users;

啟用scott使用者(scott使用者在oracle中預設是鎖定的)

啟用使用者的語句

Alter user username account unlock


使用scott來登入sql plus


表空間概述

表空間是在資料庫中開闢的空間,用來存放資料庫物件,一個數據庫可以有多個表空間。

表空間由一個或多個數據檔案構成。

表空間的分類

1.      永久表空間:資料庫中要永久儲存的,如表、檢視

2.      臨時表空間:資料庫操作過程中中間儲存的值,操作完成後釋放。

3.      UNDO表空間:儲存事務所修改的舊值,可以進行回滾。

檢視使用者表空間(通過資料字典檢視)

Dba_tablespaces(系統管理員級)   user_tablespaces(普通使用者) 資料字典


查看錶空間的名字


系統管理員登入後預設的表空間有六個

SYSTEM : 存放sys使用者的表檢視以及儲存過程等物件,系統表空間。

SYSAUX : 作為EXAMPLE(安裝oracle資料庫的示例)的輔助表空間。

UNDOTBS1 : 儲存一些撤銷資訊。

TEMP : 儲存SQL語句處理和索引的表空間。

USERS : 儲存資料庫使用者建立的資料庫物件。

Dba_users  、 user_users 資料字典

可以檢視當前使用者的預設表空間和臨時表空間。


例:檢視System使用者的預設表空間和臨時表空間(使用者名稱字要大寫)

Selectdefault_tablespace,temporary_tablespace

from dba_users

where username=’SYSTEM’


設定使用者的預設或臨時表空間

ALTER USER username

DEFAULT|TEMPORARY

TABLESPACE tablespace_name

例:更改System使用者的預設表空間


建立表空間

CREATE [TEMPORARY] TABLESPACE

Tablespace_name

TEMPFILE|DATAFILE ‘xx.dbf’ SIZE xx

例:建立一個永久表空間和一個臨時表空間


檢視永久表空間的資料字典dba_data_files


例:利用dba_data_files 資料字典查詢表空間的名字

SELECT FILE_NAME

FROM dba_data_files

Where tablespace_name=’TEST1_TABLESPACE’


檢視臨時表空間的資料字典 dba_temp_files

修改表空間

設定聯機或離線狀態建立完表空間後,預設的是聯機狀態

ALTER TABLESPACE tablespace_name

ONLINE | OFFLINE;


例:查看錶空間狀態 ONLINE 或 OFFLINE  在dba_tablespaces資料字典內


設定只讀或可讀寫狀態

ALTER TABLESPACE tablespace_name

READ ONLY | READ WRITE

修改表空間資料檔案

增加資料檔案

ALTER TABLESPACE tablespace_name

ADD DATAFILE ‘xx.dbf’ SIZE xx;


查詢增加的表空間


刪除資料檔案

ALTER TABLESPACE tablespace_name

DROP DATAFILE ‘filename.dbf’

刪除表空間

DROP TABLESPACE

Tablespace_name [INCLUDING CONTENTS]

可選部分代表同時刪除資料檔案。

表存放在表空間裡。

基本儲存單位

二維結構

行和列

表的約定:

1.      每一列資料必須具有相同資料型別。

2.      列名唯一

3.      每一行唯一

資料型別:

字元型

CHAR(n) n的最大值是2000  NCHAR(n) n的最大值是1000

VARCHAR2(n) n的最大值是4000  NVARCHAR2(n) n的最大值是2000,用於儲存unicode格式的資料,更適合儲存中文資料。

數值型

NUMBER(p,s)   p代表有效數字  s代表小數點後的位數

FLOAT(n) 表示二進位制資料

日期型

DATE  公元前4712年1月1日到公元9999年12月31日

TIMESTAMP 時間戳型別,精確到小數秒

其他型別

BLOB 能存放4GB的資料,以二進位制儲存。

CLOB 能存放4GB的資料,以字串儲存。

建立表

CREATE TABLE table_name

(

         Column_namedatatype,…

)

新增欄位

ALTER TABLE table_name

ADD column_name datatype;

更改表的欄位資料型別

ALTER TABLE table_name

MODIFY column_name datatype;

刪除欄位

ALTER TALBE 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  刪除表和資料

操作表的資料

新增資料

INSERT INTO table_name

(column1,column2,…)

VALUES(value1,value2,…)

設定預設值

Column_name date default sysdate);

複製表資料(兩種方式)

1.在建表時複製

CREATE TABLE table_new

AS

SELECT column1,…| * FROM table_old

2.在新增資料時複製

INSERT INTO table_new

[(column1,…)]

SELECT column1,… | *FROM table_old

修改資料

UPDATE tab_name

SET column1 = value1,…

[WHERE conditions]

刪除資料

DELECT FROM table_name

[WHERE conditions]

約束的作用

定義規則

確保完整性

1.非空約束

在建立表時建立

CREATE TABLE tab_name(

         Column_namedatatype NOT NULL,….

);

在修改表時新增非空約束

ALTER TABLE table_name

MODIFY column_name DATATYPE NOT NULL

在修改表的時候去掉非空約束

ALTER TABLE table_name

MODIFY column_name datatype NULL

2.主鍵約束

一張表只能設計一個主鍵約束

主鍵約束可以由多個欄位構成(聯合主鍵或複合主鍵)

在建立表時設定主鍵約束

CREATE TABLE table_name(

         Column_namedatatype PRIMARY KEY,…

)

建立聯合主鍵

Create table userinfo_p1

(id number(6,0),

Username varchar2(20),

Userpwd varchar2(20),

Constraint pk_id_username primarykey(id,username));

在資料字典 user_constraints 中檢視主鍵的名字

在修改表時新增主鍵約束

ALTER TABLE table_name

ADD CONSTRAINT constraint_name

PRIMARY KEY(column_name1,…);

更改主鍵約束的名稱

ALTER TABLE table_name

RENAME CONSTRAINT old_name

TO new_name

刪除主鍵約束

暫時不想用,禁用約束

DISABLE|ENABLE CONSTRAINT constraint_name

DROP CONSTRAINT constraint_name

DROP PRIMARY KEY[CASCADE]   CASCADE 表示級聯刪除

3.外來鍵約束

在建立表時設定外來鍵約束(設定外來鍵時主表的欄位必須為主鍵而且相應欄位必須是同一個資料型別的) 從表中的欄位要麼在主表中出現,要麼為空值。

列級設定

CREATE TABLE table1

(column_name datatype REFERENCES

Table2(column_name),….);

第二種方式表級設定

CONSTRAINT constraint_name

FOREIGN KEY(column_name) REFERENCES

Table_name(column_name) [ON DELETE CASCADE]

在修改表時新增外來鍵約束

ADD CONSTRAINT constraint_name FROEIGN

KEY(column_name) REFERENCES

Table_name(column_name) [ON DELETE CASCADE]

刪除外來鍵約束

DISABLE | ENABLE CONSTRAINT constraint_name

DROP CONSTRAINT constraint_name;

4.唯一約束

唯一約束和主鍵約束的區別:

         主鍵欄位值必須是非空的

         唯一約束允許有一個空值

         主鍵在一個表中只能有一個,而唯一約束可以有多個。

在建立表時設定唯一約束

CREATE TABLE table_name

(column_name datatype UNIQUE,…)

CONSTRAINT constraint_name

UNIQUE(column_name)

在修改表時新增唯一約束

ALTER TABLE table_name

ADD CONSTRAINT constraint_name

UNIQUE(column_name)

刪除唯一約束

DISABLE | ENABLE CONSTRAINT constraint_name

DROP CONSTRAINT constraint_name

5.檢查約束

在建立表時設定檢查約束

CREATE TABLE table_name

(column_name datatype CHECK(expressions)),

…)

在表級設定檢查約束

CONSTRAINT constraint_name

CHECK(expressions)

在修改表時新增檢查約束

ADD CONSTRAINT constraint_name

CHECK(expressions)

刪除檢查約束

DISABLE | ENABLE CONSTRAINT constraint_name

DROP CONSTRAINT constraint_name

查詢

基本查詢語句

SELECT [DISTINCT] column_name1,…| *

FROM table_name

[WHERE conditions]

在SQL PLUS中設定格式

COLUMN column_name HEADING new_name  設定結果顯示名字

設定結果顯示格式

COLUMN column_name FORMAT dataformat

設定字元型長度

Col  username format a10

數值型用一個9代表一個數字


清除欄位格式

COLUMN column_name CLEAR

給欄位設定別名

SELECT column_name AS new_name,…

FROM table_name

運算子

算術運算子(+-*/)

比較運算子(>,>=,<,<=,=,<>)

邏輯運算子(and,or,not)

邏輯運算子的優先順序:按not、and、or的順序依次遞減。

模糊查詢

LIKE

萬用字元 _ 代表一個字元

% 代表0或多個字元

BETWEEN AND 查詢的結果是個閉合區間,包含兩邊的值。

In(aaa,bbb,ccc,…)表示在IN的集合內的

對查詢結果排序

ORDER BY DESC/ASC

CASE .. WHEN

CASE column_name

WHEN value1 THEN result1,…

[ELSE result] END


CASE

WHEN column_name=value1

THEN result1,…[ELSE result] END


Decode 函式實現上面的功能