1:用戶和許可權 1.1 用戶的創建 a)語法 create user 用戶名 identified by 密碼; b)創建用戶abcd,並設定密碼為abcd; 註意:操作資料庫對象是需要DBA(資料庫管理員)許可權的; create user abcd identified by bjsxt; 1.2 ...
1:用戶和許可權
1.1 用戶的創建
a)語法--- create user 用戶名 identified by 密碼;
b)創建用戶abcd,並設定密碼為abcd;---註意:操作資料庫對象是需要DBA(資料庫管理員)許可權的;
create user abcd identified by bjsxt;
1.2 給用戶授權
Oracle中的許可權很多,為了方便用戶管理許可權,提供了角色這個概念。角色代表一個身份,該身份擁有固定的許可權。常見的角色:DBA(資料庫管理員),CONNECT(臨時用戶,擁有少量的權限),RESOURCE(比較靠譜的許可權,擁有更多的許可權,不能管理資料庫);
a)給abcd用戶授予普通用戶的許可權
grant connect,resource to abcd;
b)從abcd用戶撤銷resource許可權
revoke resource from abcd;
1.3 刪除用戶
drop user abcd;
1.4修改用戶
1.4.1修改用戶密碼
alter user abcd identified by 123;
1.4.2鎖定用戶和解鎖用戶
a)鎖定用戶
alter user abcd account lock;
b)解鎖用戶
alter user abcd account unlock;
2.資料庫表
2.1Oracle中的數據類型
2.1.1字元類型
a)varchar2---可變長度的字元串
b)cahr ---不可變長度的字元串,效率較高;
2.1.2數值類型
number,既可以表示整數,也可以表示浮點數;
2.1.3日期時間類型
a)date,存放日期和時間;
b)timestamp,比date更精確的日期時間類型;
2.1.4 lob類型
a)blob,用於存放二進位數據,可以用於存放文件、圖片、音頻、視頻等二進位數據;
b)clob,用於存放答文本信息;
2.2創建表格
創建學生表,欄位包含學號、姓名、性別、年齡、入學日期、班級、email等信息;
create table student(
sno number(4),
sname varchar(12),
gender char(3),
age number(3),
sdate date,
clazz varchar2(20),
email varchar2(50)
)
2.3修改表格
2.3.1添加欄位
alter table student add(score number(3));
2.3.2修改欄位的類型
alter table student modify(score number(5,2));
2.3.3重命名欄位
alter table student rename column score to fenshu ;
2.3.4刪除欄位
alter table student drop column fenshu;
2.3.5刪除表格
drop table stu;
3.表格的約束
constraints,約束,用於對錶格的額數據進行限制,保證表格數據的完整性和一致性。
語法:constraints 約束名+約束類型(約束欄位)
3.1主鍵約束(primary key)
主鍵約束用於唯一標識一條記錄的欄位,必須保證即非空有唯一。
一張表中,只能有一個主鍵;
a)在表級別定義主鍵約束,對約束統一管理
create table student (
sno number(4),
sname varchar2(12),
gender char(3),
age number(3),
sdate date,
clazz varchar2(20),
email varchar2(50),
constraints pk_student primary key (sno)
);
b)在列級別添加主鍵約束
create table student (
sno number(4) constraints pk_student primary key,
sname varchar2(12),
gender char(3),
age number(3),
sdate date,
clazz varchar2(20),
email varchar2(50)
);
c)在列級別添加簡化版約束
create table student (
sno number(4) primary key,
sname varchar2(12),
gender char(3),
age number(3),
sdate date,
clazz varchar2(20),
email varchar2(50)
);
d)聯合主鍵,只能在表級別定義,因為一個表只能有一個主鍵
create table student (
sno number(4),
sname varchar2(12),
gender char(3),
age number(3),
sdate date,
clazz varchar2(20),
email varchar2(50),
constraints pk_student primary key (sno, email)
);
3.2非空約束not null
欄位值不允許為空,非空約束只能在列級別定義
create table student (
sno number(4),
sname varchar2(12) not null,
gender char(3),
age number(3),
sdate date,
clazz varchar2(20),
email varchar2(50),
constraints pk_student primary key (sno)
);
3.3唯一約束 (unique)
要求欄位值不能重覆;
create table student (
sno number(4),
sname varchar2(12) not null,
gender char(3),
age number(3),
sdate date,
clazz varchar2(20),
email varchar2(50), -- unique,
constraints pk_student primary key (sno),
constraints uk_student_email unique (email)
);
3.4 檢查約束(check)
用於限定欄位值的取值範圍;
create table student (
sno number(4),
sname varchar2(12) not null,
gender char(3) check (gender in ('男', '女')),
age number(3),
sdate date,
clazz varchar2(20),
email varchar2(50),
constraints pk_student primary key (sno),
constraints uk_student_email unique (email),
constraints ck_student_age check (age between 18 and 30)
);
3.5外鍵約束(foreign key)
用於約束表和表之間的關係,兩張標的依賴關係,以emp表和dept表為例,emp表依賴dept表,因此,dept表可以被稱之為主表,emp表被稱之為從表。
註意:
》主表中,只有主鍵或唯一建才可以被從表參考;
》從表中作為外鍵的列,類型一定要和主表的被參考列相同;
a)建立主表clazz
create table clazz (
cno number(3) primary key,
cname varchar2(20) not null,
croom number(3)
);
b)建立從表,並定義外鍵Student
create table student (
sno number(4),
sname varchar2(12) not null,
gender char(3) default '男' check (gender in ('男', '女')),
age number(3),
sdate date,
email varchar2(50),
cno number(3),
constraints pk_student primary key (sno),
constraints uk_student_email unique (email),
constraints ck_student_age check (age between 18 and 30),
constraints fk_student_cno foreign key (cno) references clazz (cno)
);
c)也可以在列級別定義外鍵,如下
create table student (
sno number(4),
sname varchar2(12) not null,
gender char(3) default '男' check (gender in ('男', '女')),
age number(3),
sdate date,
email varchar2(50),
cno number(3) references clazz(cno),
constraints pk_student primary key (sno),
constraints uk_student_email unique (email),
constraints ck_student_age check (age between 18 and 30)
);
d)外鍵中的刪除問題;
》主表中的數據在被引用時,無法直接刪除,預設情況下,需要先刪除主表中的數據。
》可以在定義外建時,設置刪除策略為cascade(級聯),表示當刪除主表的信息時,同時刪除從表中的所有關聯的信息
create table student (
sno number(4),
sname varchar2(12) not null,
gender char(3) default '男' check (gender in ('男', '女')),
age number(3),
sdate date,
email varchar2(50),
cno number(3),
constraints pk_student primary key (sno),
constraints uk_student_email unique (email),
constraints ck_student_age check (age between 18 and 30),
constraints fk_student_cno foreign key (cno) references clazz (cno) on delete cascade
);
》可以在定義外建時,設置刪除策略為set null(設空),表示當刪除主表的信息時,將從表中的相關數據設置為null
create table student (
sno number(4),
sname varchar2(12) not null,
gender char(3) default '男' check (gender in ('男', '女')),
age number(3),
sdate date,
email varchar2(50),
cno number(3),
constraints pk_student primary key (sno),
constraints uk_student_email unique (email),
constraints ck_student_age check (age between 18 and 30),
constraints fk_student_cno foreign key (cno) references clazz (cno) on delete set null
);
3.6在修改表格時添加約束
a)給student表添加約束
-- 主鍵約束
alter table student add constraints pk_student primary key (sno);
-- 唯一約束
alter table student add constraints uk_student_email unique (email);
-- 檢查約束
alter table student add constraints ck_student_age check (age between 18 and 30);
alter table student add constraints ck_student_gender check (gender in ('男','女'));
-- 外鍵約束
alter table student add constraints fk_student_cno foreign key (cno) references clazz (cno);