1、 前言
需要资料(md文件+Oracle安装教程+卸载教程+Oracle安装包)的童鞋,请底下留言!
本次学习笔记,是基于 Oracle 11g 版本(64位)的,在 Windows 8.1 环境下的。
连接数据库的软件是Navicat,命令窗口以sqlplus 方式、使用java的jdbc方式等。
2、 Oracle 简介
2.1 连接到 Oracle 数据库
连接成功的前提是:
- Oracle 正确安装完成;
- Oracle 服务正常启动;
- Oracle 监听服务正常启动。
2.1.1 sqlplus 方式连接和常用操作(上篇:连接)
现在,假设您已经安装好了Oracle数据库,现在启动服务。
第一步,【win】 + 【r】组合键打开services.msc服务界面;
第二步,启动Oracle服务和监听;
第三步,使用 sqlplus 方式连接到 Oracle 数据库;
其语法为:
sqlplus 用户名/密码
注意:我这里使用
sys
用户进行连接,使用sysdba
角色。Oracle 数据库安装后,就会自动生成 SYS 和 SYSTEM 这两个用户:
- sys 用户是超级管理用户,具有最高权限,具有 sysdba 角色,具有 create database 的权限。
- system 用户是管理操作员,权限也很大,具有 system 角色,不具有 create database 的权限。
sys 用户默认密码:manager (我本机上的密码已经更改为 123456)
system 用户默认密码:change_on_install,具有 sysoper 角色
C:\Users\Feng>sqlplus sys/123456 as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Thu Feb 6 12:01:38 2020
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
这时就连接到 Oracle 数据库了。怎么样,是不是很简单?
2.1.2 sqlplus 方式连接和常用操作(下篇:常用操作)
sql/plus 常用命令
命令 | 语法 | 描述 |
---|---|---|
conn、connect | conn 用户名/密码 as sysdba | 连接不成功默认为断开,重新连接 |
disc | disc | 断开与当前数据库的连接 |
passw | passw | 修改用户的自身的密码; |
show user | show user | 显示当前用户 |
exit | exit | 断开与数据库连接,同时退出sql/plus |
【案例】
连接数据库(指定用户、角色)
SQL> conn sys/123456 as sysdba
Connected.
断开当前连接(使用查询表空间的sql语句测试,发现已经断开连接)
SQL> disc
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from v$tablespace;
SP2-0640: Not connected
SQL>
修改自身密码(需要输入原密码,并确认新密码)
SQL> passw
Changing password for SYS
Old password:
New password:
Retype new password:
Password changed
SQL>
使用 sys 的 sysdba 角色修改某个用户的密码
alter user 用户名称 identified by 新的密码
查看当前用户
SQL> show user
USER is "SYS"
断开与数据库连接并退出 sql/plus
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
C:\Users\Feng>
文件操作命令
命令 | 描述 |
---|---|
start 和 @ | 运行本地的 sql 脚本(文件中的 sql 语句) |
edit | 编辑指定的 sql 脚本 |
spool | 将命令行的内容输出到指定的文件中去;例如: spool D:/demo.sql; 结束: spool off; |
& | 交互式命令,定义一个变量,执行时需要用户输入; 例如: select * from emp where ename='&name’; |
linesize | 设置显示行的宽度;默认为80个字符。查看:show linesize; 设置:set linesize 值 |
pagesize | 设置每页显示的行数,默认为14行。查看:show pagesize; 设置:set pagesize 值; |
2.2.1 Navicat 连接方式
第一步,创建连接;
第二步,填写信息;
第三步,测试;
2.3.1 Java 的 JDBC 连接方式
与使用 JDBC 连接 Mysql 基本一致,需要注意的是,应该使用 Oracle 的数据库连接驱动。
这个我就不写了,有兴趣的朋友看看这个博客:java 使用 JDBC 连接Oracle
2.2 表空间
2.2.1 表空间的概念
表空间是数据库中最大的逻辑单位,一个Oracle数据库至少会有一个表空间,就是名SYSTEM系统表空间
在使用 sqlplus 方式连接到数据库后,查看表空间:
SQL> show user;
USER is "SYS"
SQL> select * from v$tablespace;
TS# NAME INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
0 SYSTEM YES NO YES
1 SYSAUX YES NO YES
2 UNDOTBS1 YES NO YES
4 USERS YES NO YES
3 TEMP NO NO YES
6 EXAMPLE YES NO YES
8 rows selected.
2.2.2 各个表空间的含义
表空间 | 含义 |
---|---|
SYSTEM | 用于存放Oracle系统内部表和数据字典的数据,不建议用户创建表、视图等对象存放在system表空间中 |
SYSAUX | 存放Oracle系统内部的常用样例用户的对象,辅助系统的表空间 |
UNDOTBS1 | 撤销表空间,用于存放撤销信息的表空间 |
USERS | 用户使用的表空间,可以创建表,索引,视图 |
TEMP | 是Oracle系统用于存放临时数据的表空间 |
EXAMPLE | 是Oralce存放案例的表空间 |
2.2.3 表空间的增删改
创建表空间
需要指定表空间名,我这里表空间名为feng2020
,然后是数据文件位置'D:\feng2020.dbf’
,然后是表空间的大小 100m
。另外,我有2个之前就创建的表空间,FF
和 FJS
。.dbf是指数据库文件,.dmp是备份数据库文件,还有就是创建表空间,必须是 sys
用户,其他用户没权限。
SQL> create tablespace feng2020 datafile 'D:\feng2020.dbf' size 100m;
Tablespace created.
SQL> select * from v$tablespace;
TS# NAME INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
0 SYSTEM YES NO YES
1 SYSAUX YES NO YES
2 UNDOTBS1 YES NO YES
4 USERS YES NO YES
3 TEMP NO NO YES
6 EXAMPLE YES NO YES
8 FF YES NO YES
9 FJS YES NO YES
10 FENG2020 YES NO YES
9 rows selected.
修改表空间的大小
将表空间feng2020
的大小设置为 200m
。
SQL> alter database datafile 'D:\feng2020.dbf' resize 200m;
Database altered.
修改表空间的读写状态
设置表空间为只读;设置表空间可读、写。
SQL> alter tablespace feng2020 read only;
Tablespace altered.
SQL> alter tablespace feng2020 read write;
Tablespace altered.
删除表空间
我这里就不删除了,语法如下:
drop tablespace 表空间名;
2.3 用户管理
给表空间创建用户
sys 用户 和 system 用户都拥有权限。刚创建的还热乎的用户,是不能登录的,没有登录的权限(关于授权,请看 2.4 Oracle 的权限)。
这里创建用户名为 user_feng2020
,密码为 123456
,表空间为 feng2020
的一个用户。
SQL> create user user_feng2020 identified by 123456 default tablespace feng2020;
User created.
SQL> conn user_feng2020/123456;
ERROR:
ORA-01045: user USER_FENG2020 lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
查看所有用户
查询所有用户的用户名:
SQL> select USERNAME from dba_users;
更改用户密码
将用户 user_feng2020
的密码更改为 123456
。
SQL> alter user user_feng2020 identified by 123456;
User altered.
删除用户
在删除用户时,如果该用户已经创建了表,那么要加上 casecade
,进行级联删除。还有就是自己不能删除自己。我这里就不删除了,语法如下:
drop user 用户名 cascade;
2.4 Oracle 的权限
2.4.1 概念
Oracle 中的权限分为 2 种:
- 系统权限:是用户对数据库访问的相关权限,有大约 140 多个。比如,
create session
连接到数据库、create table
创建表、create view
创建视图、create sequence
创建序列等。 - 对象权限:是指用户对其他用户的数据对象的操作权限。比如,
select/insert/update/delete/all
等操作。
在对象权限中,有几个常用角色(具有名称的一组权限的组合),比如connect、resource、dba
等。
角色 | 描述 |
---|---|
connect | 临时用户,就可登录(只有登陆的权限) |
resource | 更为可靠或正式的用户,可以创建表。删除表,视图等的操作 |
dba | 数据库管理员角色,拥有管理数据库最高权限,一般不会授权于用户 |
2.4.2 授权语句
权限语法一览
语法 | 含义 |
---|---|
grant crate session to 用户名; | 给用户分配连接权限 |
grant create table to 用户名; | 给用户分配建表权限 |
grant unlimited tablespace to 用户名; | 分配表空间无限权限 |
grant create sequence to 用户名; | 给用户分配创建序列权限 |
grant all on 表名 to 用户名; | 指定用户对该表拥有所有权限 |
grant select on 表名 to 用户名 with grant option; | 指定用户可以查看该表,并且可以将这个权限赋予其他用户 |
alter user 用户名 account unlock; | 解锁(锁定)用户 |
2.5 命名规则和数据类型
2.5.1 命名规则
表名、列名的命名规则:
- 只能使用的字符:A-Z,a-z,0-9,$,#,下划线等,但不能使用空格和单引号;
- 必须以字母开头;
- 长度不能超过30个字符;
- 不能使用保留字,比如oracle;
- 不同名称相同;
2.5.2 常见的数据类型
字符型数据类型 | 含义 |
---|---|
char(n) | 定长(不满足最大长度用空格代替),最大长度2000字符(2000bytes) |
varchar2(n) | 变长(不满足最大长度不使用空代替),最大长度4000字符(4000bytes) |
long(n) | 可变长度的字符数据,最大能存储2G |
数字型 | 含义 |
---|---|
number | 范围是 10 的 38 次方到 负10 的38次方,可以表示整数和小数。 |
例如:
number(5) 的范围是 [99999 -99999 ];
number(5,2) 的范围是 [999.99 -999.99],5位有效数字,2位小数。
日期类型 | 含义 |
---|---|
date | 包含年月日和时分秒 |
timestamp | 时间戳,秒值精确到小数点后6位 |
图片类型 | 含义 |
---|---|
Blob | 数据库专门用来存储图片,大小为4G,二进制数据 |
BFile | 外部的操作系统文件,大小为4G |
Clob | 字符型大对象,大小为4G |
日期类型 | 含义 |
---|---|
date | 包含年月日和时分秒 |
timestamp | 时间戳,秒值精确到小数点后6位 |
图片类型 | 含义 |
---|---|
Blob | 数据库专门用来存储图片,大小为4G,二进制数据 |
BFile | 外部的操作系统文件,大小为4G |
Clob | 字符型大对象,大小为4G |