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