1.登陸系統使用者
sqlplus 然後輸入系統使用者名稱和密碼
登陸別的使用者
conn 使用者名稱/密碼;
2.建立資料表空間
create tablespace 空間名
datafile 'c:"空間名' size 15M --資料表空間的存放路徑,初始值為15M
autoExtend on next 10M --空間的自動成長的值是10M
permanent online; --永久使用
3.建立使用者
create user shi --建立使用者名稱為shi
identified by scj --建立密碼為scj
default tablespace 資料表空間名 --預設資料表空間名
temporary tablespace temp --暫存資料表空間為temp
profile default --受profile檔案的限制
quota unlimited on 資料表空間名; --在資料表空間下面建表不受限制
4.建立角色
create role 角色名稱 identified by 密碼;
5.給角色授權
grant create session to 角色名稱;--給角色授予建立會話的許可權
grant 角色名稱 to 使用者名稱; --把角色授予使用者
6.給使用者授予許可權
grant create session,resource to shi;--給shi使用者授予所有許可權
grant create table to shi; --給shi使用者授予建立表的許可權
7.select table_name from user_tables; 察看目前使用者下的所有表
8.select tablespace_name from user_tablespaces; 察看目前使用者下的 資料表空間
9.select username from dba_users;察看所有使用者名稱稱命令 必須用sys as sysdba登陸
10.建立表
create table 表名
(
id int not null,
name varchar2(20) not null
)tablespace 資料表空間名 --所屬的資料表空間
storage
(
initial 64K --表的初始值
minextents 1 --最小擴充值
maxextents unlimited --最大擴充值
);
11.--為usrs表添加主鍵和索引
alter table users
add constraint pk primary key (ID);
12.為已經建立users表添加外鍵
alter table users
add constraint fk_roleid foreign key (roleid)
references role(role_id) on delete cascad; --下邊寫主表的列
on delete cascad是建立級聯
13.把兩個列串連起來
select concat(name,id) from 表名; --把name和id串連起來
14.截取字串
select column(name,'李') from 表名; --把name中的‘李’去掉
15.運行事務之前必須寫
set serveroutput on; --開啟輸入輸出(不寫的話,列印不出資訊)
16.while的應用
declare --聲明部分
ccc number:=1; --複職
a number:=0;
begin --事務的開始
while ccc<=100 loop --迴圈
if((ccc mod 3)=0) then --條件
dbms_output.put_line(ccc||','); --列印顯示
a:=a+ccc;
end if; --結束if
ccc:=ccc+1;
end loop; --結束迴圈
dbms_output.put_line(a);
end; --結束事務
/
17.select into 的用法 --只能處理一行結果集
declare
name varchar(30);
begin
select username into name
from users
where id=2;
dbms_output.put_line('姓名為:'||name);
end;
/
18.利用%rowtype屬性可以在運行時方便的聲明記錄變數和其他結構
Set serveroutput on;
Declare
utype users%rowtype;
Begin
Select * into utype from users where id=20;
Dbms_output.put_line('姓名'|| utype.username);
Dbms_output.put_line('生日'|| utype.brithday);
end;
/ --%rowtype想當於複製一個表
19.遊標的定義和使用
Declare
Cursor ucur is select * from users; --聲明遊標
Us users%rowtype;--定義與遊標想匹配的變數
Begin
Open ucur;--開啟遊標
Fetch ucur into us;
While ucur %found loop --使用迴圈遍曆遊標的查詢結果
Dbms_output.put_line('姓名:'||us.username||'生日'||us.brithday);
Fetch ucur into us;
End loop;
Close ucur; --關閉遊標
End;
=======================================
%found在前一條的fetch語句至少對應資料庫的一行時,%found屬性值為true,否則為false;
% notfound 在前一條fetch語句沒有對應的資料庫行時,%notfound屬性值為true,否則為false;
%isopen 在遊標開啟時%isopen屬性值為true;否則為false;
%rowcount顯示迄今為止從顯示遊標中取出的行數
20.
刪除
drop tablespace 空間名 including contents; --刪除資料表空間和裡面的內容
drop table 表名 --刪除表
drop user 使用者名稱 --刪除使用者
-------------------------------------
使用Oracle使用者
# su - oracle
建立資料表空間 -> 建立新使用者 -> 使用者授權
一 建立資料表空間
SQL> CREATE TABLESPACE test01
DATAFILE '/data/oracle/oradata/db/test01.dbf' SIZE 1024M UNIFORM SIZE 128k;
1) DATAFILE: 資料表空間資料檔案存放路徑
2) SIZE: 起初設定為1G就可以
3) UNIFORM: 指定區尺寸為128k,如不指定,區尺寸預設為64k
4) 空間名稱 test01 與 資料檔案名稱 test01.dbf 不要求相同,可隨意命名.
通過ALTER DATABASE修改空間擴充大小
SQL > ALTER DATABASE DATAFILE '/data/oracle/oradata/db/test01.dbf' ' AUTOEXTEND ON;
1)AUTOEXTEND ON:在Oracle10g中,需要手動開機磁碟分割自動擴充功能.
二 建立新使用者
SQL> CREATE USER test IDENTIFIED BY 123456 DEFAULT TABLESPACE test01;
1) 建立使用者同時分配資料表空間
三 使用者授權
1)使用者角色授權
SQL> CRANT CONNECT,RESOURCE TO test;
a) 我這裡將CONNECT和RESOURCE角色賦給新使用者test,test將擁有這兩個角色的操作許可權.
2)直接授權
多使用者
SQL> CRANT SELECT,INSERT,UPDATE,DELETE,ON USERS TO test,test1;
下面我們可以使用兩種方式登入Oracle db
一 SQLPLUS
1)本地登入
SQL> sqlplus test/123456
2)遠程登入
假設db在另一台伺服器
SQL> sqlplus test/123456@db
二 PLSQL Developer
上篇中也有講述,輸入帳號口令就可以了.
下面說些和上面相關,且工作中會需要用到的.
一 刪除使用者
SQL> DROP USER test CASCADE;
二 刪除資料表空間
SQL> DROP TABLESPACE test01 INCLUDING CONTENTS AND DATAFILES;
1) 刪除資料表空間內容和資料檔案.
2) 一般無效資料表空間佔用磁碟空間,所以這個應該很常用.
查看使用者角色許可權
select * from user_role_privs;
查看使用者表許可權
select * from user_tab_privs;
-------
/* Formatted on 2001/12/03 09:00 (Formatter Plus v4.5.2) */
CREATE TABLESPACE sini_data DATAFILE
'D:\oracle\oradata\sini_data.dbf' SIZE 500m
AUTOEXTEND ON NEXT 1m MAXSIZE UNLIMITED
DEFAULT STORAGE
(
INITIAL 128k
NEXT 1m
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
);
/
CREATE TABLESPACE sini_index DATAFILE
'D:\oracle\oradata\sini_index.dbf' SIZE 200m
AUTOEXTEND ON NEXT 1m MAXSIZE UNLIMITED
DEFAULT STORAGE
(
INITIAL 128k
NEXT 1m
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
);
/
CREATE TABLESPACE sini_temp DATAFILE
'D:\oracle\oradata\sini_temp.dbf' SIZE 200m
AUTOEXTEND ON NEXT 1m MAXSIZE UNLIMITED
DEFAULT STORAGE
(
INITIAL 128k
NEXT 1m
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
);
/
ALTER TABLESPACE sini_temp TEMPORARY;
/
CREATE USER bingo IDENTIFIED BY bingo DEFAULT TABLESPACE sini_data TEMPORARY TABLESPACE sini_temp;
/
GRANT CONNECT,RESOURCE TO bingo;
/
GRANT CREATE TABLE TO bingo;
/
ALTER USER bingo QUOTA UNLIMITED ON sini_data;
/
ALTER USER bingo QUOTA UNLIMITED ON sini_index;
/
ALTER USER bingo QUOTA UNLIMITED ON sini_temp;
/
下面兩句語句1.產生一個名為TbsUserData的資料表空間, 2.授權使用者User1無限制使用該資料表空間
CREATE TABLESPACE TbsUserData
DATAFILE 'd:\data\UserData.dbf' 50 M
DEFAULT STORAGE (INITIAL 2 M
NEXT 2 M
PCTINCREASE 10)
/
ALTER USER User1 Quota Unlimited on TbsUserData
/