1. 基本概念
1.1.
数据类型
基本数据类型(NUMBER,VARCHAR2,DATE)
O RACEL支持下列内部数据类型:
VARCHAR2
变长字符串,最长为2000 字符。
NUMBER 数值型。
LONG 变长字符数据,最长为2G字节。
DATE 日期型。
RAW
二进制数据,最长为255字节。
LONG RAW 变长二进制数据,最长为2G字节。
ROWID 二六进制串,表示表的行的唯一地址。
CHAR
定长字符数据,最长为255。
2. SQL*PLUS
这是个Oracle提供的最常用,也是最好用的sql命令执行工具。
2.1.
数据库系统管理
2.1.1. 登录
C:> sqlplusw
C:> sqlplus /nolog
SQL> conn
username/password@Oranet
如,system登录
第 2 页 共 9 页
SQL> conn
system/systempwd@whfc
如果要行一些只有sysdba才能执行的命令,必须以sysdba特权登录:
SQL> conn
sys/syspwd@whfc as sysdba
2.1.2. 创建表空间
必须有CREATE TABLESPACE
特权的用户才能创建表空间,比如system
和sys用户。
SQL> conn
system@whfc01
请输入口令:
已连接。
SQL> create tablespace ts_test datafile
‘/data2/oradata/ciis/ts_test01.dbf‘ size
10m ;
表空间已创建。
2.1.3.
添加数据文件
SQL> alter tablespace ts_test add datafile
‘/data2/oradata/ciis/ts_test02.dbf‘ size
10m ;
表空间已更改。
2.1.4.
查看表空间大小
SQL> DESC DBA_DATA_FILES
名称 是否为空? 类型
--------------------
-------- --------------
FILE_NAME VARCHAR2(513)
FILE_ID
NUMBER
TABLESPACE_NAME VARCHAR2(30)
BYTES NUMBER
BLOCKS NUMBER
第 3 页
共 9 页
STATUS VARCHAR2(9)
RELATIVE_FNO NUMBER
AUTOEXTENSIBLE
VARCHAR2(3)
MAXBYTES NUMBER
MAXBLOCKS NUMBER
INCREMENT_BY
NUMBER
USER_BYTES NUMBER
USER_BLOCKS NUMBER
SQL> SELECT
TABLESPACE_NAME,SUM(BYTES)/1024/1024 M
2 FROM DBA_DATA_FILES
3 GROUP BY
TABLESPACE_NAME;
TABLESPACE_NAME M
--------------------
----------
DEVELOP1 8000
DEVELOP2 14336
DEVELOPINDEX 4106
DRSYS
20
EXAMPLE 145.625
INDX 25
ODM 20
SYSTEM 1024
TOOLS
10
TS_CI_13 4094
TS_CI_32 4094
TS_CI_33 2047
TS_II_13
2047
TS_II_32 2047
TS_PI_1301 2047
第 4 页 共 9 页
TS_PI_1302
2047
TS_PI_3201 2047
TS_TEST 20
UNDOTBS1 5048
USERS 25
XDB
38.125
已选择21 行。
SQL> SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024 M
2
FROM DBA_DATA_FILES
3 WHERE TABLESPACE_NAME=‘TS_TEST‘
4 GROUP BY
TABLESPACE_NAME;
TABLESPACE_NAME M
--------------------
----------
TS_TEST 20
2.1.5. 查看自由(剩余)表空间大小
SQL> desc
DBA_FREE_SPACE
名称 是否为空? 类型
---------------------- --------
---------------
TABLESPACE_NAME VARCHAR2(30)
FILE_ID NUMBER
BLOCK_ID
NUMBER
BYTES NUMBER
BLOCKS NUMBER
RELATIVE_FNO NUMBER
第 5 页 共 9
页
SQL> SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024 M
2 FROM
DBA_FREE_SPACE
3 WHERE tablespace_name=‘TS_TEST‘
4 GROUP BY
TABLESPACE_NAME;
TABLESPACE_NAME M
--------------------
----------
TS_TEST 19.6875
2.1.6. 创建新用户
SQL> create user test
identified by test default tablespace ts_test temporary
tablespace
temp;
用户已创建
2.1.7. 给用户角色特权
SQL> grant connect,resource to
test;
授权成功。
2.2. 用户数据对象
2.2.1. 查看当前用户表名
SQL> select * from
tab;
TNAME TABTYPE CLUSTERID
------------------------------ -------
----------
BONUS TABLE
CC TABLE
DEPT TABLE
第 6 页 共 9 页
EMP
TABLE
EMP_IOT TABLE
SALGRADE TABLE
已选择6 行。
2.2.2. 创建数据表
SQL>
CREATE TABLE book (
2 bookid NUMBER(18),
3 bookname VARCHAR2(80) NOT
NULL,
4 author VARCHAR2(40),
5 price NUMBER(6,2)
6
);
表已创建。
2.2.3. 创建索引
SQL> CREATE INDEX idx_book_bookid ON
book(bookname);
索引已创建。
2.2.4. 创建主键约束
SQL> ALTER TABLE book ADD
CONSTRAINT pk_book_bookid PRIMARY
KEY (bookid);
表已更改。
2.2.5.
显示表结构
SQL> desc book
名称 是否为空? 类型
------------------------------
-------- ----------------------
第 7 页 共 9 页
BOOKID NOT NULL
NUMBER(18)
BOOKNAME NOT NULL VARCHAR2(80)
AUTHOR VARCHAR2(40)
PRICE
NUMBER(6,2)
2.2.6. 查看表的索引
SQL> column index_name format a30
SQL>
select table_name, index_name from user_indexes;
TABLE_NAME
INDEX_NAME
------------------------------ ------------------------
BOOK
IDX_BOOK_BOOKNAME
BOOK PK_BOOK_BOOKID
2.2.7. 查看索引列
SQL> select
table_name, index_name, column_name, column_position
from
user_ind_columns;
TABLE_NAME INDEX_NAME COLUMN_NAME
COLUMN_POSITION
-------------- ------------------- --------------
---------------
BOOK PK_BOOK_BOOKID BOOKID 1
BOOK IDX_BOOK_BOOKNAME
BOOKNAME 1
2.2.8. 查看数据段占空间大小
数据段包括表、索引、分区等。
SQL> desc
user_segments
名称 是否为空? 类型
-------------------- --------
------------------------
第 8 页 共 9 页
SEGMENT_NAME
VARCHAR2(81)
PARTITION_NAME VARCHAR2(30)
SEGMENT_TYPE
VARCHAR2(18)
TABLESPACE_NAME VARCHAR2(30)
BYTES NUMBER
BLOCKS
NUMBER
EXTENTS NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT
NUMBER
MIN_EXTENTS NUMBER
MAX_EXTENTS NUMBER
PCT_INCREASE
NUMBER
FREELISTS NUMBER
FREELIST_GROUPS NUMBER
BUFFER_POOL
VARCHAR2(7)
SQL> select segment_name,segment_type,bytes from
user_segments;
SEGMENT_NAME SEGMENT_TYPE
BYTES
------------------------------ --------------- ---------
BOOK TABLE
65536
IDX_BOOK_BOOKNAME INDEX 65536
PK_BOOK_BOOKID INDEX 65536
第 9 页 共
9 页
2.2.9. 查看表占空间大小
SQL> select segment_name,segment_type,bytes from
user_segments where
segment_type=‘TABLE‘;
SEGMENT_NAME SEGMENT_TYPE
BYTES
------------------------------ ---------------- --------
BOOK TABLE
65536