Oracle数据库入门教程
# Oracle数据库入门教程
## 第一章:oracle11g的简介
### 1-1 Oracle的概述
### 1-2 Oracle的安装
### 1-3 Oracle的卸载
### 1-4 Oracle数据库的体系结构
### 1-5 Oracle中的常用命令
## 第二章:Oracle的用户、权限、角色及表空间的管理
### 2-1 用系统用户登录Oracle
? 本节目标
- 熟悉系统默认用户
- 掌握用系统用户登录Oracle的语法格式
- 掌握如何给scott用户解锁以及如何用scott用户登录
Oracle默认的系统用户
只有用合法的用户账号才能访问Oracle数据库
Oracle默认的系统用户:
? sys/system
? sysman
? scott
系统用户说明
sys:这个账户相当于SQL server中的Sa账户,是个超级账户,拥有的权限最大,可以完成数据库的所有管理任务
system:没有sys的权限大,通常用来创建一些用于查看管理信息的表或视图,同样也不建议使用system架构来创建一些与管理无关的表或视图
sys和system在登录Oracle工具时,sys只能以系统管理员(sysdba)或系统操作员(sysoper)的权限登录,而system可以直接登录(normal)
sysman:是Oracle数据库中用于EM管理的用户,如果你不用该用户,也可以删除。
scott:是Oracle提供的示例用户,里面有一些供初学者学习操作的数据表(emp,dept,salgrade,bonus).
进入SqlPlus界面方式
![进入SQLPlus的方式](C:\Users\42925\Documents\笔记\oracle\进入SQLPlus的方式.PNG)
Oracle用户登录的语法格式
{
username/password:指定数据库账户用户名,口令
connect_identifier:数据库连接的连接标识 符(服务器名)。如果没有连接标识符,SQL*PLUS将连接到默认数据库。
SYSDBA、SYSOPER选项是数据库管理权限。
? sysdba:数据库管理员的权限
? sysoper:数据库操作员的权限
实操:
#### 登录
win+R
sqlplus /nolog
conn sys/syssys @orcl as sysdba ---此处设置过密码 原生conn sys/orcle @orcl sysdba
显示当前用户
show user
启用scott用户
给scott用户解锁【语法格式】 alter user username account unlock
例子:
alter user scott account unlock
连接
conn scott/tiger
查看当前用户下的表名
select table_name from user_tables;
### 2-2 创建表空间
? 本节目标
理解表空间的概念
了解表空间的分类
掌握创建表空间的语法格式
掌握查看表空间的方法
什么是表空间?(1)
数据库与表空间
表空间实际上是数据库上逻辑存储结构,可以把表空间理解为在数据库中开辟的一个空间,用于存放我们数据库的对象,一个数据库可以由多个表空间构成。
表空间与数据文件
表空间实际上由一个多个数据文件构成,数据文件的位
置和大小可以由我们用户自己来定义。我们所操作的一些表啊,一些其他的数据对象都是存放数据文件里的。那么数据文件是物理存储结构,真正可以看到的,而表空间是逻辑存储结构。
![表空间在数据库中的位置](C:\Users\42925\Documents\笔记\表空间在数据库中的位置.png)
表空间的分类
? 永久表空间
? 临时表空间
? UNDO表空间
创建表空间的语法格式
creaete [TEMPORARY] TABLESPACE
创建 临时的 表空间
tablespace_name
表空间名
TEMPFILE|LE 'xx.dbf' SIZE XX
临时文件|数据文件 文件名称 初始创建大小
#### 创建表空间操作
表空间
create tablespace test1_tablespace datafile 'test1file.dbf' size 10m;
临时表空间
create temporary tablespace temptest1_tablespace tempfile 'tempfile1.dbf' size 10m;
#### 查看表空间的位置
select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';
查看临时表空间的位置
select file_name from dba_temp_files where tablespace_name='TEMPTEST1_TABLESPACE';
### 2-3Oracle的用户管理
本节目标
掌握用户管理的操作
? 创建用户
? 给用户授权
? 连接用户
? 更改初始用户密码
? 锁定用户
? 删除用户
创建用户的语法格式
create user
identified by
default tablespace
temporary tablespace
举例
create user yan identified by test
default tablespace test1_tablespace
temporary tablespace temptest1_tablespace;
查看创建的用户
select username from dba_users;
给创建的用户授权
grant 权限 to 用户名
例 :grant connect to yan;
管理用户
连接用户
connect 用户名/口令
更改密码
alter user 用户名 identified by 新密码
不希望某用户登录 ,而又不删除其用户,可以将用户锁定
alter user 用户名 account lock;
删除用户
drop user 用户名 cascade;
//加止cascade则将用户连同其创建的东西全部删除
实操:
创建用户
create user yan identified by test default tablespace test1_tablespace temporary tablespace temptest1_tablespace;
查看用户名
select username from dba_users;
给用户授权
grant connect to yan;
给用户更改密码
alter user yan identified by t123;
锁定用户
alter user yan account lock;
删除用户并删除该用户创建的表
drop user yan cascade;
### 2-4Oracle的角色管理
本节目标
了解什么是角色?
理解角色的作用
掌握如何创建角色
掌握如何为角色赋予权限
掌握如何为角色赋予用户
什么是角色?
Oracle角色(role)就是一组权限(或者说是权限的集合)。
用户可以给角色赋予指定的权限,然后将角色赋给相应的用户。
角色的作
用
三种标准的角色
1.connect(连接角色)
拥有connect权限的用户只可以登录 Oracle,不可以创建实体,不可以创建数据库结构。
2.resource(资源角色)
拥有resouurce权限的用户只可以创建实体,不可以创建数据库结构。
3.dba(数据库管理员角色)
拥有全部特权,是系统最高权限,只有dba才可以创建数据库结构
对于普通用户:授予connect,resource权限
对于dba管理用户:授予dba权限
实操
创建用户,建议创建时指定表空间
create user user01 identified by pass01;
授权
grant connect to user01;
grant resource to user01;
创建表
create table test(id number,name varchar2(20));
此时的权限无法创建用户
给user01用户授权dba权限
grant dba to user01;
创建角色
语法格式:
create role 角色名;
例:
create role manager;
为角色赋予权限
语法格式
grant 权限 to 角色
例:
grant create table,create view to manager;
将角色赋予用户
语法格式
grant 角色 to 用户;
例:
grant manager to user01,user02;
实操
创建角色
create role manager;
给角色授权
Sgrant create table,create view to manager;
将角色赋予给用户
grant manager to user01;
将移除用户的角色
revoke manager from user01;
删除角色
drop role manager;
### 2.5Oracle用户权限的管理
本节目标
理解什么是权限
理解权限的作用
了解权限的分类
掌握系统权限和对象权限的操作
什么是权限?
权限 指的是执行特定命令或访问数据库对象的权利
权限的作用
数据库安全性:
? 系统安全性
? 数据安全性
权限的分类
系统权限:允许用户执行特定数据库动作,如创建表、创建索引、连接实例等。
对象(实体)权限:允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等。
系统权限
查询Oracle所有系统权限
select * from system_privilege_map;
常用的系统权限如:
create session 创建会话
create sequence 创建序列
create table 创建表
create user 创建用户
alter user 更改用户
drop user 删除用户
create view 创建视图
授予系统权限的语法格式
grant privilege [,privilege...] to user [,user|orle,public...]
举例
grant create table,create sequence to manager;
grant manager to user01,user02;
注意:这句话的意思是对用户user01,user02分配了创建表,创建序列的权限
回收系统权限的语法格式
revoke {privilege|role} from {user_name|role_name|public}
举例:
revoke manager form user01;
revoke create table,create sequence from manager;
实操
create user user01 identified by pass01;
grant connect to user01;
revoke connect from user01;
grant create session to user01;
drop role manager;
create role manager;
grant create table,create sequence to manager;
对象权限
查询Oracle所有对象权限
select * from table_privilege_map
常用的对象权限如:
select,update,insert,delete,all等
//all包括所有权限
授予对象权限的语法格式
grant object_priv|all[(columns)] on object to {user|role|puble}
举例
grant select,update,insert on scott.emp to manager2;
grant manager2 to user03;
grant all on scott.emp to user04;
回收对象权限的语法格式:
revoke {privilege[,privilege...]|all} on object from {user,[user...]|role|public}
举例
revoke all on scott.emp from user04;
实操
create role manager01;
grant select,update,insert on scott.emp to manager01;
revoke select,update,insert on scott.emp from manager01;
### 2.6表空间管理--查看用户的表空间
本节目标
熟悉与表空间相关的数据字典
查看用户的表空间
设置用户默认或临时的表空间
查看用户的表空间
相关的数据字典:
? dba_tablespaces
? use_tablespaces
例:
? select tablespace_name from dba_tablespaces;
管理员使用
? select tablespace_name from user_tablespaces;
普通用户使用
查看系统用户的表空间
例:查看system用户的表空间信息
select default_tablespace,temporary_tablespace from dba_users where username='SYSTEM';
select username,default_tablespace,temporary_tablespace from dba_users;
设置用户默认或临时表空间
语法格式
alter user username default|temporary tablespace tablespace_name;
例子
alter user user01
default tablespace test1_tablespace
temporary tablespace temptest1_tablespace;
实操
修改用户表空间
alter user user01 default tablespace TEST1_TABLESPACE temporary tablespace TEMPTEST1_TABLESPACE;
查看用户表空间
select default_tablespace,temporary_tablespace from dba_users where username='USER01';
### 2.7表空间管理--修改与删除表空间
本节目标
掌握修改表空间的操作
? 修改表空间的状态
? 修改表空间的数据文件
掌握删除表空间的操作
修改表空间的状态1
设置联机或脱机状态
alter tablespace tablespace_name online|offline;
online联机状态
offline脱机状态
特别说明
如果一个表空间设置成脱机状态,表示该表空间暂时不让访问设置成脱机状态不是删除,当我们需要使用该表空间时还可以将其设置成联机状态,正常使用
实操
更改表空间状态
alter tablespace test1_tablespace offline;
查看表空间状态
select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';
修改表空间的状态2
设置只读或可读写状态
alter tablespace tablespace_name read only|read write;
默认是可读写状态
实操
alter tablespace test1_tablespace online;
select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';
alter tablespace test1_tablespace read only;
select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';
alter tablespace test1_tablespace read write;
select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';
修改数据文件
增加数据文件
语法格式
alter tablespace tablespace_name add datafile 'filename.dbf' size xx;
说明:
向创建好的表空间里增加数据文件
实操
添加数据文件
alter tablespace test1_tablespace add datafile 'test2_datafile.dbf' size 10m;
查看数据文件
select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';
删除数据文件
语法格式
alter tablespace tablespace_name
drop datafile 'filename.dbf';
说明:
不能删除表空间中的第一个创建的数据文件,如果 需要删除的话,我们需要把整个的表空间删掉。
实操
alter tablespace test1_tablespace drop datafile 'test2_datafile.dbf';
select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';
删除表空间
语法格式
drop tablespace tablespace_name [including contents]
说明:
1、如果删除时只是单纯的想删除表空间,而不删除数据文件的话,可以如下:
drop tablespace tablespace_name;
2、如果在删除表空间的同时还想把数据文件也删除的话,那么需要添加如下:
including contents
实操
drop tablespace test1_tablespace including contents;
## 第三章:Oracle数据库表的管理
3-1SQL Developer工具的介绍
3-2Oracle的SQL
本节目标
理解SQL的含义
理解DDL、DML、DCL、TCL的含义
了解DDL、DML、DCL、TCL的常用语句
sql
结构化查询语言(Structured Query Language)简称SQL
是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库的语言
Oracle的SQL
DDL(Data Definition Language)数据定义语言
DML(Data Manipulation Language)数据操作语言
DCL(Data Control Language)数据控制语言
TCL(Transaction Control Language)事务控制语言
常用的DDL语句包括
create table :创建数据库表
create index:创建数据库表的索引
drop table :删除数据库表
drop index:删除数据库表的索引
truncate:删除表中的所有行
alter table:更改表结构,增加,修改,删除列
alter table add constraint:在已有的表上增加约束
常用的DML语句包括
insert:添加数据到数据库中
update:修改数据库中的数据
delete:删除数据库中的数据
select:选择(查询)数据
? select是sql语言的基础,最为重要
常用的DCL语句
grant:将权限或角色授予用户或其他角色(授予
访问权限
revoke:从用户或数据库角色回收权限(撤销访问权限)
LOCK:对数据库的特定部分进行锁定
常用的TCL语句
commit:提交事物
rollback:事物处理回退
savepoint:设置保存点
管理员权限下执行
--ddl:create user
--create user user03 identified by pass03;
--dcl:grant
--grant connect,resource to user03;
user03用户下执行
--ddl:create table
--create table test(id number,name varchar2(20));
--dml:insert
--insert into test(id,name)values(1,'test01');
--tcl:commit
--commit;
--dml:select
select * from test;
### 3-3数据库表的操作--创建表
本节目标
掌握创建表的操作
熟悉Oracle中常见的数据类型
需求分析
我们需要一张学生信息表
学生应当包含如下基本信息
学号
姓名
性别
出生日期
家庭住址
创建表
通过create table语句
语法结构如下
create table table_name
(
column_name datatype,....
);
数据类型
在创建数据表时,涉及数据表的结构 问题,也就是涉及确定数据表中各个列的数据类型,是数值,字符,日期还是图像等其他类型。
因为只有设计好数据表结构,系统都会在磁盘开辟相应的空间,用户才能向表中填写数据。
Oracle中常用的数据类型
**字符类型**
? 字符数据类型分char,varchar2
? char数据类型:表示固定长度的字符串。列长度可以是1到2000个字节。
? varchar2数据类型:表示可变长度的字符串
? 最大长度为4000字节
**数值类型**
? 声明语法
? number[(p[,s])]
? p表示精度,s表示小数点的位数
? 可以存储整数、浮点数等数值类型
? 最高精度为38位
例:
number(5,0)最多可存储五位整数
number(5,2)最大可存储999.99浮点数
**日期类型**
日期时间数据类型存储日期和时间值,包括年,月,日,小时、分钟、秒
主要的日期时间类型有:Date
**LOB类型**
? clob:clob即character LOB(字符LOB):它能够存储大量字符数据
? BLOB即Binary LOB(二进制LOB):可以存储较大的二进制对象
? 如图形、视频剪辑和声音文件
学生信息表结构分析
表名:学生信息表(student)
列名(字段名)
? 学号(SID):number(8,0)
? 姓名(name):varchar2(20)
? 性别(sex):char(2)
? 出生日期(birthday):date
? 家庭住址(address):varchar2(50)
使用scott用户操作
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50)
);
3-4Oracle的表操作--主键约束
本节目标
了解什么是约束?
熟悉Oracle中约束的分类
掌握添加主键约束的操作
什么是约束?
约束是Oracle提供的自动保持数据库完整性的一种方法
,它通过限制字段中数据、记录中数据和表之间的数据来保证数据的完整性。
完整性约束的基本语法格式为:
【constraint constraint_name(约束名)】<约束类型>
说明:约束不指定名称时,系统会给定一个名称。
Oracle中的约束
主键约束(primary key constraint)
惟一性约束(unique constraint)
默认约束(default constraint)
非空约束(not null constraint)
检查约束(check constraint)
外部键约束(foreign key constraint)
主键(primary key)约束
primary key 约束用于定义基本表的主键,它是惟一确定表中每一条记录的标识符,**其值不能为null,也不能重复**,以此来保证实体的完整性。表中主键只能有一个,但可以由多个列构成。如:primary key(学号,科目编号)
创建表时添加主键约束
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
constraint sid_pk primary key(sid)
);
修改表添加主键约束
alter table student
add constraint sid_pk primary key(sid);
实操
alter table student add constraint sid_pk primary key(sid);
### 3-5Oracle的表的操作--非空约束
本节目标
了解什么是非空约束
掌握创建表和修改表时添加非空约束的方法
掌握删除非空约束与删除其它约束的区别
非空(not null)约束
not null约束用于确保列不能为NULL,如果在列上定义了NOT NULL约束,那么当插入数据时,必须为该列提供数据;当更新列数据时,不能将其值设置为NULL。
非空(not null)约束是列级约束。
列级约束与表级约束定义上的区别
列级约束
column[constraint constraint_name] constraint_type,
说明:列级约束必须跟在列的定义后面
表级约束
column,...
[constraint constraint_name] constraint_type
说明:表级约束不与列一起,而是单独定义的。
创建表时添加非空(not null)约束
create table student(
sid number(8,0),
name varchar2(20) not null,--推荐此种方式
sex char(2) constraint nn_sex not null,
birthday date,
address varchar2(50),
constraint sid_pk primary key(sid)
);
修改表添加约束的格式对比
修改表添加约束的语法格式:
alter table table_name
? add [constraint constraint_name] constraint_type (column);
而添加非空(not null)约束要使用dodify语句
alter table table_name
? modify(column datatype not null);
删除约束的方式
将约束无效化或激活
disable|enable constraint constraint_name
将约束彻底删除
drop constraint constraint_name
删除主键约束的格式
drop primary key key
删除非空(not null)约束的语法格式
alter table table_name
? modify column_name datatype null;
实操
alter table student
mod
ify(name varchar2(20) not null);
drop table student;
create table student(
sid number(8,0),
name varchar2(20) not null,
sex char(2) constraint nn_sex not null,
birthday date,
address varchar2(50),
constraint pk_sid primary key(sid)
);
alter table student modify(sex char(2) null);
alter table student disable constraint pk_sid;
alter table student enable constraint pk_sid;
alter table student drop constraint pk_sid;
alter table student drop primary key;
### 3-6Oracle的表操作--唯一约束
本节目标
理解什么是唯一性(uniquer)约束
掌握创建表时设置唯一性约束
掌握修改表时添加唯一性约束的方法
掌握删除唯一性约束的方法
唯一性(unique)约束
唯一性约束用于指定一个或者多个列的组合值具有唯一性,以防止在列中输入重复的值
唯一性约束的注意事项
使用唯一性约束的列允许为空值;
一个表中可以允许有多个唯一性约束
可以把唯一性约束定义在多个列上;
创建表时设置唯一性约束
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
email varchar2(50) unique,
cardid varchar2(18),
constraint uk_cardid unique(cardid)
);
修改表时添加唯一性约束
alter table student
? add constraint uk_cardid unique(cardid);
实操
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
email varchar2(50) unique,
cardid varchar2(18),
constraint uk_cardid unique(cardid)
);
drop table student;
create table student(
sid number(8,2),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
email varchar2(50) unique,
cardid varchar2(18)
);
alter table student add constraint uk_student_cardid unique(cardid);
--禁用约束
alter table student disable constraint uk_student_cardid;
--彻底删除
alter table student drop constraint uk_student_cardid;
### 3-7Oracle的表操作--检查约束
本节目标
理解什么是检查约束
掌握创建表时设置检查约束的方法
掌握修改表时添加检查约束的方法
掌握删除约束的方法
检查(check)约束
检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库的完整性。
创建表时设置检查(check)约束
create table student(
sid number(8,0),
name varchar2(20),
sex char(2) check(sex='男'or sex='女'),
birthday date,
address varchar2(50)
);
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
constraint ck_sex check(sex='男' or sex='女')
);
修改表时添加检查(check)约束
alter table student
? add constraint ck_sex check(sex='男' or sex='女');
实操
create table stude
nt(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50)
);
alter table student add constraint ck_sex check(sex='男' or sex='女');
drop table student;
create table student(
sid number(8,0),
name varchar2(20),
sex char(2) check(sex='男' or sex='女'),
birthday date,
address varchar2(50)
);
--表级约束
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
constraint ck_sex check(sex='男' or sex='女')
);
--禁用检查约束
alter table student disable constraint ck_sex;
--彻底删除
alter table student drop constraint ck_sex;
### 3-8 Oracle的表操作--外键约束
本节目标
理解什么是外键约束
理解外键约束的注意事项
掌握创建表时设置外键约束的方法
掌握修改表时添加外键约束的方法
掌握删除外键约束的方法
外键(foreign key)约束
外键(foreign key)是用于建立和加强两个表数据之间的链接的一列或多列。外键约束是唯一涉及两个表关系的约束。
设置外键约束的语法格式
列级约束
create table 从表
(column_name datatype references
主表(column_name)[on delete cascade],...);
表级约束
constraint constraint_name foreign key(column_name)
references 主表(column_name)
[on delete cascade]
![创建表时设置外键约束](C:\Users\42925\Documents\笔记\创建表时设置外键约束.png)
创建表时设置外键约束(1)
主表:
create table department(
depid varchar2(10) primary key,
depname varchar2(30)
);
从表:
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
depid varchar2(10) references department(depid)
);
![创建表时设置外键约束2](C:\Users\42925\Documents\笔记\oracle\创建表时设置外键约束2.png)
创建表时设置外键约束(2)
主表
create table department(
depid varchar2(10) primary key,
depname varchar2(30)
);
从表:
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
depid varchar2(10),
constraint fk_depid foreign key(depid)
references department(depid)
on delete cascade
);
--on delete cascade是指级联删除
外键约束的注意事项
设置外键约束时主表的字段必须是主键列(或唯一列)。
主从表中相应字段必须是同一数据类型。
从表中外键字段的值必须来自主表中的相应字段的值,或者为NULL值。
修改表时添加外键约束
alter table student
add constraint fk_depid foreign key(depid)
references department(depid)
on delete cascade;
实操
--主表
create table department(
depid varchar2(10) primary key,
depname varchar2(30)
);
--从表
drop table stude
nt;
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
depid varchar2(10)
);
alter table student add constraint fk_depid foreign key(depid) references department(depid) on delete cascade;
drop table student;
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
depid varchar2(10) references department(depid) on delete cascade
);
--禁用约束
alter table student disable constraint fk_depid;
--彻底删除
alter table student drop constraint fk_depid;
### 3-9 Oracle的表操作--修改和删除表
本节目标
掌握修改表的操作
掌握删除表的操作
修改表:
? 添加列
? 修改列
? 删除列
? 修改列名
? 修改表名
添加列:
语法结构:
alter table 表名 add 新增列名 数据类型;
举例:
alter table student add tel varchar2(11);
修改列
语法结构:
alter table 表名 modify 列名 新数据类型;
举例:
alter table student modify tel number(11,0);
删除列:
语法结构:
alter table 表名 drop column 列名;
举例:
alter table student drop column tel;
修改列名
语法结构:
alter table 表名 rename column 列名 to 新列名;
举例:
alter table student rename column sex to gender;
修改表名
语法结构:
rename 表名 to 新表名;
举例:
rename student to studentinfo;
删除表
truncate table 表名;
truncate table 操作用于删除表中的全部数据,并不是把表删除掉,这种删除方式要比DELETE方式删除数据的速度要快,也叫截断表。
删除表结构
drop table 表名;
scott用户实操
--添加列
alter table student add tel varchar2(11);
--修改列
alter table student modify tel number(11,0);
--删除列
alter table student drop column tel;
--修改列名
alter table student rename column sex to gender;
--修改表名
rename student to studentinfo;
此处将emp表复制,生成emp_bak表
--删除表
--截断表
truncate table emp_bak;
--删除表结构
drop table emp_bak;
3-10 Oracle的表操作--增删改查
本节目标
熟练DML的基本操作:
? 添加信息insert
? 查询信息select
? 修改信息update
? 删除信息delete
添加信息
语法结构
insert into 表名【(列1,列2,。。。,列n)】 value (值1,值2,。。。,值n);
例:
insert into student(sid,name,sex) values(20010001,'张三','女');
查询信息
语法格式:
select * |column[,...] from 表名;
例:
? 1。查询全体学生的学号和姓名
? select sid,name from student;
? 2.查询全体学生
? select * from student;
修改信息
语法格式:
update table
set column=value[,col
umn=value,...]
[where condition];
例:
update studentinfo set tel='135********' where sid=20010001;
update studentinfo set address='辽宁省大连市';
删除信息
语法格式:
delete from table [where condition];
例:
delete from studentinfo;
delete from studentinfo where sid =20010011;
scott实操
--insert
insert into studentinfo(sid,name,gender) values(20010001,'张三','女');
insert into studentinfo(sid,name,gender,address,birthday) values(20010002,'王五','男','北京市昌平区',to_date('19820909','YYYYMMDD'));
insert into studentinfo values(20010003,'赵六','男',to_date('19830808','YYYYMMDD'),'北京昌平区');
--select
select * from studentinfo;
select sid,name from studentinfo;
--update
select * from studentinfo;
update studentinfo set address='北京市昌平区' where sid=20010001;
update studentinfo set address='北京市海淀区';
--delete
delete from studentinfo where sid=20010001;
delete from studentinfo;
### 3-11 Oracle的表操作--事务
本节目标
了解什么是事务,事务的组成,以及事务的作用
掌握commit,rollback,savepoint控制事务的方法
什么是事务?
事务可以看作是由对数据库的若干操作组成的一个单元,这些操作要么都完成,要么都取消,从而保证数据满足一致性的要求。
事务的组成
一条或者多条DML
一条DDL
一条DCL
DML语句需要使用commit提交事务或使用rollback回滚事务。
DDL和DCL是自动提交事务的。
为什么使用事务?
使用事务的原因:保证数据的安全有效。
当执行事务操作(DML语句)时,Oracle会在被作用表上加表锁,以防止其他用户改变表结构;同时会在被作用行上加上行锁,以防止其他事务在相应行上执行DML操作。
事务的控制命令
提交事务(commit)
通过commit语句可以提交事务,当执行commit语句后,会确认事务的变化、结束事务、删除保存点,释放锁。
当使用commit语句结束事务之后,其他会话将可以查看事务变化后的新数据。
回滚事务(rollback)
rollback只能对未提交的数据撤销,已经commit的数据是无法撤销的,因为commit之后已经持久化到数据库中。
保存点(savepoint):
是事务中的一点,用于取消部分事务,当结束 事务时,会自动的删除该事务所定义的所有保存点。当执行rollback时,通过指定保存点可以回退到指定的点。
设置保存点:savepoint a;
回滚部分事务:rollback to a;
回滚全部事务:rollback;
--select * from emp;
update emp_bak set sal=6000 where empno=7369;
commit;
update emp_bak set sal=5555 where empno=7499;
savepoint a;
update emp_bak set sal =6666 where empno=7499;
savepoint b;
rollback to a;
select * from emp_bak;
rollback;
### 3-12 Oracle的数据字典
本节目标
了解什么是
数据字典
理解数据字典的作用
理解三类user_*、all-*、dba-*数据字典的区别
会用数据字典查看相应的数据库信息
什么是数据字典?
数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的,数据库字典是一组表和视图结构。
数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图
数据字典的作用
通过数据字典,使我们了解数据库内部的信息。当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。
Oracle中常用的数据字典
Oracle中常用的数据字典分为三类,以三种前缀开关:
user_*、all-*、dba-*
user_*
该视图存储了关于当前用户所拥有的对象的信息(即所有在该用户模式下的对象)
all_*
该视图存储了当前用户能够访问的对象的信息。(与user_*相比,all-*并不需要拥有该对象,只需要具有访问该对象的权限即可)
dba_*
该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须 具有管理员权限)
![Oracle中常用数据字典](C:\Users\42925\Documents\笔记\Oracle\Oracle中常用数据字典.png)
应用数据字典查看相应的数据库信息(例)
select * from user_users;
查看当前用户下的用户信息
select * from all_users;
当前用户有权访问的所有用户的基本信息
select * from dba_users;
数据库所有用户的用户信息
--查看当前用户下的用户信息
select * from user_users;
--当前用户有权访问的所有信息
select * from all_users;
--使用管理员权限的访问dba的所有信息
select * from dba_users
## 第四章:Oracle的基本查询
### 4-1Oracle的基本查询语句
本节目标
熟练掌握查询语句
掌握排除重复行的处理
理解查询日期列的操作
查询概述
查询是使用最频繁的一个操作,可以从一个表中查询数据,也可以从多个表中查询数据,本章主要围绕单表查询的操作
基本查询
语法格式:
select * |{[distinct] column | expression[alias],...}
from table [where condition]
Table用于指定表名
column用于指定列名
expression用于指定表达式
alias用于指定列的别名
condition用于指定查询条件
关于查询本章所涉及的内容
特定列查询
全部列查询
排除重复行
日期列的查询
条件查询
过滤数据(比较运算符的使用)
过滤数据(范围查询、模糊查询、空值判断)
过滤数据(逻辑运算符的使用)
对查询结果排序
sql语句和sqlplus命令的区别
排除重复行distinct
默认情况下,当执行查询操作时,会显示所有满足条件的行,包括重复行。
例:
select distinct deptno,job from emp;
实操
select deptno,job from emp;
select distinct deptno,job from emp;
查询日期列
日期列:是指数据类型为日期类型的列,如DATE类型。
日期列的默认显示格式为DD-MON-RR
RR:代表年,而且只取年份的后两位数字。
![日期格式中RR与YY的区别](C:\Users\42925\Documents\笔记\Oracle\日期格式中RR与YY的区别.png)
以简体中文显示日期结果
如果以简体中文显示日期结果,那么可以将会话的nls_language参数设置为simplified chinese.
alter session set nls_language='simplified chinese';
以美国英语显示日期结果
如果以美国英语显示日期结果,那么可以将会话的NLS_LANGUAGE参数设置AMERICAN。
alter session set nls_language='AMERICAN';
以特定格式显示日期结果
如果希望定制日期显示格式,并按照特定方式显示日期结果,那么可以设置会话的nls_date_format参数
alter session set nls_date_format='YYYY/MM/DD';
select * from emp;
--设置简体中文的日期格式
alter session set nls_language='SIMPLIFIED CHINESE';
--设置美国英语显示日期格式
alter session set nls_language='AMERICAN';
--设置特定格式
alter session set nls_date_format='YYYY/MM/DD';
select * from emp;
### 4-2Oracle查询语句中算术运算符的使用
本节目标
理解运算符的分类以及优先级
掌握在查询语句中运算符的使用
算术运算符
![算术运算符](C:\Users\42925\Documents\笔记\Oracle\算术运算符.png)
使用算术运算符
需求:应用scott.emp表查询雇员编号、雇员名、雇员月工资、雇员的年收入。