oracle2

表空間是數據庫最大的邏輯單元,一個Oralce數據庫至少包含一個表空間,就是名爲SYSTEM的系統表空間。
每個表空間是由一個或多個數據文件組成的,一個數據文件只能與一個表空間相關聯。
從物理上來說:表空間是一些數據文件,用來存放數據庫數據。
從邏輯上來說:表空間是將多個數據庫對象有規律的組織起來,便於用戶管理。
爲什麼需要表空間?
1、數據庫對象非常多時,便於用戶管理。
2、數據量非常大時,便於將數據分佈在不同的磁盤中,減少磁盤讀寫的開銷。

系統表空間
安裝Oracle數據庫時,系統默認創建的表空間。
System:主要存放管理員創建的對象
Users:主要存放一般用戶創建的對象
Temp:臨時表空間,主要用於排序操作

默認表空間
創建用戶時,可以爲該用戶指定默認表空間,也就是該用戶今後創建的表等數據庫對象時,都會存放在該默認表空間中。
創建用戶時,如果不指定默認表空間,則默認爲Users表空間。
爲用戶指定默認表空間語法:
create user  用戶名 identified by 密碼
default tablespace 表空間名;

創建表空間語法
create tablespace test                    --表空間名稱
datafile ‘D:/oradata/orcl/test.dbf’   --表空間對應的數據文件
size 32m                                           --初始大小
autoextend on                                 --自動增長打開
next 32m maxsize 2048m;              --每次增長32,最大到2G
刪除表空間語法
drop tablespace test
[including contents and datafiles];

[…]可選項,有則表示刪除表空間的內容和對應的數據文件

字符數據類型
char:固定長度字符串,最大可以存放 2000字節
varchar2:可變長度字符串,最大可以存放4000字節
long:可變長度字符串,最大可以存放2GB
數值數據類型number
可以存放整數,浮點數,實數
NUMBER [( p[, s])]
P表示精度(一共有幾位)
S表示小數位數
日期時間類型
Date:精確到整數秒,05/20/2010 16:55:14
Timestamp:秒值精確到小數點後6位, 05/20/2010 16:55:14 .000000


RAW數據類型
用於存放二進制數據,最多存放2000字節
Long RAW數據類型
用於存放可變長度二進制數據,最多存放2GB
LOB大對象數據類型,最多存放4GB
Clob字符型大對象
Blob二進制數據大對象,可以存放圖片/聲音

創建表 create
create table student(
 sid number(4), --學號
 sname varchar2(20), --姓名
 sex char(2),   --性別
 birthday date, --生日
 sal number(7,2) --獎學金
);

演示創建主鍵、非空、默認、檢查、外鍵等約束。

複製表
 CREATE TABLE <table_name>
 as <SELECT 語句>(需注意的是複製表不能複製表的約束);

示例:create table emptest
 as select * from emp;如果只複製表的結構不復製表的數據則:
 create table emptest
 as select * from emp where 1=2;

修改表 alter
增加一列:alter table 表名 add (列名 類型);
修改字段的長度:alter table 表名 modify (列名 類型);
刪除一列:alter table 表名 drop colnum 列名;
修改表的名字:rename 表名 to 表名;
查看錶結構:desc 表名;


增加數據
單行插入
Insert into 表名 (column1,column2,...)
values ( value1,value2, ...);
注意:日期格式爲‘DD-MON-YY’,如’20-5月-10’

多行插入
把一個表中的數據插入另一個表中
insert  into 表名 <SELECT 語句>;

刪除數據
delete from 表名 where 條件;
truncate table 表名;
前者刪除數據可以恢復,而後者不能恢復,但truncate 效率更好。
演示用rollback恢復數據。

修改數據
    UPDATE 表名 set 列名1=值1,列名2=值2...WHERE <條件>

事務是最小的工作單元,作爲一個整體進行工作
保證事務的整體成功或失敗,稱爲事務控制
用於事務控制的語句有:
COMMIT;--提交
ROLLBACK [TO savepoint];--回滾
SAVEPOINT <savepoint>; --設置保存點位置

SQL:結構化查詢語言
SQL支持下列類別的命令:
數據定義語言(DDL)
用於改變數據庫結構,包括創建、更改和刪除數據庫對象
Create/alter/drop
數據操縱語言(DML)
用於檢索、插入和修改數據
Insert/delete/update/select
事務控制語言(TCL)
Commit/rollback/savepoint
數據控制語言(DCL)
爲用戶提供權限控制命令
Grant/revoke

 

--具有dba角色的管理員操作
--建表空間
create tablespace stuSpace
datafile 'D:/stuSpace.dbf'
size 10M   --初始大小
autoextend on  --自增張
next 2M maxsize 1024M;  --最大大小
--建用戶
create user stu identified by stu
default tablespace stuSpace;--給用戶指定默認表空間
--授予權限
grant connect to stu;
grant resource to stu;
grant dba to stu;

--建表
create table stuInfo
(
   stuID number(4),
   stuName varchar2(20),
   stuSex char(2),
   stuBirth date,
   stuSal number(4,2)
);
select * from stuInfo;
--添加約束
--1非空約束
alter table stuInfo
modify stuID not null;
alter table stuInfo
modify stuName not null;
--2默認值
alter table stuInfo
modify stuSex default '男';
--3主鍵 PK_列名
alter table stuInfo
add constraint PK_stuID primary key(stuID);
--4檢查約束 CK_列名
alter table stuInfo
add constraint CK_stuSex check(stuSex='男' or stuSex='女');
--5外鍵 FK_列名
create table Scores
(
   sid number,
   Score number,
   stuID number--stuInfo.stuID
);
--主表:被用,主鍵
--從表:使用,外鍵
alter table Scores
add constraint FK_stuID foreign key(stuID)
references stuInfo(stuID);

--測試
insert into stuInfo values(1,'張三',default,'4-6月-10',88.88);
insert into stuInfo values(2,'張三',default,'4-6月-10',88.88);
insert into stuInfo values(3,'張三',default,'4-6月-10',88.88);
--Oracle默認的日期格式爲:DD-Mon-YY

update stuInfo set stuName='李四',stuSex='女',stuSal=stuSal+10
where stuID=2;

--提交事務
commit;

insert into Scores values(1,80,1);

--事務保存點
savepoint p1;
delete from scores;

savepoint p2;
delete from stuInfo;

--回滾事務,提交之後不能回滾
rollback;
rollback to p2;--回滾保存點之後的操作

SELECT * from stuInfo;
select * from scores;

truncate table scores;--不能刪除有引用關係的表

--複製表(不復制約束)
create table stuBack
as
select * from stuInfo;

create table stuBack1
as
select * from stuInfo where 1=2;  //只複製表的結構

select * from stuBack1;

--多行插入
insert into stuBack1
select * from stuInfo;

--修改表結構一列
1.添加
alter table stuInfo
add(stuAge number);


2,刪除
alter table stuInfo
drop column stuAge;


3刪除表約束
alter table stuInfo
drop constraint 約束名;

 

 

 

 

發佈了14 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章