create table myemp as select * from emp; //此语句执行之后,会将表结构以及数据完整的复制出来,创建表emp就像那张临时表 添加数据: insert语句中,不插入和插入空值,效果是一样的,如果不插入,那么默认会填入空值 在sql中插入日期,如果是使用表中的固定好的格式,那么直接插固定格式的字符串 如果使用的不是固定好的格式,那么使用TO_DATE("2001-01-03",'yyyy-mm-dd'); 修改数据: update emp set comm = 100 where empno = '11'; 注意:增删改的数据,如果我们不去commit ,那么这些数据会被锁住,别人不能动他, 只有我们commit或者rollback之后,别人才能动 emp{empno,ename,job,mgr(雇员的领导的编号),hiredate,sal,comm,deptno} dept{deptno,dname,loc} salgrade{grade,losal,hisal} bonus{ename,job,sal,comm} delete清空数据 可以使用rollback回滚 truncate清空数据,不能回滚,会立即释放资源 truncate table 表名称 //这个不是对表结构修改,但是居然也使用了table 关键字,不过这个命令式Oracle自己的命令 Oracle中常用数据类型:NUMBER,VARCHAR,DATE VARCHAR,VARCHAR2 : 表示字符串,有长度限制,为255 NUMBER(n) 等效于INT, NUMBER(m,n)等效于FLOAT DATE CLOB : char large object : 大文本对象,最大存放4G的文本 BLOB: byte large object : 大二进制对象,最大存放4G,放非文本,如电影,mp3,图片 表的建立与删除 create table 表名称( 字段名称 字段类型 {default 默认值} ) create table 表名称 AS(子查询) 如果现在子查询写的是: select * from emp ;复制表结构以及表内容 如果现在子查询写的是:select * from emp where 1==2,加入了一个永远不可能成立的条件, 则此时表示只复制表结构,不复制表内容 创建一张person表: create table person( pid VARCHAR2(10), name VARCHAR2(200), age NUMBER(3), birthday DATE, sex VARCHAR2(2) DEFAULT '男' ); //表的创建语句和java的声明是相反的 删除表: drop table person; 修改表结构语法: alter table 表名称 add( pid VARCHAR2(10), name VARCHAR2(200) default '男' ) alter table 表名称 modify( pid VARCHAR2(5) DEFAULT '8888' ) //如果在修改表结构的时候,如果假设数据库中对应的字段里面有一个超过修改字段长度的数据,那么肯定无法实现 注意:对表结构的增删改: create table XX() , drop table XX alter table XX add () alter table XX modify() ALTER TABLE office_organization MODIFY(desc VARCHAR2(20) CONSTRAINT nn_desc NOT NULL) ; 为表重命名 在Oracle中才能使用的rename rename 旧的表名称 to 新的表名称 DB2数据库没有alter指令,DB2是最大型的数据,世界上有十个海量数据库其中7个就是DB2 现在有一张国家表,里面只有一个国家名称的字段,内容如下:"中国,美国,巴西,荷兰", 现在要求通过查询实现对战功能 中国---》美国 中国---》巴西 中国---》荷兰 美国---》中国 美国---》巴西 美国---》荷兰 问:此程序如何实现? create table conutry( name vatchar2(4) ) select c1.name ||'---->'||c2.name from country c1,country c2 where c1.name <>c2.name id----varchar2(4) name--varchar2(50) address---varchar2(50) 题目: 有某个学生运动会比赛信息的数据库,保存了如下的表: 运动员sport(运动员编号sporterid,运动员姓名name,运动员性别 sex,所属系号 department); 项目item (项目编号 itemid,项目名称itemname,项目比赛地点location) 成绩grade(运动员编号sportid,项目编号itemid,积分mark) 1.建表 (1)定义各个表的主码外码约束 (2)运动员的姓名和所属系别不能为空值 (3)积分要么为空,要么为6,4,2,0,分别代表一。二,三名和其他名次的积分 create table sporter( sporterid varchar2(128) , name varchar2(10) NOT NULL, sex varchar2(2), department varchar2(128) NOT NULL, constraint sport_sporterid_pk PRIMARY KEY(sporterid), constraint sport_sex_ck CHECK(sex IN ('男','女')) ) 项目item (项目编号 itemid,项目名称itemname,项目比赛地点location) create table item( itemid varchar2(128), itemname varchar2(50), location varchar2(128), CONSTRANINT item_itemid_pk PRIMARY KEY(itemid) ) 成绩grade(运动员编号sportid,项目编号itemid,积分mark) create table grade( sportid varchar2(128), itemid varchar2(128), mark NUMBER(1), CONSTRAINT sporter_grade_sportid_fk FORIGEN KEY(sportid) REFERENCES sport(sportid) ON DELETE CASCADE, CONSTRAINT item_grade_itemid_fk FOREIGEN KEY(itemid) REFERENCES item(itemid) ON DELETE CASCADE, CONSTRAINT grade_mark_ck CHECK(mark IN(6,4,2,0)) )