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