資料庫使用心得?

個人使用資料庫工具的心得小結,只是小結,自己的自己懂,如有不懂,可以問問

ORACLE 11G

--

1. oracle11g介紹與安裝

1.1 oracle簡介

1.1.1 常見的資料庫

1)關係資料庫

MS access、MS sql server、mysql、db2、oracle等

2)嵌入式資料庫

sqlite

3)OOP的資料庫

db4o

4)大型分散式資料庫

如Hadoop等支援各種檔案型別資料的儲存以及集合資料型別的儲存,一般用來海量資料非實時處理

1.1.2 Oracle資料庫管理系統

Oracle(甲骨文)公司核心產品

主要版本Oracle8i/9i、Oracle10g/11g

主要基於C/S系統結構

當前最流行的資料庫

1.2 oracle安裝與配置

參考(安裝手冊)。

資料庫例項(一組後臺程序)

1.3 oracle關鍵服務

OracleService* 核心服務(必須啟動)

*TNSListener 監聽器服務,核心服務,在使用遠端訪問或PL/SQL Developer工具時必須啟動

*Controleorcl 資料庫控制檯服務,需要使用企業管理器的時候必須啟動

*RecoveryService 恢復、閃回等操作需要開啟該服務

*ClrAgent:Oracle資料庫.NET擴充套件服務的一部分。 (非必須啟動)

1.4工具使用

1.4.1 sqlplus工具

直接開啟程式使用

位置:(程式->oracle-oracle11ghome1->應用程式開發->sqlplus)

登陸方式:username/[email protected] [as sysdba]

命令列使用:

sqlplus username/[email protected] [as sysdba] --作為dba身份進入

1.4.2 sql developer工具

提供圖形介面操作。

1.4.3 plsql developer工具

第三方客戶端工具,提供圖形介面操作。

2. 表空間

資料庫由若干表空間構成,表空間由一到多個數據檔案組成,每個資料檔案只能屬於同一表空間。

2.1分類

永久性表空間:一般儲存表、檢視、過程和索引等的資料

臨時性表空間:只用於儲存系統中短期活動的資料

撤銷表空間:用來幫助回退未提交的事務資料

2.2表空間使用示例

建立表空間語法:

CREATE TABLESPACE 表空間名

DATAFILE

'資料檔案路徑' SIZE 大小

[AUTOEXTEND ON] [next 大小]

[maxsize 大小];

修改表空間語法:

ALTER TABLESPACE 表空間名

ADD DATAFILE

'檔案路徑' SIZE 大小

[AUTOEXTEND ON] [next 大小]

[maxsize 大小];

刪除表空間語法:

DROP TABLESPACE 表空間名;

DROP TABLESPACE表空間名INCLUDING CONTENTS AND DATAFILES;

--建立表空間示例,E盤需要先建立oracle_data目錄,以存放資料檔案

CREATE TABLESPACE ts_itcast

DATAFILE

'e:\oracle_data\tp_itcast28.dbf' SIZE 30M

AUTOEXTEND ON;

--查看錶空間,ts_itcast名字得大寫

SELECT file_name,tablespace_name,bytes,autoextensible

FROM dba_data_files

WHERE tablespace_name='TS_ITCAST';

--調整ts_itcast表空間大小,向表空間內新增資料檔案

ALTER TABLESPACE ts_itcast

ADD DATAFILE

'E:\oracle_data\tp_itcast29.DBF' SIZE 20M

AUTOEXTEND ON;

-- 刪除ts_itcast表空間

DROP TABLESPACE ts_itcast;--只刪除表空間

DROP TABLESPACE ts_itcast INCLUDING CONTENTS AND DATAFILES;--刪除表空間及資料檔案

3. 使用者與許可權

3.1系統使用者

sys使用者:超級使用者,主要用來維護系統資訊和管理例項,以SYSDBA或SYSOPER角色登入。

system使用者: 預設的系統管理員,擁有DBA許可權,通常用來管理Oracle資料庫的使用者、許可權和儲存,以Normal方式登入。

scott使用者:示範使用者,使用users表空間。

3.2使用者與模式

模式為資料庫物件(如表、索引等)的集合,oracle會為每個使用者建立一個模式,和使用者名稱一樣。

3.3建立使用者與許可權

--建立使用者語法:

CREATE USER 使用者名稱 IDENTIFIED BY 密碼

DEFAULT TABLESPACE 表空間;

--許可權操作語法

grant 角色許可權(角色)[,角色許可權] to user_itcast;

grant 操作 on 模式.物件 to user_itcast;

revoke 角色許可權(角色)[,角色許可權] from user_itcast;

revoke 操作 on 模式.物件 from user_itcast;

--修改密碼語法

ALTER USER 使用者名稱 identified by 密碼;

--刪除使用者

DROP USER 使用者名稱 CASCADE;

--DROP TABLESPACE 使用者表空間 INCLUDING CONTENTS AND DATAFILES;--刪除表空間及資料檔案

--建立表空間,以便新建使用者時使用

CREATE TABLESPACE ts_itcast

DATAFILE

'e:\oracle_data\tp_itcast26.dbf' SIZE 30M

AUTOEXTEND ON next 20M;

/

--建立使用者

CREATE USER user_itcast IDENTIFIED BY itcast

DEFAULT TABLESPACE ts_itcast

TEMPORARY TABLESPACE temp;

/

--查詢user_itcast使用者

SELECT *

FROM dba_users

WHERE username='USER_ITCAST';

/

-- 給戶user_itcast使用者授權,回收許可權

GRANT connect, resource TO user_itcast; --授予CONNECT和RESOURCE兩個角色(講解許可權)

GRANT SELECT ON SCOTT.emp TO user_itcast; --允許使用者檢視 EMP 表中的記錄(講解模式)

GRANT UPDATE ON SCOTT.emp TO user_itcast; --允許使用者更新 EMP 表中的記錄

REVOKE connect, resource FROM user_itcast; --撤銷CONNECT和RESOURCE兩個角色

/

--修改密碼

ALTER USER user_itcast identified by user10;

-- 刪除使用者

DROP USER user_itcast CASCADE;

--DROP TABLESPACE ts_itcast INCLUDING CONTENTS AND DATAFILES;--刪除表空間及資料檔案

4.oracle資料型別

4.1dual表

理解為:是一張只有一行記錄的表.不存主題資料,我們也稱為“偽表” ,便於select特定物件.

4.2字元資料型別

CHAR:儲存固定長度的字串,單位元組字元,長度為1-2000.

VARCHAR2:儲存可變長度的字串,單位元組字元,長度為1-4000。

NCHAR和NVARCHAR2:儲存Unicode字符集型別(雙位元組字元),NCHAR長度為1-1000,NVARCHAR2長度為1-2000

4.3數值資料型別

NUMBER:儲存整數和浮點數,格式為NUMBER(p)或NUMBER(p, s),P為有效數位(小數點和-號不計),長度為1-38,s為小數點右邊的數字位數(則有效的整數位‘‘不為0開始算’’為p-s位)。

4.4日期時間資料型別

DATE:儲存日期和時間資料 ,設定格式:環境變數新增:nls_date_format的值為YYYY-MM-DD HH24:MI:SS

插入日期示例:insert into 表名 values(列值, ……,to_date( '2014-10-10 12:12:22','YYYY-MM-DD HH24:MI:SS'));可以此基礎上去掉(值和格式都要去掉)秒,分,時,日,月等,分秒去掉預設為0,時分秒去掉,就只有年月日,日去掉預設為1號,月去掉預設為系統當前月。

TIMESTAMP:秒值精確到小數點後6位,

插入資料示例:insert into tt12 values(1,0.333333333,to_timestamp('2014-10-10 12:12:25.112233','YYYY-MM-DD HH24:MI:SS.FF '));

可以此基礎上去掉(值和格式都要去掉)秒或秒後的精確實值,分,時,日,月等,分秒去掉預設為0,時分秒去掉,時預設為12點(可能跟設定有關),日去掉預設為1號,月去掉預設為系統當前月。

4.5 其它資料型別

VARCHAR、 INTEGER、FLOAT、DOUBLE、lob(BLOB、CLOB、BFILE、NCLOB)

5.偽列

末儲存在表中,只能查詢,不能增刪改。

5.1Rowid

資料庫中行的地址(唯一),可快速定位行。

SELECT ROWID,欄位名……

FROM 表名;

rowid 可以在查詢時通過行ID去查詢,尤其是部分重複資料行,用行ID查詢就很方便了

刪除重複行:

DELETE FROM 表 WHERE ROWID NOT IN (SELECT MIN (ROWID) FROM 表 GROUP BY 所有欄位);

5.2Rownum

給查詢結果返回一個數值表示次序,可以用來限制返回的條數,例如分頁查詢。

SELECT emp.*,rownum

FROM Scott.emp

WHERE ROWNUM<11;

以上語句返回查詢結果的前10條記錄。

5.2.3分頁查詢

注意:rownum大於1的其它整數時,條件不成立;等於2或2以上的正整數時條件不成立;

所以查詢某頁的記錄:例如第4到7條記錄,就不能寫成:

select rownum rn ,t.* from tt12 t where rownum<8 and rownum>3;

可以寫生如下語句:

select * from (select rownum rn ,t.* from tt12 t where rownum<8) where rn>4;

5.2.3排序

取資料的時候產生的序號,想對指定排序後的資料去指定rowmun行號時需要用子查詢

例如:

--建立表

create table testtime(

ttid varchar2(2),

tttime timestamp

);

--修改時間,插入多條測試記錄,

insert into testtime(ttid,tttime) values('1',to_Timestamp('2014-10-11 12:12:25.112233','YYYY-MM-DD HH24:MI:SS.FF'));

insert into testtime(ttid,tttime) values('2',to_Timestamp('2014-10-14 12:12:25.112233','YYYY-MM-DD HH24:MI:SS.FF'));

insert into testtime(ttid,tttime) values('3',to_Timestamp('2014-10-12 12:12:25.112233','YYYY-MM-DD HH24:MI:SS.FF'));

insert into testtime(ttid,tttime) values('4',to_Timestamp('2014-10-13 12:12:25.112233','YYYY-MM-DD HH24:MI:SS.FF'));

commit;

--按時間進行排序,但是rownum順序將是亂的

select rownum,t.* from testtime t order by tttime;

--按時間進行排序,採用子查詢後rownum順序和排序一致

select rownum,tt.* from (select t.tttime from testtime t order by tttime) tt;

6. SQL語言簡介

6.1資料定義語言

主要是create\alter\truncate\drop的使用

6.1.1建表示例

/*

\建立學生表

*/

CREATE TABLE student

(

stu_no CHAR(4) PRIMARY KEY NOT NULL, --學號,主鍵,非空

stu_name VARCHAR2(30) NOT NULL,--姓名,非空

stu_id VARCHAR2(18), --身份證號,代表18位整數

stu_age NUMBER(3,0) --年齡

);

--利用現有表建立新表,select 後邊有多少欄位,新表將有多少個欄位,主鍵不會被建立

CREATE TABLE stu_info AS SELECT stu_no,stu_age FROM student;

6.1.2改表示例

/*

\修改student表,新增stu_seat(座號)和stu_Address(住址) 兩個列

*/

ALTER TABLE student

ADD (stu_seat NUMERIC(2,0) ,

stu_address VARCHAR2(20));

/*

\修改student表的列的定義

*/

ALTER TABLE student

MODIFY (stu_name VARCHAR2 (50),

stu_address VARCHAR2(100)

);

/*

\刪除student表中stu_ address和stu_seat列

*/

ALTER TABLE student

DROP (stu_address,

stu_seat);

/*

\修改student表列名

*/

ALTER TABLE student RENAME COLUMN stu_no TO rempno;

6.1.3刪表示例

/*

\刪除student表結構及資料

*/

DROP TABLE student;

--只刪除表資料,每條刪除的記錄不寫日誌,省資源,效律比delete高

truncate table student;

6.2資料操縱語言

用於增刪改查資料,主要是insert/update/select/delete的使用。

6.2.1準備工作

建立學生表和新增測試資料:

/*

\建立學生表

*/

CREATE TABLE student

(

stu_no CHAR(4) PRIMARY KEY NOT NULL, --學號,主鍵,非空

stu_name VARCHAR2(30) NOT NULL,--姓名,非空

stu_id VARCHAR2(18), --身份證號,代表18位整數

stu_age NUMBER(3,0) --年齡

);

6.2.2新增資料

往student表插入資料

insert into student(stu_no,stu_name,stu_id,stu_age) values('a001','張大','441521199909092111',19);

insert into student(stu_no,stu_name,stu_id,stu_age) values('a002','張二','441521199909092112',19);

insert into student(stu_no,stu_name,stu_id,stu_age) values('a003','張三','441521199909092113',18);

insert into student(stu_no,stu_name,stu_id,stu_age) values('a004','張四','441521199909092114',18);

commit;

6.2.3修改資料

--修改學號為‘a002’學員的名字為‘李二’

update student set stu_name='李二' where stu_no='a002';

--所有學員的年齡都加1

update student set stu_age=stu_age+1 ;

6.2.3查詢資料

查詢(結果)無重複資料行,distinct關鍵字使用:

--查詢結果包括學員名字和年齡,如果存在學員名字和年齡都一樣的多條記錄將只返回一條

select distinct stu_name,stu_age from student;

別名、order by\group by\where\having\like\in\子查詢等使用略。

6.2.4刪除資料

--根據條件刪除表資料

delete from student where stu_no='a004'

--請空表,不寫日誌,省資源,效律高,屬於資料定義語言

truncate table student;

6.3事務控制語言

事務控制語句,主要由commit\rollback\savepoint savepoint_name\rollback to savepoint_name組成。以下為使用示例:

/*

\\事務控制語句應用舉例

*/

--DROP TABLE student;

--執行步驟一:建立student表

CREATE TABLE student

(

stu_no CHAR(4) PRIMARY KEY NOT NULL, --學號,主鍵,非空

stu_name VARCHAR2(30) NOT NULL,--姓名,非空

stu_id VARCHAR2(18), --身份證號,代表18位整數

stu_age NUMBER(3,0) --年齡

);

--執行步驟二:插入資料

insert into student(stu_no,stu_name,stu_id,stu_age) values('a001','張大','441521199909092111',19);

insert into student(stu_no,stu_name,stu_id,stu_age) values('a002','張二','441521199909092112',19);

insert into student(stu_no,stu_name,stu_id,stu_age) values('a003','張三','441521199909092113',18);

insert into student(stu_no,stu_name,stu_id,stu_age) values('a004','張四','441521199909092114',18);

--執行步驟三:操作student表

SAVEPOINT a;

insert into student(stu_no,stu_name,stu_id,stu_age) values('a005','張五','441521199909092115',18);

SAVEPOINT b;

insert into student(stu_no,stu_name,stu_id,stu_age) values('a006','張6','441521199909092116',18);

--執行步驟四:檢視student表,

SELECT * FROM student;

ROLLBACK TO SAVEPOINT b;

SELECT * FROM student;

insert into student(stu_no,stu_name,stu_id,stu_age) values('a007','張7','441521199909092117',18);

--執行步驟五:檢視student表,

SELECT * FROM student;

ROLLBACK TO SAVEPOINT a;

SELECT * FROM student;

--執行步驟六:回滾

ROLLBACK;

--執行步驟七:檢視student表

SELECT * FROM student;

6.4資料控制語言

-- 給戶user_itcast使用者授權,回收許可權

GRANT connect, resource TO user_itcast; --授予CONNECT和RESOURCE兩個角色(講解許可權)

REVOKE connect, resource FROM user_itcast; --撤銷CONNECT和RESOURCE兩個角色

GRANT SELECT ON SCOTT.emp TO user_itcast; --授予使用者user_itcast檢視 使用者SCOTT 模式下的EMP 表中的記錄許可權

REVOKE SELECT ON SCOTT.emp from user_itcast; --取消使用者user_itcast檢視 使用者SCOTT 模式下的EMP 表中的記錄許可權

GRANT UPDATE ON SCOTT.emp TO user_itcast; --授予使用者user_itcast更新 EMP 表中的記錄許可權

7.運算子

7.1算術運算子

+、-、*、/等略。

7.2比較(關係)運算子

=、!=、< 、 > 、 <= 、 >= 、 between...and... 、 in 、 like 、 is null。

is null使用注意:

insert into student(stu_no,stu_name,stu_id,stu_age) values('a008','張8',null,18);--stu_id值為null

insert into student(stu_no,stu_name,stu_id,stu_age) values('a009','張9','',18);--stu_id值為null

insert into student(stu_no,stu_name,stu_id,stu_age) values('a008','張8','null',18);--stu_id值不為null

insert into student(stu_no,stu_name,stu_id,stu_age) values('a009','張9',' ',18);--stu_id值不為null

7.3邏輯運算子

and 、 or 、 not。

7.4連線運算子

||

示例:SELECT stu_id stu_name FROM student;

7.5集合運算子

union(並集無重複)

union all(並集有重複)

intersect(交集,共有部分)

minus(減集,第一個查詢具有,第二個查詢不具有的資料)

使用注意:

列數相關,對應列的資料型別相容,不能含有Long型別的列,第一個select語句的列或別名作為結果標題

相關問題答案