表的命名规则
表名和列名:
l 必须以字母开头
l 必须在 1–30个字符之间
l 必须只能包含 A–Z,a–z, 0–9, _, $, 和 #
l 必须不能和用户定义的其他对象重名
l 必须不能是Oracle 的保留字
l Oracle默认存储是都存为大写
l 数据库名只能是1~8位,datalink可以是128位,和其他一些特殊字符
数据类型
rowid 行地址(伪列)
例:select rowid,empno,ename from emp;
ROWID EMPNO ENAME
---------------------------- ----------
AAAM+mAAEAAAAAfAAA 7369 SMITH
AAAM+mAAEAAAAAfAAB 7499 ALLEN
AAAM+mAAEAAAAAfAAC 7521 WARD
AAAM+mAAEAAAAAfAAD 7566 JONES
AAAM+mAAEAAAAAfAAE 7654 MARTIN
AAAM+mAAEAAAAAfAAF 7698 BLAKE
AAAM+mAAEAAAAAfAAG 7782 CLARK
AAAM+mAAEAAAAAfAAH 7788 SCOTT
AAAM+mAAEAAAAAfAAI 7839 KING
AAAM+mAAEAAAAAfAAJ 7844 TURNER
AAAM+mAAEAAAAAfAAK 7876 ADAMS
ROWID EMPNO ENAME
---------------------------- ----------
AAAM+mAAEAAAAAfAAL 7900 JAMES
AAAM+mAAEAAAAAfAAM 7902 FORD
AAAM+mAAEAAAAAfAAN 7934 MILLER
创建表
例1:create table test1
2 (tidnumber,
3 tname varchar2(20),
4 hiredate date default sysdate); 可以指定默认值
例2:create table emp20 as select * from emp where1=2;(由于1不等于2,所以仅将表的结构赋予emp20)
create table emp20as select * from emp where 1=1;(条件为true的时候,不仅赋予表的结构,也拷贝数据)
例3:创建表:员工号 姓名 月薪 年薪 年收入 部门名称
写法:先写出查询语句,再加上create table 表明 as
SQL> createtable empincome
2 as
3 select e.empno,e.ename,e.sal,e.sal*12 annalsal,e.sal*12+nvl(comm,0)income,d.dname
4 fromemp e,dept d
5 where e.deptno=d.deptno;
修改表
例:添加一个照片列 altertable test1 add image blob;
例:修改tname 列的类型 altertable test1 modify tname varchar2(40);
删除表
例:droptable TESTSAVEPOINT;(这里这个表不会直接删除,会删除到oracle中的回收站)
drop table test1 purge;(这个就是不经过回收站直接删除)
查看回收站showrecyclebin
如果想在回收站中查看已经删除的表,需要在表的名字上加上双引号“”
例: select* from "BIN$0FFdKGHMRdyvUdnG/2g21Q==$0";
清空回收站purgerecyclebin;
注:管理员没有回收站
约束
check(检查性约束)
例: create table test2
2 (tidnumber,
3 tname varchar2(20),
4 gender varchar2(4) check (gender in ('男','女')), 只能是男或女
5 salnumber check (sal > 0)
6 );
但是在这个样创建后如果插入错误的值后报错会出现这样的错误,
ORA-02290: 违反检查约束条件 (SCOTT.SYS_C005523)
通过这个错误,我们无法定位到哪里插入错误了,所以我们要在添加约束后加上别名
例:create table student
2 (
3 sid number constraint student_PK primary key,
4 sname varchar2(20) constraintstudent_name_notnull not null,
5 email varchar2(20) constraintstudent_email_unique unique
6 constraintstudent_email_notnull not null,
7 age number constraint student_age_mincheck (age>20),
8 deptnonumber constraint student_FK referencesdept(deptno) ON DELETE CASCADE
9 );