oracle數據庫基礎知識

20世紀約70年代 一間名爲Ampex的軟件公司,正爲中央情報局設計一套名叫Oracle的數據庫,埃裏森是程序員之一。下面是小編整理的關於oracle數據庫基礎知識,歡迎大家參考!

oracle數據庫基礎知識

【1】oracle數據庫基礎知識

第一篇 基本操作

--解鎖用戶 alter user 用戶 account unlock;

--鎖定用戶 alter user 用戶 account lock;

alter user scott account unlock;

--創建一個用戶yc 密碼爲a create user 用戶名 identified by 密碼;

create user yc identified by a;

--登錄不成功,會缺少create session 權限,賦予權限的語法 grant 權限名 to 用戶;

grant create session to yc;

--修改密碼 alter user 用戶名 identified by 新密碼;

alter user yc identified by b;

--刪除用戶

drop user yc ;

--查詢表空間

select *from dba_tablespaces;

--查詢用戶信息

select *from dba_users;

--創建表空間

create tablespace ycspace

datafile 'E:oracleappproduct11.2.0dbhome_1oradata'

size 2m

autoextend on next 2m maxsize 5m

offline ;

--創建臨時表空間

create temporary yctempspace

tempfile 'E:oracleappproduct11.2.0dbhome_1oradata'

size 2m

autoextend on next 2m maxsize 5m

offline ;

--查詢數據文件

select *from dba_data_files;

--修改表空間

--1、修改表空間的狀態

--默認情況下是online,只有在非離線情況下才可以進行修改

alter tablespace ycspace offline ; --離線狀態,不允許任何對象對該表空間的使用,使用情況:應用需要更新或維護的時候;數據庫備份的時候

alter tablespace ycspace read write;--讀寫狀態

alter tablespace ycspace online;

alter tablespace ycspace read only; --只讀,可以查詢信息,可以刪除表空間的對象,但是不能創建對象和修改對象 。使用情況:數據存檔的時候

--2、修改表空間的大小

--增加文件的大小

alter database datafile 'E:oracleappproduct11.2.0dbhome_1oradata' resize 10m;

--增加數據文件

alter tablespace ycspace add datafile 'E:oracleappproduct11.2.0dbhome_1oradata' size 2m;

--刪除表空間的數據文件

alter tablespace 表空間的名字 drop datafile 數據文件名;

--刪除表空間

drop tablespace ycspace;

--刪除表空間且表空間中的內容和數據文件

drop tablespace ycspace including contents and datafiles;

--指定表空間 的 創建用戶的語法

create user yc1 identified by a default tablespace ycspace temporary tablespace temp;

--刪除用戶

drop user yc1;

--權限

--賦予創建會話的權限

grant create session to yc1;

--創建一個表

create table studentInfo(

sid int,

sname varchar2(10)

);

--賦予yc1用戶創建表的權限

grant create table to yc1;

--賦予yc1使用表空間的權限

grant unlimited tablespace to yc1;

--系統權限

--對象權限

--插入

insert into studentInfo values (2,'abcd');

--查詢

select *from studentInfo;

--修改

update studentInfo set sid=1;

--刪除

delete studentInfo ;

drop table studentInfo; --系統權限刪除表

--賦權的語法

--系統權限

grant 權限名(系統權限或對象權限,角色,all) to 用戶(角色,public) with admin option;

--對象權限

grant 權限名(系統權限或對象權限,角色,all) on 用戶(角色,public) with grant option;

--收權語法

--系統權限

revoke 權限名(系統權限或對象權限,角色,all) from 用戶(角色,public) with admin option;

--對象權限

revoke 權限名(系統權限或對象權限,角色,all) from 用戶(角色,public) with grant option;

--賦予創建用戶的權限並且把這個權限傳遞下去,即yc1可以給別人賦權

grant create user to yc1 with admin option;

--收回權限,只能收回scottd ,不能收回由scott賦權的yc1的權限

revoke create user from scott;

--查看用戶所具有的權限

select *from user_sys_privs;

--對象權限詳解

select * from emp;

--使用yc1來查詢scott裏面的emp表

select * from ;

--賦予yc1查詢emp表和插入的權限

grant select on emp to yc1;

grant insert on emp to yc1;

grant update(empno,ename) on emp to yc1;

grant delete on emp to yc1;

--對scott的emp表添加數據

insert into (empno,ename) value(111,'acv');

update set ename='yc'where empno=111;

--賦予查詢、賦予刪除、添加、修改

grant select on 表名 to 用戶

--grant select,delete,update,insert on 表名 to 用戶

grant select,delete,update,insert on emp to yc1;

grant all on dept to yc1; --all代表所有的對象權限

select *from ;

select *from ;

insert into values(50,'企事業文化部','bumen');

--查看角色

--dba:數據庫管理員,系統最高權限,可以創建數據結構(表空間等)

--resource:可以創建實體(表、視圖),不可以創建數據庫的結構

--connect:連接的權限,可以登錄數據庫,但是不可以創建實體和不可以創建數據庫結構

select *from role_sys_privs;

grant connect to yc1;

--將可以連接的角色賦予給yc1,則yc1就是應該可以連接數據庫的.人,類似於 create session 。

create table StuInfos(sid int);

select *from StuInfos;

create table stuInfo(

sid int primary key , --主鍵 primary key 非空且唯一 (主鍵約束)

sname varchar2(10) not null, --姓名不能爲空,(非空約束)

sex char(2) check(sex in('男','女')), --(檢查約束),check,

age number(3,1) constraint ck_stuInfo_age check(age>10 and age<100) , --也可以用varchar ;age between 10 and 100 ,在10和100之間,是一個閉區間

tel number(15) unique not null, --唯一約束,

address varchar2(200) default '什麼鬼'

)

insert into stuInfo values(3,'大大','男',18,4321543,default);

insert into stuInfo values(1,'張三','男',10);

select *from stuInfo;

drop table stuInfo;

create table classInfo(

cid int primary key, --班級id

cname varchar2(20) not null unique --班級名

)

create table stuInfo(

sid int primary key,

sname varchar2(20),

cid int constraint fofk_stuInfo_cid references classInfo(cid) on delete cascade

)

insert into classInfo values(1,'1班');

insert into classInfo values(2,'2班');

insert into classInfo values(3,'3班');

insert into classInfo values(4,'4班');

select *from classInfo;

select *from stuInfo;

insert into stuInfo values(1001,'張三',2);

insert into stuInfo values(1002,'張四',4);

update classInfo set cid=1 where cid=8;

drop table stuInfo;--要先刪除這個

drop table classInfo; --再刪除這個

delete classInfo where cid=4 ;--同時刪除這兩個表中的4

--刪除用戶的時候

drop user yc1 [cascade] --刪除用戶的同時把它創建的對象都一起刪除

--修改表

--1、添加表中字段

--alter table 表名 add 字段名 類型

alter table classInfo add status varchar2(10) default '未畢業'

--2、修改已有字段的數據類型

--alter table 表名 modify 字段名 類型

alter table classInfo modify status number(1)

--3、修改字段名

--alter table 表名 rename column 舊字段名 to 新的字段名

alter table classInfo rename column cname to 班級名;

--4、刪除字段

--alter table 表名 drop column 字段名

alter table classInfo drop column status ;

--5、修改表名

--rename 舊錶名 to 新表名

rename classInfo to 班級信息;

--刪除表

--1、截斷表效率高,每刪除一次會產生一次日誌 2、截斷會釋放空間,而delete不會釋放空間

--刪除表結構和數據

drop table 表名;

--刪除表中所有數據

truncate table classInfo;

delete classInfo;

create table classInfo(

cid int primary key, --班級id

cname varchar2(20) not null unique , --班級名

stasuts varchar2(100)

);

select *from classInfo;

--數據的操作

--增加數據語法

--insert into 表名[(列名,....)] values (對應的數據的值);

insert into classInfo values(1,'一班','未畢業');--需要按照表結構的順序插入

insert into classInfo values(4,'六班','未畢業');

insert into classInfo(cname,cid) values('二班',2); --需要按照括號中的順序插入,但是 not null primary key 必須插入的。

insert into classInfo(cname,cid) values('三班',3);

--刪除的語法

--delete 表名 [where 條件]

delete classInfo where cid>=2;

--修改記錄的語法

--update 表名 set [字段='值' ] [where 條件]

update classInfo set cname='三班'; --會修改所有該字段

update classInfo set cname='四班' where cid=1;

update classInfo set cname='五班', stasuts ='未畢業' where cid=3;

--alter table classInfo drop constraint SYS_C0011213;

--添加多個時可以使用序列

--用序列來做自動增長

create sequence seq_classInfo_cid start with 1001 increment by 1;

insert into classInfo values(seq_classInfo_val,'七班','未畢業');

insert into classInfo values(seq_classInfo_val,'八班','未畢業');

insert into classInfo values(seq_classInfo_val,'九班','未畢業');

insert into classInfo values(seq_classInfo_val,'十班','未畢業');

create table classInfo2(

cid int primary key, --班級id

cname varchar2(20) not null unique , --班級名

stasuts varchar2(100)

);

select *from classInfo2;

drop table classInfo2;

insert into classInfo2 select *from classInfo;

insert into classInfo(cname,cid) select cname,cid from classInfo;

alter table classInfo2 drop constraint SYS_C0011213;

select seq_classInfo_val from dual;

select seq_classInfo_val from dual;

--直接創建一個新表,並拿到另一個表其中的數據

create table newTable as select cname,cid from classInfo;

create table newTable1 as select *from classInfo;

select *from newTable;

select *from newTable1;

insert into newTable1 values(1008,'dg','');

第二篇:高級操作

直接在使用scott登陸,進行查詢操作

----------------------------------------------------------------------------------

--簡單查詢

select *from emp;

select empno as id,ename as name from emp;

select empno 編號,ename 姓名 from emp;

--去除重複

select job from emp;

select distinct job from emp;

select job,deptno from emp;

select distinct job,deptno from emp;

--字符串的連接

select '員工編號是' ||empno || '姓名是' ||ename ||'工作是'||job from emp;