主要內容:用戶與表空間;表與約束;查詢語句。
Oracle安裝:訪問官網,下載
在安裝Oracle時在開始菜單裡可以用sql puls登錄oracle。
★1、系統用戶
在sys,system,sysman,scott四個用戶權限中,scott用戶最低。
在安裝Oracle時,前三個用戶的密碼是由你自己設置的,在設置時一般設置的是統一的密碼。
★2、用戶登錄
登錄方式:(sql語句中不區分大小寫)
方法一:[username/password] [@server] [as sysdba|sysoper]
方法二:connnect username/password @server as sysdba|sysoper
例如:使用system用戶登錄
system/root @orcl sa sysdba
orcl就是自己設置的服務名(注意:如果數據庫和服務器不在同一個機器上,就需要輸入服務名或者IP地址)
★3、查看登錄用戶
★4、啟用Scott用戶 (oracle默認用戶,鎖定的)
★5、表空間概述
表空間是數據庫的邏輯處理空間;可以把表空間理解為在數據庫中開辟的一個空間用於存放數據庫的對象;一個數據庫可以有多個表空間構成;並且oracle的很多優化是基於表空間實現的。
表空間是由一個和多個數據文件構成的;(數據文件的位置和大小可以由用戶自己來定義)
我們需要知道我們存儲的表、數據庫、數據庫當中的一些其他的對象都是存放在表空間的數據文件裡面的。
表空間分為 永久表空間、 臨時表空間、 undo表空間。
★6、查看用戶的表空間
在Oracle數據庫當中,使用不同用戶登錄之後,他們所使用的表空間可以有所不同。
用 “desc 數據字典名;” 命令可以查看表空間數據字典的信息。
如:
decs dba_tablespaces(查看dba_tablespaces表有哪些字段)
select tablespace_name from dab_tablespaces;(查看有哪些表空間)
系統用戶可以查看系統和普通用戶的表空間數據字典信息(向下兼容),普通用戶只能查看自己的。
default(默認),temporary(臨時),默認下,每個用戶只有一個臨時表空間。
★7、創建表空間
數據文件名可以包含路徑,若是沒有包含路徑,則在默認路徑(Oracle安裝目錄)下創建!
例子:
①創建永久表空間:
create tablespace test1_tablespace
datefile 'test1file.dbf' size 10m;
②創建臨時表空間:
create temporary tablespace temptest1_tablespace
tempfile 'temptest1file.dbf' size 10m;
創建好永久表空間或者臨時表空間後,如何進行查看表空間中文件的具體路徑?如果我們不知道默認路徑怎麼辦?
在永久表空間中,通過“desc dba_data_files”查看這個數據字典中包含的字段;然後查看我們創建的表空間裡它的文件名字“select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACAE';”(注意:表空間的名稱要大寫)
在臨時表空間,查看我們創建的臨時表空間裡它的文件名字“select file_name from dba_temp_files where tablespace_name='TEMPTEST1_TABLESPACAE';”
★8、修改表空間
主要是修改表空間的狀態和修改數據文件
修改表空間狀態:(在我們創建完表空間後,默認是聯機、可讀寫狀態)
注意:默認情況下,當表空間的狀態為"online"時,其是具有讀寫屬性的(read write);對於"offline"狀態的表空間,無法修改其讀寫屬性;(默認的聯機情況下就是可讀寫狀態)
查看表空間的狀態:①查看數據字典:desc dba_tablespace;
②查看表空間的狀態:select status from dba_tablespaces where tablespace_name=‘TESC_TABLESPACE’;
★9、修改數據文件
增加數據文件和刪除數據文件
增加數據文件:ALTER TABLESPACE tablespace_name ADD DATAFILE 'xx.dbf' SIZE xx;
即:alter tablespace 表空間名 add datafile '數據文件名.dbf' size 數據文件大小;
刪除數據文件:ALTER TABLESPACE tablespace_name DROP DATAFILE 'xx.dbf';
即:alter tablespace 表空間名 drop datafile '數據文件名.dbf';
(注:我們刪除表空間時,表空間的第一個數據文件是不可以刪除的,除非將整個表空間刪除!)
例如:增加數據文件
刪除數據文件
★10、刪除表空間
刪除表空間:
drop tablespace 表空間名 [including contents];
注意:如果只是刪除表空間,而不刪除其中的數據文件,可以省略including contents 字句;
drop tablespace tablespace_name [including contents]
(不加‘[including contents]’為只刪除表空間;)
例子:
drop tablespace test1_tablespace including contents;(刪除表空間及表空間下的數據文件)
❤ 1、認識表
❤2、數據類型
字符型:
- nchar2用於存儲Unicode格式的數據,更適合存儲中文數據
- char(n): MAX:2000
- nchar(n):MAX:1000 存儲漢字
假設n=10(輸入三個字符,不足則補充七個空格)如果n很大,輸入的的數據位數比較小,就會浪費很多空間
- nvarchar2用於存儲Unicode格式的數據,更適合存儲中文數據
- varchar(n): MAX:4000
- nvarchar(n):MAX:2000
假設n=10(輸入三個字符,不需要補足),因此相對char類型,varchar類型節省很多空間
數值型:
- P:有效數字 -s:小數點後的位數
例子:NUMBER(5,2) ---- 有效數字5位,保留2位小數,如123.45
- 如果將二進制數轉換為十進制數,需要乘以0.30103得到。因此在Oracle中使用數值型數據時候,我們都使用Number類型
日期型:
一般情況下,日期類型都是會使用Date類型。
其他類型:(存放大數據對象)
❤3、管理表
創建表、修改表、刪除表
創建表:
1)基本語法:
create table table_name (column_name datatype,...)
注意:同一用戶下(登陸數據庫的用戶)表名要唯一
2)練習:創建用戶信息表
所需字段 --- 字段類型
編號 -- 用戶名 -- 密碼 -- 郵箱 -- 注冊時間
create table userinfo(id number(6,0),username carchar2(20),userpwd varchar2(20),email varchar2(30),regdate date);
查看表中的字段:
修改表:(修改表的結構,不是修改表的數據)
1)添加字段:
alter table table_name add column_name datatype;
例如:alter table userinfo add remarks varchar2(500);
2)更改字段數據類型:
alter table table_name modify column_name datatype;
例如:
alter table userinfo modify remarks varchar2(400);
alter table userinfo modify userpwd number(6,0);
3)刪除字段:
alter table table_name drop column column_name;
例如:alter table userinfo drop column remarks;
4)修改字段名:
alter table table_name rename column column_name to new_column_name;
例如:alter table userinfo rename column email to new_email;
5)修改表名:
rename table_name to new_table_name;
例如:rename userinfo to new_userinfo;
刪除表:
1)刪除表中的全部數據:(截斷表:清空表)truncate 比delete要快很多
truncate table table_name;
2)刪除表
drop table table_name;
添加、修改、刪除數據
❤1、添加數據
1)insert語句:insert into table_name (column1,column2,...) values (value1,value2,...)
添加數據時,值的個數、類型和順序必須和字段的個數、類型和順序相同。
如果向表中的所有字段添加值,則表名後面的(column1,column2,...)內容可省略。
2)操作實例:(字符串要加單引號)
a. 向表中所有字段添加值:insert into userinfo values (1,'xxx','[email protected]',sysdate);
b. 向表中指定字段添加值:insert into userinfo (id,username,userpwd) values (2,'yy','123');
c. 向表中添加默認值:
- 在創建表的時候添加默認值:CREATE TABLE table_name(column_name datatype DEFAULT def_value,...);
- 修改字段時添加:ALTER TABLE table_name MODIFY column_name datatype DEFAULT def_value;
- 插入表時添加默認值:insert into 表名(默認字段名) values(1);
create table userinfo1 (id number(6,0),regdate date default sysdate);
例如: insert into userinfo1 values(id) valuses(1);
sysdate 用於獲取當前系統的時間
❤2、復制表數據
1)在建表時復制:
create table table_new as select column,...|* from table_old;
例子:
create table userinfo_new as select * from userinfo;(復制userinfo表中的全部數據)
復制一張表:create table 新表名 as select * from 舊表名; * 表示復制所有字段
復制一張表中的某幾個字段:create table 新表名 as select 字段1,字段2 from 舊表名;
2)在添加時復制:
insert into table_new [(column1,...)] select column1,...|* from table_old;
例子:
insert into userinfo_new select * from userinfo;
insert into userinfo_new(id,username) select id,username from userinfo;
向表中再次加入另一表中的數據:insert into 表1 select * from 表2;
在向表中插入數據時,來指定插入某些字段:insert into 表1(字段1,字段2) select 字段1,字段2 from 表2;
❤3、修改數據
修改表數據基本語法:
UPDATE table_name SET column1=value1,... [WHERE conditions];
(不指定條件,則為整個字段均修改)
無條件更新:
update table_name set column1=values1,.....;更新的字段的所有行全部變成相應值
有條件更新:
update table_name set column1=values1,..... where conditions; 更新的字段的指定行變值
❤4、刪除數據
delete語句
刪除表數據基本語法:DELETE FROM table_name [WHERE conditions];
無條件刪除:delete from 表名;
有條件刪除:delete from 表名 where 條件;
truncate語句
刪除表數據基本語法:TRUNCATE TABLE table_name
1.truncate和 delete只刪除數據不刪除表的結構(定義)
drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴於該表的存儲過程/函數將保留,但是變為invalid狀態。
2.delete語句是dml,這個操作會放到rollback segement中,事務提交之後才生效;如果有相應的trigger,執行的時候將被觸發
truncate,drop是ddl, 操作立即生效,原數據不放到rollback segment中,不能回滾. 操作不觸發trigger。
3.delete語句不影響表所占用的extent, 高水線(high watermark)保持原位置不動
顯然drop語句將表所占用的空間全部釋放
truncate 語句缺省情況下見空間釋放到 minextents個 extent,除非使用reuse storage; truncate會將高水線復位(回到最開始)。
4.速度,一般來說: drop> truncate > delete。
5.安全性:小心使用drop 和truncate,尤其沒有備份的時候.否則哭都來不及。
6.使用上,想刪除部分數據行用delete,注意帶上where子句. 回滾段要足夠大. 想刪除表,當然用drop
想保留表而將所有數據刪除. 如果和事務無關,用truncate即可. 如果和事務有關,或者想觸發trigger,還是用delete
如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據。7.DELETE FROM table_name;與TRUNCATE TABLE table_name;區別:
兩者都是用來刪除表中的全部數據,但是TRUNCATE 的速度要比DELETE 快,因TRUNCATE 屬於數據定義語言中的,所以效率較高。