SQL> / SQL> 对于表的操作: 创建表,修改表(添加新的列,改变当前某些列,删除列),删除表 SQL> 创建表: create table(需要create table的权限) SQL> 修改表: alter table tablename add/modify/drop SQL> 删除表:drop table tablename SQL> / SQL> show user; USER 为 "SCOTT" SQL> --访问hr用户下的表 SQL> select from hr.employees; select from hr.employees 第 1 行出现错误: ORA-00942: 表或视图不存在 SQL> --测试defaul值 SQL> create table test1 2 (tid number, 3 tname varchar(20), 4 hiredate date default sysdate); 表已创建。 SQL> insert into test1(tid,tname) values(1,'Mary'); 已创建 1 行。 SQL> select from test1; TID TNAME HIREDATE ---------- -------------------- -------------- 1 Mary 12-6月 -11 SQL> --rowid rownum都是伪列 SQL> select rowid,rownum,empno from emp; ROWID ROWNUM EMPNO ------------------ ---------- ---------- AAANA2AAEAAAAAsAAT 1 1122 AAANA2AAEAAAAAsAAO 2 1234 AAANA2AAEAAAAAsAAP 3 1235 AAANA2AAEAAAAAsAAQ 4 2222 AAANA2AAEAAAAAsAAR 5 2345 AAANA2AAEAAAAAsAAS 6 2346 AAANA2AAEAAAAAsAAA 7 7369 AAANA2AAEAAAAAsAAB 8 7499 AAANA2AAEAAAAAsAAC 9 7521 AAANA2AAEAAAAAsAAD 10 7566 AAANA2AAEAAAAAsAAE 11 7654 ROWID ROWNUM EMPNO ------------------ ---------- ---------- AAANA2AAEAAAAAsAAF 12 7698 AAANA2AAEAAAAAsAAG 13 7782 AAANA2AAEAAAAAsAAH 14 7788 AAANA2AAEAAAAAsAAI 15 7839 AAANA2AAEAAAAAsAAJ 16 7844 AAANA2AAEAAAAAsAAK 17 7876 AAANA2AAEAAAAAsAAL 18 7900 AAANA2AAEAAAAAsAAM 19 7902 AAANA2AAEAAAAAsAAN 20 7934 已选择20行。 SQL> --rowid:oracle维护一个地址,该地址指向了该行在硬盘上实际存储的位置 SQL> --关于varchar2和char SQL> create table testchar 2 ( c char(5), 3 v varchar(5)); 表已创建。 SQL> insert into testchar values('a','b'); 已创建 1 行。 SQL> select from testchar; C V ----- ----- a b SQL> select concat(c,'#'),concat(v,'#') from testchar; CONCAT CONCAT ------ ------ a # b# SQL> --添加新列 SQL> alter table testchar 2 add hiredate date; 表已更改。 SQL> desc testchar; 名称 是否为空? 类型 ----------------------------------------------------------------- -------- -------------------------------------------- C CHAR(5) V VARCHAR2(5) HIREDATE DATE SQL> --修改表 SQL> alter table testchar 2 modify c char(10); 表已更改。 SQL> desc testchar; 名称 是否为空? 类型 ----------------------------------------------------------------- -------- -------------------------------------------- C CHAR(10) V VARCHAR2(5) HIREDATE DATE SQL> --删除列 SQL> alter table testchar 2 drop hiredate; drop hiredate 第 2 行出现错误: ORA-00905: 缺失关键字 SQL> ed 已写入 file afiedt.buf 1 alter table testchar 2 drop column hiredate SQL> / 表已更改。 SQL> desc testchar; 名称 是否为空? 类型 ----------------------------------------------------------------- -------- -------------------------------------------- C CHAR(10) V VARCHAR2(5) SQL> host cls SQL> --删除表 SQL> select from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- DEPT TABLE EMP TABLE BONUS TABLE SALGRADE TABLE EMP10 TABLE EMP101 TABLE TEST1 TABLE BIN$gNM24ey8RKW0vjhtZ7ZFsA==$0 TABLE TESTDELETE TABLE TESTCHAR TABLE 已选择10行。 SQL> drop table testdelete; 表已删除。 SQL> select from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- DEPT TABLE EMP TABLE BONUS TABLE SALGRADE TABLE EMP10 TABLE EMP101 TABLE TEST1 TABLE BIN$gNM24ey8RKW0vjhtZ7ZFsA==$0 TABLE TESTCHAR TABLE BIN$aJrS9iffT4O1GcD0H3fepg==$0 TABLE 已选择10行。 SQL> --使用purge参数彻底删除表 SQL> drop table test1 purge; 表已删除。 SQL> select from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- DEPT TABLE EMP TABLE BONUS TABLE SALGRADE TABLE EMP10 TABLE EMP101 TABLE BIN$gNM24ey8RKW0vjhtZ7ZFsA==$0 TABLE TESTCHAR TABLE BIN$aJrS9iffT4O1GcD0H3fepg==$0 TABLE 已选择9行。 SQL> --oracle的回收站 SQL> --查看回收站 SQL> show recyclebin; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- TESTDELETE BIN$aJrS9iffT4O1GcD0H3fepg==$0 TABLE 2011-06-12:15:43:34 TESTDELETE BIN$gNM24ey8RKW0vjhtZ7ZFsA==$0 TABLE 2011-06-12:14:51:43 SQL> --清空回收站 SQL> purge recyclebin; 回收站已清空。 SQL> show recyclebin; SQL> --关于约束: SQL> --创建一个表,包含所有约束 SQL> create table myuser 2 ( userID number constraint pk primary key, 3 username varchar2(20) constraint c_name not null, 4 gender varchar2(2) constraint c_gender check (gender in ('男','女')), 5 email varchar2(20) constraint c_email1 not null 6 constraint c_email2 unique 7 deptno number constraint fk refereneces dept(deptno) 8 ); deptno number constraint fk refereneces dept(deptno) 第 7 行出现错误: ORA-00907: 缺失右括号 SQL> create table myuser 2 ( userID number constraint pk primary key, 5 email varchar2(20) constraint c_email1 not null 6 constraint c_email2 unique, 7 deptno number constraint fk refereneces dept(deptno) 8 ); deptno number constraint fk refereneces dept(deptno) 第 7 行出现错误: ORA-02253: 此处不允许约束条件说明 SQL> ed 已写入 file afiedt.buf 1 create table myuser 2 ( userID number constraint pk primary key, 7 deptno number constraint fk references dept(deptno) 8 ) SQL> / 表已创建。 SQL> desc myuser; 名称 是否为空? 类型 ----------------------------------------------------------------- -------- -------------------------------------------- USERID NOT NULL NUMBER USERNAME NOT NULL VARCHAR2(20) GENDER VARCHAR2(2) EMAIL NOT NULL VARCHAR2(20) DEPTNO NUMBER SQL> insert into myuser values(1,'Tom','男','ddd@126.com',10); 已创建 1 行。 SQL> insert into myuser values(1,10); insert into myuser values(1,10)
第 1 行出现错误: ORA-00001: 违反唯一约束条件 (SCOTT.PK) SQL> insert into myuser values(2,'啊','ddd@126.coddm',10); insert into myuser values(2,10) * 第 1 行出现错误: ORA-02290: 违反检查约束条件 (SCOTT.C_GENDER) SQL> --触发器也可以检查数据的正确与否 SQL> spool off
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|