1. 程式人生 > >oracle-表空間-用戶-角色-權限-約束

oracle-表空間-用戶-角色-權限-約束

是什麽 res 建議 字符串 整數 問題 contents 加班 情況下

一,表空間

1.1創建表空間

--問題:創建一個名為hp的表空間,指定數據文件為hp.dbf,大小為10m.

create tablespace hp

datafile C:\app\hp\hp.dbf

size 10M

autoextend on next 5m

maxsize unlimited;

1.2 刪除表空間

drop tablespace hp;

1.3思考題

刪除表空間的時候,如何刪除關聯的數據文件??

drop tablespace test_data including contents and datafiles;

二 創建用戶

2.1創建用戶

--語法結構:create user 用戶名 identified by 密碼 【default tablespace 表空間名】【temporary tablespace temp】

create user hope identified by 123456;

create user hope1 identified by 123456 default tablespace users;

create user hope2 identified by 123456 default tablespace users temporary tablespace temp;

2.2 修改用戶密碼

--語法結構:alter user 用戶名 identified by 密碼

alter user hope identified by 654321;

2.3 刪除用戶

--drop user 用戶名【cascade】

drop user hope;

drop user hope cascade;

三 權限和角色

--權限指執行特定類型SQL命令或訪問其他對象的權利

--系統權限:允許用戶執行某些數據庫操作

--對象權限:允許用戶對某一特定對象執行特定的操作

--角色是具有名稱的一組權限的組合

3.1 常用系統預定義角色

--CONNECT:臨時用戶

--RESOURCE:更為可靠和正式的用戶

--DBA:數據庫管理員角色,擁有管理數據庫的最高權限

--一般情況下,普通用戶,有connect和resource的角色就夠了。

3.2 賦予權限和角色

--語法結構:grant 角色1,角色2,。。。 to 用戶

grant connect to hope2

grant connect,resource to hope2;

--給hope2賦予查詢scott的emp表的權限

grant select on scott.emp to hope2;

grant select,update on scott.emp to hope2;

--撤銷角色和權限:

--語法結構:revoke 角色1,角色2,。。。from 用戶

revoke resource from hope2;

revoke connect,resource from hope2;

四 Oracle的數據類型@@

類型

語法

描述

文本類型

char(n)

定長

最大2000字符,默認n=1

varchar2(n)

變長

最大4000字符

nchar(n)

定長

unicode數據類型,最大2000

nvarchar2(n)

變長

unicode數據類型,最大4000

clob(character large Object)

字符型大對象,最大8TB

blob(birnary large Object)

二進制數據,可存放圖片、聲音,最大8TB

數值

number(p,s)

變長

p-有效位,s-小數位;1<=p<=38,-84<=s<=127

日期

date

默認格式:DD-MM-YYYY ‘16-05月-2017’

timestamp(n)

4.1 文本類型

--char:可以存儲定長的字符串 char(200)

--varchar:可以存儲變長的字符串

--varchar2:可以存儲變長的字符串 varchar2(200)

--什麽時候用char,什麽時候用varchar(2) @@

當已知字符串長度用char比較合適

--不確定字符串長度時,用varchar2比較合適。

--nchar和nvarchar2可以存儲Unicode字符集

4.2 數值類型

--數值數據類型:numer

--number 等價於number(38,0)

--number(15)表示可以存儲一個15位的整數

--number(22,7)表示可以浮點數,整數部分有15位,小數點後有7位

--註意:不建議大家使用varchar,integer,float,double

4.2 日期數據類型

--與日期類型相關的函數

--sysdate:日期函數:顯示當前日期

select sysdate from dual;

--systimestamp:比Date更精確的一個時間

select systimestamp from dual;

--to_date(字符串,格式):將一個Oracle不認識的字符串,轉成Oracle認識的日期格式

select to_date(‘2018-01-05‘,‘yyyy-mm-dd‘) from dual;

--Date:日期類型,存儲日期和時間

--TimeStamp:比Date更精確的一種日期類型。

--默認日期格式:

--中文的Oracle:日-月-年 比如1998年7月1日 ->‘01-7月-1998’

--英文的Oracle:day-mon-year 比如1998年7月1日 ->‘01-JUL-1998‘

--Lob:

--BLOB:存儲二進制對象,如圖像、音頻和視頻文件

--CLOB:存儲字符格式的大型對象

五 表

5.1創建表

1.使用sql/plus創建

create table 表的名稱(字段名稱1 數據類型, 字段名稱2 數據類型…);

示例:

創建學生表,字段和類型如下所示:

字段

字段類型

id

number

name

varchar2(20)

sex

char(2)

birthday

date

score

number(4,2)

create table student(

id number,

name varchar2(20),

sex char(2),

birthday date,

score number(4,2)

)

2.使用plsql developer第三方工具創建

--創建表:實際上解決的是表結構的問題,表有幾個字段,每個字段的長度是多少,每個字段是什麽數據類型

--create table 表名(字段名1 數據類型1(長度),字段名2 數據類型2(長度),。。。);

create table student(stuno  number(4),stuname varchar2(10),age number(2),addr varchar(50));

5.2 刪除表

drop table student;

5.3 修改表

1.修改表名

RENAME 舊的表名稱 TO 新的表名稱;

2. 添加列

ALTER TABLE 表名稱 ADD

(列名稱 數據類型 [DEFAULT 默認值],

列名稱 數據類型 [DEFAULT 默認值],

…);

3.修改列

ALTER TABLE 表名稱 MODIFY

(列名稱 數據類型 [DEFAULT 默認值],

列名稱 數據類型 [DEFAULT 默認值],

…);

4.刪除列

alter table 表名 drop column 列名;

alter table 表名 drop(列名1,列名2,...);

5.舉例

(1)給學生表添加班級編號

alter table students add(class_id number);

(2)學生姓名變成varchar2(30)

alter table students modify(name varchar2(30));

(3)刪除學生表的score字段

alter table students drop column score;

alter table students drop(score);

(4)把學生表名students修改成stu

SQL>rename students to stu;

六 約束

--問題:往表中插入數據的時候,可能出現一些問題,比如:重復插入數據,內容不對(性別)

--如何保證數據庫表中數據的完整性和一致性呢?

--常見的約束:主鍵(primary key),外鍵(foreign key),唯一(unique),非空(not null),默認(default),用戶自定義(check)

6.1 主鍵約束

--什麽是主鍵約束?主鍵約束就是給表定義一個主鍵,什麽是主鍵?

--主鍵主要是用來保證表記錄的唯一非空的。

--建表的時候添加主鍵

create table student(stuno number(4) primary key,stuname varchar2(10),age number(2),addr varchar(50));

insert into student values(1001,zhang,18,luoyang);

--再次插入相同記錄,違法主鍵約束,不允許插入

SQL> insert into student values(1001,‘zhang‘,18,‘luoyang‘);

insert into student values(1001,‘zhang‘,18,‘luoyang‘)

ORA-00001: 違反唯一約束條件 (SYS.SYS_C0010797)

--如果主鍵為null也不允許插入,同樣是違反了主鍵約束

SQL> insert into student values(null,‘zhang‘,18,‘luoyang‘);

insert into student values(null,‘zhang‘,18,‘luoyang‘)

--創建一張課程表:

create table course(cno number(4) primary key,cname varchar2(20),cscore number(2));

--創建一張成績表:學號和課程號共同作為一個主鍵,稱為聯合主鍵

--一張表只能有一個主鍵

create table score(sno number(4),cno number(4),score number(5,2),constraint pk_score primary key (sno,cno));

drop table course;

create table course(cno number(4) constraint pk_course primary key ,cname varchar2(20),cscore number(2));

作業:

  1. 刪除表空間時,如何刪除相關聯的數據文件

drop tablespace test_data including contents and datafiles;

2. 復習本周所講的所有內容,預習約束的相關內容,下周提問。

oracle-表空間-用戶-角色-權限-約束