1.查看有哪些表
select table_name from user_tables;
2.根据给定的表,创建一个表结构相同,没有内容的表
create table emp10 as select * from emp where 1=2;
3.根据给定的表和条件,批量插入数据
SQL> insert into emp10 select * from emp where deptno=10;
已创建3行。
注意的问题;
(1). 没有values关键字
(2). 子查询的列必须与insert语句中的列对应
insert into emp10(empno,sal,ename) select empno,sal,ename from emp where deptno=20;
create table emp20 as select * from emp where deptno=20;
4.删除数据
清空表:
delete from emp10;
truncate table emp20;
delete和truncate区别:
(1). 操作行为上: delete逐条删除;truncate先摧毁,再 重建
(2). delete会产生碎片;truncate 不会
(3). delete不会释放空间;truncate会
(4). delete(DML语句)可以闪回;truncate(DDL语句)不能闪回
5.回滚
set feedback on
savepoint a;//创建保存点
rollback to savepoint a;//回退到保存点
commit;//提交事务
6.地址符(动态查询) &,主要是配合oracle的(/)执行上一条命令方便操作,例如插入几条数据,查询几个数据表
(1).insert 中使用:
insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno);
用于提示式输入要插入的数据
(2).在查询中使用地址符
select * from &t;
(3).查询某个列
其实插入的话,直接复制几条插入语句更方便。
查询的话还有些用。
7.分页
查询工资排名在3-5的员工信息:
(1)select * from (select rownum no,e.* from (select * from emp order by sal desc) e where rownum<=5) where no>=3;
(2)select * from (select rownum no,e.* from (select * from emp order by sal desc) e) where no>=3 and no<=5;
8.alter
1.更改字段名
alter table test1 rename column tname to username;
2.删除某字段
alter table test1 drop column image;
3.修改字段的属性
alter table test1 modify tname varchar2(40);
4.增加一个字段
alter table test1 add image blob;
5.增加一个gender字段的时候,在查询的时候会变成:
alter table stu add gender varchar2(4) check(gender in('男','女'));
SQL> desc stu;
名称 是否为空? 类型
----------------------------------------- -------- -------------
ID NOT NULL NUMBER(7)
NAME VARCHAR2(10)
DTIME DATE
GENDER VARCHAR2(4)
SQL> select * from stu;
ID NAME DTIME GEND
---------- ---------- -------------- ----
1 韩菱纱 01-8月 -14
3 霞 01-8月 -14 女
2 韩菱 01-8月 -14
SQL> select gend from stu;
select gend from stu
*
第 1 行出现错误:
ORA-00904: "GEND": 标识符无效
SQL> select gender from stu;
GEND
----
女