数据定义语言(DDL)<操作表的结构>:create( 创建)、
alter(更改)、
drop(删除)
数据操纵语言(DML)<操作表的数据>:insert(插入)、select(选择)、delete(删除)、update(更新)
事务控制语言(TCL):commit ( 提交)、savepoint(保存点)、rollback(回滚)
数据控制语言:grant(授予)和revoke(回收)。与权限有关
举例:
1、数据定义语言DDL
SQL> create table myTable(no number(4),name varchar2(20)); // 创建一个名为myTable的表,包含两列分别为no 和name,其中no为数字,name为字符串
SQL> alter table myTable modify (name varchar2(25)); //修改myTable中的name 列,使此列能容纳25 个字符;
SQL> alter table myTable add (tel_no varchar2(20)); //给表myTab 增加一列tel_no;
SQL> alter table myTable drop column tel_no; //删除表myTab 的tel_no 列;
SQL> drop table myTable; //删除表myTable;
SQL> truncate table myTable; //删除表myTable中的所有行(截断表),注意:此操作不可以rollback(回滚)。
2、数据操纵语言DML
SQL> insert into myTable values(‘001’,’ ......
数据定义语言(DDL)<操作表的结构>:create( 创建)、
alter(更改)、
drop(删除)
数据操纵语言(DML)<操作表的数据>:insert(插入)、select(选择)、delete(删除)、update(更新)
事务控制语言(TCL):commit ( 提交)、savepoint(保存点)、rollback(回滚)
数据控制语言:grant(授予)和revoke(回收)。与权限有关
举例:
1、数据定义语言DDL
SQL> create table myTable(no number(4),name varchar2(20)); // 创建一个名为myTable的表,包含两列分别为no 和name,其中no为数字,name为字符串
SQL> alter table myTable modify (name varchar2(25)); //修改myTable中的name 列,使此列能容纳25 个字符;
SQL> alter table myTable add (tel_no varchar2(20)); //给表myTab 增加一列tel_no;
SQL> alter table myTable drop column tel_no; //删除表myTab 的tel_no 列;
SQL> drop table myTable; //删除表myTable;
SQL> truncate table myTable; //删除表myTable中的所有行(截断表),注意:此操作不可以rollback(回滚)。
2、数据操纵语言DML
SQL> insert into myTable values(‘001’,’ ......
一、删除列
ALTER TABLE AA DROP COLUMN DEP;
适用于小表-----数据量小的时候;
2、ALTER TABLE AA SET UNUSED("DEP") CASCADE CONSTRAINTS;
然后在负载小的时候,删除
ALTER TABLE AA DROP UNUSED COLUMNS;
二、添加列
先加一新字段再赋值:
alter table table_name add mmm varchar2(10);
update table_name set mmm=** ;
三、设置字段值自动增加
insert into t_address (addressname) (select vcname from busstop)
create sequence seq_id_test_increment --序列
increment by 1 start with 1 maxvalue 9999999;
create or replace trigger insert_test_increment --触发器
before insert on t_address --t_address 表
referencing
new as new
old as old
for each row
begin
select seq_id_test_increment.nextval into :new.addressid from dual; --addressid字段
end; ......
一、删除列
ALTER TABLE AA DROP COLUMN DEP;
适用于小表-----数据量小的时候;
2、ALTER TABLE AA SET UNUSED("DEP") CASCADE CONSTRAINTS;
然后在负载小的时候,删除
ALTER TABLE AA DROP UNUSED COLUMNS;
二、添加列
先加一新字段再赋值:
alter table table_name add mmm varchar2(10);
update table_name set mmm=** ;
三、设置字段值自动增加
insert into t_address (addressname) (select vcname from busstop)
create sequence seq_id_test_increment --序列
increment by 1 start with 1 maxvalue 9999999;
create or replace trigger insert_test_increment --触发器
before insert on t_address --t_address 表
referencing
new as new
old as old
for each row
begin
select seq_id_test_increment.nextval into :new.addressid from dual; --addressid字段
end; ......
1. 查看oracle数据库字符集:
select userenv('language') from dual;
2. 清屏 在Oracle Sql/Plus中
clear scr;
clear screen;
3. 查询当前用户下都有那些表
select * from tab;
4. 查询数据库的SID值
show parameter service_name;
show parameters service_name;
select name from V$database;
5. desc查看表结构
desc 表名;
6. 注释SQL语句
用“--”
例如: --select * from emp; ......
1. 查看oracle数据库字符集:
select userenv('language') from dual;
2. 清屏 在Oracle Sql/Plus中
clear scr;
clear screen;
3. 查询当前用户下都有那些表
select * from tab;
4. 查询数据库的SID值
show parameter service_name;
show parameters service_name;
select name from V$database;
5. desc查看表结构
desc 表名;
6. 注释SQL语句
用“--”
例如: --select * from emp; ......
一、如何找到消耗资源大的Oracle的session及其执行的SQL语句
HP-UX可以用glance,top、IBM- AIX可以用topas、另外可以使用PS命令查看进程。
通过这些程序我们可以找到用系统资源特别大的这些进程的进程号,我们就可以通过以下的sql语句发现这个pid正在执行哪个sql,这个sql最好在pl/sql developer,toad等软件中执行, 把<>中的spid换成你的spid就可以了。
SELECT a.username,
a.machine,
a.program,
a.sid,
a.serial#,
a.status,
c.piece,
c.sql_text
from v$session a,
v$process b,
v$sqltext c
WHERE b.spid=<spid>
AND b.addr=a.paddr
AND a.sql_address=c.address(+)
ORDER BY c.piece &n ......
http://liuxh6.itpub.net/post/528/401829
Oracle 10g 有关表分区的问题?
分区原则
1.表分区的指南
a、表的大小
对于大表进行分区,将有益于大表操作的性能和大表的数据维护。通常当表的大小超过1.5GB-2GB,或对于OLTP系统,表的记录超过1000万,都应考虑对表进行分区。
b、数据访问特性
基于表的大部分查询应用,只访问表中少量的数据。对于这样表进行分区,可充分利用分区排除无关数据查询的特性。
c、数据维护
某些表的数据维护,经常按时间段删除成批的数据,例如按月删除历史数据。对于这样的表需要考虑进行分区,以满足维护的需要。因为删除(Delete)大量的数据,对系统开销很大,有时甚至是不可接受的。
d、只读数据
如果一个表中大部分数据都是只读数据,通过对表进行分区,可将只读数据存储在只读表空间中,对于数据库的备份是非常有益的。
e、并行数据操作(Parallel DML)
对于经常执行并行操作(如Parallel Insert,Parallel Update等)的表应考虑进行分区。
f、表的可用性
当对表的部分数据可用性要求很高时,应考虑进行表分区。
2.选择分区字段(Partition Key)
当确定分区字段时,有两个主要因素特别需要考虑:
a、增强表的管理和维护性 ......
http://www.haoxiai.net/shujuku/Oracle/111076.html
一.移动数据文件:
– 可以用ALTER DATABASE,ALTER TABLESPACE两种方法移动数据文件。
1. ALTER DATABASE方法;
– 用此方法,可以移动任何表空间的数据文件。
◆STEP 1. 下数据库:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> SHUTDOWN;
SQL> EXIT;
◆STEP 2.用操作系统命令移动数据文件:
– 将数据文件 ‘test.ora’ 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下:
$ mv /ora/oracle/data1/test.ora /ora/oracle/data2
◆STEP 3. Mount数据库,用ALTER DATABASE命令将数据文件改名:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE RENAME FILE ‘/ora/oracle/data1/test.ora’ TO ‘/ora/oracle/data2/test.ora’;
◆STEP 4. 打开数据库:.
SQL> ALTER DATABASE OPEN;
SQL>SELECT NAME,STATUS from V$DATAFILE;
2. ALTER TABLESPACE方法:
– 用此方法,要求此数据文件既不属于SYSTEM表空间,也不属于含有ACTIVE回滚段或临时段的表空间。
◆STEP1. 将此数据 ......