oracle_基礎知識整理
用戶
一:系統用戶:
1:sys,system,sys的權限大于system
2:sysman
3:scott,默認密碼:tiger
使用自帶sql/plus登陸,格式:[username/psaaword] @服務名 as 角色[sysdba/sysoper]
二:用戶的切換
當在sql/plus中登錄之后,使用connect 用戶名/密碼 來切換用戶
三:查看當前用戶
show user,命令語句可以不添加分號,之后會顯示當前已登錄的用戶信息,除了這種方式,還可以使用數據庫自帶的數據字典來查看信息
*數據字典就是數據庫自帶的表,可以直接查看結構和數據
dba_users和user_users,查看系統用戶
scott用戶
默認情況下是被鎖定的,啟用用戶
alter user 用戶名 account unlock
表空間
表空間就是數據庫存放數據的邏輯區域
類型:
永久表空間:一般存放表,視圖等持久內容
臨時表空間:存放數據庫執行過程中的臨時操作
UNDO表空間:存放歷史數據,一般存放事物提交之前的歷史數據
數據字典
dba_tablespaces或者user_tablespaces
前者對應系統管理員級別用戶的表空間,后者對應一般用戶的表空間,查看用戶的默認表空間
需要在dba_users或者user_users表中查看
修改表空間
alter user 用戶名 default/temporary tablespaces 新的表空間名
創建表空間
永久表空間 create [TEMPORARY] tablespace 表空間名 datafile ‘文件名’ size XX
默認創建永久表空間,添加[TEMPORARY]選項,則會生成臨時表空間
示例:創建永久表空間create tablespace test_p1 datafile ‘test_p1.dbf’ size 10M
示例:創建臨時表空間create TEMPORARY tablespace test_t1 datafile ‘test_t1.dbf’ size 10M
查看永久表空間
數據字典dba_data_files,查看數據文件
查看臨時表空間
數據字典dba_temp_files,查看數據文件
修改表空間狀態
狀態:聯機/脫機,聯機是默認狀態,脫機狀態的表空間不可以使用
alter tablespace 表空間名 online/offline
可以通過dba_tablespaces或者user_tablespaces數據字典的status字段確認表空間狀態
狀態:只讀/讀寫,默認是可以讀寫,要修改可以該狀態,該表空間必須處于聯機狀態
alter tablespace 表空間名 read only/read write
修改數據文件
在表空間中添加/刪除數據文件
alter tablespace 表空間名 add/drop datafile ‘文件名’ [size XX]
刪除表空間
drop tablespace 表空間名,該選項只是刪除表空間,如果需要同時刪除表空間包含的文件,
那么需要在命令最后添加inculding contents
數據表
數據類型
1:字符型
char(n):固定長度,最長2000
nchar(n):固定長度,按照unicode編碼存放,最長1000,適用于存儲漢字
varchar2(2):變長字符類型,節省空間,最長4000
nvarchar2(2):變長字符類型,節省空間,支持unicode,最長2000
2:數據型
number(p,s):p代表有效數字,s代表小數位數
s可正可負
float(n):主要存儲二進制數字
3;日期類型
date:精確到秒,已經基本滿足日常使用
timestamp:精確到小數秒
4:其他
blob:存放4G數據,以二進制形式存儲
clob,存放4G數據,以字符串形式存儲
對表的基本操作
創建表
基本語法:
create table 表名
(
列名 數據類型,…
)
修改表
1:添加字段
語法
alter table 表名 add 字段名 數據類型
示例
alter table user add cellphone number(11,0)
2:修改字段類型(修改時表中不可以存放數據)
語法
alter table 表名 modify 字段名 數據類型
alter table user modify cellphone char(11)
3:刪除字段
語法
alter table 表名 drop column 字段名
4:修改字段名
語法
alter table 表名 rename column 舊字段名 to 新字段名
5:修改表名
語法
rename 舊表名 to 新表名
5:刪除表
刪除表數據(截斷一個表)
truncate table 表名
刪除表結構連同其數據
drop table 表名
操作表中的數據
1:新增記錄
insert into 表名(列名1,列名2,列名3…) values(值1,值2,值3…)
列名和值需要一一對應,如果不寫列名,那么代表為所有字段添加值
*sysdate關鍵字,代表當前日期
*插入字符串的時候,需要添加單引號
2:設定默認值
在創建表的時候,可以為指定字段設定默認的值
create table 表名
(
id number(6,0),
reg_date date default sysdate
)
3:修改默認值
alter table user modify cellphone default ”;
4:復制表
1):創建表時就復制,復制結構和數據
create table 新建表表名 as select 列1,列2…|* from 所要復制表的表名
2):在新增時添加來自其他表的內容
insert into 表名(列1,列2…) select 列1,列2…|* from 所要復制表的表名
和新增一條記錄類似,但是values關鍵字被替換成目標表的列,數據來源不是手動指定,而是來自其他表
5:修改表數據
update 表名 set 列1=值1,列2=值2… [where 條件…]
無條件更新,也就是全表更新
update user set username=’new_name’(更新的時候要注意,列和值的類型要匹配,全表更細是有風險的操作,謹慎操作)
有條件更新
update user set username=’other_name’ where id=123456
6:刪除表數據
delete from 表名 [where 條件…]
無條件刪除
delete from user(刪除全表數據,但是效率上不如truncate操作快)
條件刪除
delete from user where id=123456
約束
作用:來定義記錄中數據的規則,哪些字段必須輸入,字段的內容。以此來保持數據的完整性
1:非空約束
創建表時添加該約束
create table 表名
(
id number(6,0) NOT NULL,
…
)
*只能在列級設置,不能在表級設置,并且非空約束是沒有約束名稱
修改表的約束
alter table 表名 modify 列名 類型 NOT NULL,但是如果表中的數據存在違反非空約束的記錄,那么會修改失敗
去除非空約束
alter table 表名 modify 列名 類型 NULL
2:主鍵約束
主鍵約束:確保記錄在表中的唯一性,主鍵可以由一個或者多個字段組成,并且一個表中只能有一個主鍵約束
創建表時添加該約束,列級
create table 表名
(
id number(6,0) PRIMARY KEY,
…
);
創建表示添加該約束,表級
create table 表名
(
id number(6,0),
username varchar2(50),
…
constraint pk primary key(id,username)
);
*使用一個字段作為主鍵無需指定主鍵的名字,而多個主鍵需要指定主鍵的名稱
查看約束
用到了一個數據字典user_constraint
select constraint_name from user_constraint where table_name=’XXX’
在修改表時添加該約束
alter table 表名 add constraint 主鍵名 primary key(指定為主鍵的列)
修改約束名稱
alter table 表名 rename constraint 舊名字 to 新名字
3:外鍵約束
創建表的時候添加外鍵關聯,列級
create table 表名(從表)
(
id number(6,0) primary key,
username varchar2(50),
type_id varchar2(5) references 表名(主表)(主表字段,只能是主鍵)
)
或者,表級
create table 表名(從表)
(
id number(6,0) primary key,
username varchar2(50),
constraint 外鍵名 foreign key(從表外鍵列名) reference 主表名(主表列名)[ON DELETE CASCADE],可選項是級聯刪除,主表記錄刪除,從表相應記錄也會被刪除)
*外鍵只能來自主表的主鍵(或者是null),并且類型必須一致
在修改時添加外鍵約束
alter table user add constraint fk_id foreign key(id) references user_info(id)[ON DELETE CASCADE]
4:唯一約束
作用:保證字段值的唯一性
和主鍵的區別:允許空值,允許有多個
創建表的時候添加唯一約束,列級
create table 表名(從表)
(
id number(6,0) primary key,
username varchar2(50),
type_id varchar2(5) UNIQUE
)
或者,表級
create table 表名
(
id number(6,0) primary key,
username varchar2(50),
constraint 唯一約束名 unique(列名);
)
*每個唯一約束都有自己的名字,不可以聯合多個字段設置唯一約束
在修改表時添加唯一約束
alter table 表名 add constraint 約束名 unique(id )
5:檢查約束
作用:限制數據的錄入,同一個表中可以存在多個
create table 表名,列級
(
id number(6,0) primary key,
username varchar2(50),
age number(3,0) check(age >0)
)
或者,表級
create table 表名
(
id number(6,0) primary key,
username varchar2(50),
age number(3,0),
constraint 檢查約束名 check(age >0);
)
在修改表時添加檢查約束
alter table 表名 add constraint 約束名 check(salary>0)
6:禁用/啟用和刪除約束的方法
啟用/禁用約束
alter table 表名 disable|enable constraint 約束名
7:刪除約束
1:
alter table 表名 drop constraint 約束名
2:
alter table 表名 drop primary key[cascade] 約束名,添加可選項,連同外鍵的級聯刪除
posted on 2015-07-28 11:04 都較瘦 閱讀(157) 評論(0) 編輯 收藏 所屬分類: Oracle相關問題積累