oracle创建表与增删改

合集下载

Oracle表空间创建及表创建

Oracle表空间创建及表创建

Oracle表空间创建及表创建-- 创建表空间,(数据库⽂件)create tablespace db3datafile 'E:\tablespace\db3.dbf'size 1m-- 创建表空间,(数据库⽂件),指定数据⽂件在哪⼉多⼤扩容create tablespace db2datafile 'E:\tablespace\db2.dbf'size 1m autoextend on next 1m maxsize unlimited-- 查询表select * from user_tablespaces-- 删除表空间drop tablespace db3-- 删除表空间及删除内容和⽂件drop tablespace db3 including contents and datafiles-- 更改表的状态alter tablespace db3 read onlyalter tablespace db3 read write-- 创建⽤户,密码create user user1 identified by user1-- 删除⽤户drop user user1-- 创建⽤户,密码,同时更改默认表空间create user user1 identified by user1default tablespace db3-- 创建后更改密码,更改默认表空间alter user user1 identified by user2alter user user1 default tablespace db3-- 授权登录grant create session to user1-- 授予⽤户dba权限,管理员权限grant dba to user1-- 授予查询某个表权限grant select on scott.dept to user1-- 撤销权限revoke dba from user1revoke select on scott.dept from user1-- user1创建表create table student(id number,name varchar2(20),birthday date)create table student2(id number(1),name varchar2(20),birthday date)create table student3(id number(5),name varchar2(20),birthday date) -- number默认number(5)-- 查表select * from user_tablesselect * from scott.dept -- 查询其他⽤户的表select * from user_tab_colsselect * from user_tab_cols where table_name='STUDENT' -- 要和表中相同为⼤写select * from user_tab_columns -- 和select * from user_tab_cols基本⼀样,少了⼏项-- 删表drop table student2-- 增、改、删表中字段使⽤ ()或者columnalter table student add chengji varchar2(10)alter table student add (math number(1),english number(1)) -- 增加多个字段需⽤括号()alter table student add (chengji2 varchar2(10)) -- 增统⼀都使⽤()alter table student rename (chengji to remark) -- xxalter table student rename column chengji to remark -- 改需使⽤关键字columnalter table student drop column chengji2 -- 删需使⽤关键字columnalter table student drop (english) -- 删使⽤()也⾏-- 注释comment on table student is '学⽣表'comment on column student.id is '编号'。

oracle 视图的增删改查操作举例

oracle 视图的增删改查操作举例

oracle 视图的增删改查操作举例oracle视图创建和操作创建简单复杂的视图创建基表不存在的视图视图增删改查看视图的结构关键字: oracle视图创建操作简单复杂基表不存在增删改插入修改删除查看结构视图的概念视图是基于一张表或多张表或另外一个视图的逻辑表。

视图不同于表视图本身不包含任何数据。

表是实际独立存在的实体是用于存储数据的基本结构。

而视图只是一种定义对应一个查询语句。

视图的数据都来自于某些表这些表被称为基表。

通过视图来查看表就像是从不同的角度来观察一个或多个表。

视图有如下一些优点可以提高数据访问的安全性通过视图往往只可以访问数据库中表的特定部分限制了用户访问表的全部行和列。

简化了对数据的查询隐藏了查询的复杂性。

视图的数据来自一个复杂的查询用户对视图的检索却很简单。

一个视图可以检索多张表的数据因此用户通过访问一个视图可完成对多个表的访问。

视图是相同数据的不同表示通过为不同的用户创建同一个表的不同视图使用户可分别访问同一个表的不同部分。

视图可以在表能够使用的任何地方使用但在对视图的操作上同表相比有些限制特别是插入和修改操作。

对视图的操作将传递到基表所以在表上定义的约束条件和触发器在视图上将同样起作用。

视图的创建创建视图需要CREAE VIEW系统权限视图的创建语法如下CREATE OR REPLACE FORCENOFORCE VIEW 视图名别名1别名 2... AS 子查询WITH CHECK OPTION CONSTRAINT 约束名WITH READ ONL Y 其中OR REPLACE 表示替代已经存在的视图。

FORCE表示不管基表是否存在创建视图。

NOFORCE表示只有基表存在时才创建视图是默认值。

别名是为子查询中选中的列新定义的名字替代查询表中原有的列名。

子查询是一个用于定义视图的SELECT 查询语句可以包含连接、分组及子查询。

WITH CHECK OPTION表示进行视图插入或修改时必须满足子查询的约束条件。

ORACLE触发器记录对表的INSERT和UPDATE及DELETE操作

ORACLE触发器记录对表的INSERT和UPDATE及DELETE操作

ORACLE触发器实现记录对表的INSERT、UPDATE、DELETE操作创建表建立测试源表EMP1CREATE TABLE EMP1 AS SELECT * FROM SCOTT.EMP;这样可以建立一个带有一定测试数据的EMP1表建立修改日志表:-- Create tablecreate table MODI_EMP1_LOG(modi_time TIMESTAMP(6),table_id VARCHAR2(20),empno VARCHAR2(20),modi_type VARCHAR2(20),empname_old VARCHAR2(20),empname_new VARCHAR2(20),data_date DATE);-- Add comments to the tablecomment on table MODI_EMP1_LOGis '修改EMP1表日志表';-- Add comments to the columnscomment on column MODI_EMP1_LOG.modi_timeis '修改时间';comment on column MODI_EMP1_LOG.table_idis '修改的表名';comment on column MODI_EMP1_LOG.empnois '修改的员工号';comment on column MODI_EMP1_LOG.modi_typeis '修改类型';comment on column MODI_EMP1_LOG.empname_oldis '修改前的员工名';comment on column MODI_EMP1_LOG.empname_newis '修改后的员工名';comment on column MODI_EMP1_LOG.data_dateis '修改日期';创建触发器CREATE OR REPLACE TRIGGER MODI_EMP1_1BEFORE UPDATE OR INSERT OR DELETE ON EMP1REFERENCING NEW AS NEW OLD AS OLDFOR EACH ROW--DECLARE MODITIME TIMESTAMP;--TABLEID VARCHAR2(20);--MODI_TYPE VARCHAR2(20);--DATA_DATE DATE;BEGIN--SELECT SYSDATE INTO MODITIME FROM DUAL;--SELECT 'EMP1' INTO TABLEID FROM DUAL;--SELECT 'UPDATE' INTO MODI_TYPE FROM DUAL;--SELECT TRUNC(SYSDATE) INTO DATA_DATE FROM DUAL;IF UPDATING THENIF :OLD.ENAME<>:NEW.ENAME THENINSERT INTO MODI_EMP1_LOGVALUES(SYSDATE,'EMP1',:OLD.EMPNO,'UPDATE',:OLD.ENAME,:NEW.ENAME,TRUNC(SYSDATE));--INSERT INTO MODI_EMP1_LOGVALUES(MODITIME,TABLEID,:NEW.EMPNO,MODI_TYPE,:OLD.ENAME,:NEW.ENAME,DATA_DATE);END IF;END IF;IF INSERTING THENINSERT INTO MODI_EMP1_LOGVALUES(SYSDATE,'EMP1',:NEW.EMPNO,'INSERT',NULL,:NEW.ENAME,TRUNC(SYSDATE));END IF;IF DELETING THENINSERT INTO MODI_EMP1_LOGVALUES(SYSDATE,'EMP1',:OLD.EMPNO,'DELETE',:OLD.ENAME,NULL,TRUNC(SYSDATE));END IF;END;测试select * from MODI_EMP1_LOG;insert into emp1 values(8888,'test','tjob',9999,date'2018-07-10',9999,8888,66);commit;select * from MODI_EMP1_LOG;delete from emp1 where empno=8888;commit;select * from MODI_EMP1_LOG;。

OracleDDL语句及基本操作

OracleDDL语句及基本操作

OracleDDL语句及基本操作DDL语句create、alter、drop、truncate数据定义 (DDL) 部分⼀、create语句基本语法:CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)常⽤的字段类型有CHAR 固定长度的字符串VARCHAR2 可变长度的字符串NUMBER (M,N) 数字型M是位数总长度, N是⼩数的长度DATE ⽇期类型INT 整数型创建表时要把较⼩的不为空的字段放在前⾯, 可能为空的字段放在后⾯,创建表时可以⽤中⽂的字段名, 但最好还是⽤英⽂的字段名,创建表时可以给字段加上默认值, 例如 DEFAULT SYSDATE这样每次插⼊和修改时, 不⽤程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如:不允许重复 UNIQUE , 主键 PRIMARY KEY ,外键Foreign key⼆、alter语句语法 ALTER (改变表, 索引, 视图等)1.改变表名ALTER TABLE 表名1 TO 表名2;2.增加字段ALTER TABLE表名 ADD 字段名(列)字段名描述;增加⼀列ALTER TABLE table_name ADD column_1 DATE NOT NULL;ALTER TABLE table_name ADD column_2 VARCHAR2(44) DEFAULT '';ALTER TABLE table_name ADD column_3 number(28,10);增加多列ALTER TABLE table_nameADD (column_1 type constraint,--列名类型约束column_2 type constraint,...);3.删除字段删除⼀列ALTER TABLE table_name DROP COLUMN column_name;删除多列ALTER TABLE table_name DROP (column_1,column_2,...);4.修改表⾥字段的定义描述ALTER TABLE表名 MODIFY 字段名字段名描述;5.给表⾥的字段加上约束条件ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (字段名);ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (字段名);5.把表放在或取出数据库的内存区ALTER TABLE 表名 CACHE;ALTER TABLE 表名 NOCACHE;三、drop语句基本语法:DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)删除表和它所有的约束条件DROP TABLE 表名 CASCADE CONSTRAINTS四、 TRUNCATE (清空表⾥的所有记录, 保留表的结构)TRUNCATE 表名;。

oracle 数据库 alter table的用法

oracle 数据库 alter table的用法

oracle 数据库alter table的用法(经典)首先说一下最简单的Oracle alter table的命令吧,如下:--增加字段alter table tablename add column fieldname varchar2(2) 或者alter table tablename add(fieldname clob)-- 删除字段alter table tablename drop column fieldname-- 修改字段(修改字段名字) alter table tablename rename column oldfield to newfield(修改字段大小) alter table tablename modify fieldname varchar2(2000) 今天在修改一个表记录中的某个字段的时候,这个表的字段为clob类型,而且数据已经有很多了,我想要把这个clob修改成varchar2(4000)于是我心想这个简单,我就直接用命令alter table tablename modify filedname varchar2(4000) 心想这也很快就可以结果问题,结果令我一想不到的错误产生,原来不同类型之间需要转换的时候,只操作这也的语句是不行,查了一些资料终于结果问题了,解决命令如下:首先要在修改的表中,先新建一个字段:alter table tablename add newfield varchar2(4000);其次就是给这个新增的字段赋值(即把原来的clob字段的值给这个新的字段,一个需要特别注意的如果新增的字段中接受的值要是大于4000的话,会移植失效),执行命令如下:update tablename setnewfield=dbms_lob.substr(oldfield,1,dbms_lob.getLength(oldfield));当以上命令执行成功后,查看表是否有数据导入到新的字段中后,然后在drop掉之前的oldfield字段(即clob字段),alter table tablename drop column oldfield;如果想要把这个新增的字段换成旧字段则要执行:alter table tablename rename column oldfield to newfield ;至此问题解决了!!!。

create table建表语句oracle

create table建表语句oracle

在Oracle数据库中,可以使用`CREATE TABLE`语句来创建表。

下面是创建表的基本语法:CREATE TABLE table_name
(
column1 datatype [constraint],
column2 datatype [constraint],
column3 datatype [constraint],
...
);
其中,`table_name`是要创建的表的名称,`column1`, `column2`, `column3`, ... 是表的列名,`datatype` 是列的数据类型,`constraint` 是可选项,用于定义列的约束条件(如主键、唯一性约束、外键等)。

以下是一个示例,创建一个名为"employees" 的表,其中包含"id"、"name" 和"salary" 列:CREATE TABLE employees
(
id INT PRIMARY KEY,
name VARCHAR(50),
salary DECIMAL(10, 2)
);
在上述示例中,"id" 列被定义为主键列,"name" 列使用`VARCHAR` 数据类型并指定最大长度为50,"salary" 列使用`DECIMAL` 数据类型,并指定总长度为10,小数位数为2。

你可以根据实际需求自定义表的列名、数据类型和约束条件。

请注意,这只是创建表的基本语法,还可以使用其他选项和功能来定义表的结构和属性。

如有需要,请参考Oracle文档以获取更详细的信息。

oracle 创建方法

oracle 创建方法

oracle 创建方法Oracle是目前市场上最强大的数据库管理系统之一,其提供了多种创建方法来方便数据库管理员和开发人员创建和管理数据库对象。

本文将介绍Oracle数据库中要点的创建方法,包括创建表、索引、视图、存储过程和触发器等。

1. 创建表创建表是Oracle中最基础和重要的操作之一,下面是创建表的语法:CREATE TABLE table_name ( column1 datatype[ NULL | NOT NULL ], column2 datatype [ NULL | NOT NULL ], ... );其中table_name是所需创建的表的名称,datatype是数据类型,column1、column2等代表表中的每个列名。

在方括号内 [ ] 的是可选项,NULL标识该列允许为空,而NOT NULL标识该列必须填写数据值。

2. 创建索引索引是Oracle中重要的数据结构,在查询中可以大幅提升查询效率。

下面是Oracle创建索引的语法:CREATE INDEX index_name ON table_name (column1, column2, ...);其中index_name是所创建的索引名称,table_name 是索引建立的表名称,(column1, column2, ...)指所索引的列名称,多个列之间用逗号分隔。

3. 创建视图视图是数据库中一种虚拟表格,不是实际存在于数据库中的表,其目的是为了简化数据查询操作,特别是在复杂的查询时。

下面是Oracle创建视图的语法:CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;其中view_name是创建的视图名称,SELECT语句是视图显示的列和所需的表名,WHERE语句是视图条件过滤设置。

4. 创建存储过程存储过程是一段提前定义好的SQL语句集合,可重复执行。

Oracle创建表语句(Createtable)语法详解及示例

Oracle创建表语句(Createtable)语法详解及示例

Oracle创建表语句(Createtable)语法详解及⽰例创建表(Create table)语法详解1. ORACLE常⽤的字段类型ORACLE常⽤的字段类型有VARCHAR2 (size) 可变长度的字符串, 必须规定长度CHAR(size) 固定长度的字符串, 不规定长度默认值为1NUMBER(p,s) 数字型p是位数总长度, s是⼩数的长度, 可存负数最长38位. 不够位时会四舍五⼊.DATE ⽇期和时间类型LOB 超长字符, 最⼤可达4GCLOB 超长⽂本字符串BLOB 超长⼆进制字符串BFILE 超长⼆进制字符串, 保存在外的⽂件⾥是只读的.数字字段类型位数及其四舍五⼊的结果原始数值1234567.89数字字段类型位数存储的值Number 1234567.89Number(8) 12345678Number(6) 错Number(9,1) 1234567.9Number(9,3) 错Number(7,2) 错Number(5,-2) 1234600Number(5,-4) 1230000Number(*,1) 1234567.92. 创建表时给字段加默认值和约束条件创建表时可以给字段加上默认值例如 : ⽇期字段 DEFAULT SYSDATE这样每次插⼊和修改时, 不⽤程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如: ⾮空 NOT NULL不允许重复 UNIQUE关键字 PRIMARY KEY按条件检查 CHECK (条件)外键 REFERENCES 表名(字段名)3. 创建表的例⼦CREATE TABLE DEPT(EPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,DNAME VARCHAR2(14),LOC VARCHAR2(13)) ;CREATE TABLE region(ID number(2) NOT NULL PRIMARY KEY,postcode number(6) default '0' NOT NULL,areaname varchar2(30) default ' ' NOT NULL);4. 创建表时的命名规则和注意事项1)表名和字段名的命名规则:必须以字母开头,可以含符号A-Z,a-z,0-9,_,$,#2)⼤⼩写不区分3)不⽤SQL⾥的保留字, ⼀定要⽤时可⽤双引号把字符串括起来.4)⽤和实体或属性相关的英⽂符号长度有⼀定的限制注意事项:1)建表时可以⽤中⽂的字段名, 但最好还是⽤英⽂的字段名2)创建表时要把较⼩的不为空的字段放在前⾯, 可能为空的字段放在后⾯3)建表时如果有唯⼀关键字或者唯⼀的约束条件,建表时⾃动建了索引4)⼀个表的最多字段个数也是有限制的,254个.5. 约束名的命名规则和语法约束名的命名规则约束名如果在建表的时候没有指明,系统命名规则是SYS_Cn(n是数字)约束名字符串的命名规则同于表和字段名的命名规则6. 使⽤约束时的注意事项约束⾥不能⽤系统函数,如SYSDATE和别的表的字段⽐较可以⽤本表内字段的⽐较想在事务处理后, 做约束的检查SQL> alter session set constraints deferred.7. 由实体关系图到创建表的例⼦ s_dept前提条件:已有region表且含唯⼀关键字的字段idSQL> CREATE TABLE s_dept(id NUMBER(7)CONSTRAINT s_dept_id_pk PRIMARY KEY,name VARCHAR2(25)CONSTRAINT s_dept_name_nn NOT NULL,region_id NUMBER(7)CONSTRAINT s_dept_region_id_fk REFERENCES region (id),CONSTRAINT s_dept_name_region_id_uk UNIQUE(name, region_id));8. 较复杂的创建表例⼦SQL> CREATE TABLE s_emp(id NUMBER(7)CONSTRAINT s_emp_id_pk PRIMARY KEY,last_name VARCHAR2(25)CONSTRAINT s_emp_last_name_nn NOT NULL,first_name VARCHAR2(25),userid VARCHAR2(8)CONSTRAINT s_emp_userid_nn NOT NULLCONSTRAINT s_emp_userid_uk UNIQUE,start_date DATE DEFAULT SYSDATE,comments VARCHAR2(25),manager_id NUMBER(7),title VARCHAR2(25),dept_id NUMBER(7)CONSTRAINT s_emp_dept_id_fk REFERENCES s_dept(id),salary NUMBER(11,2),commission_pct NUMBER(4,2)CONSTRAINT s_emp_commission_pct_ck CHECK(commission_pct IN(10,12.5,15,17.5,20)));8. 通过⼦查询建表通过⼦查询建表的例⼦SQL>CREATE TABLE emp_41 AS SELECT id, last_name, userid, start_dateFROM s_emp WHERE dept_id = 41;SQL> CREATE TABLE A as select * from B where 1=2;只要表的结构.10. ⽤⼦查询建表的注意事项1)可以关连多个表及⽤集合函数⽣成新表,注意选择出来的字段必须有合法的字段名称,且不能重复。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

-- 数据准备:创建工资等级表 CREATE TABLE salgrade_test ( grade NUMBER (2), lowsal NUMBER (7, 2), hisal NUMBER (7, 2) );

-- 查看工资等级表结构 DESC salgrade;

-- 查看工资等级表数据 SELECT * FROM salgrade_test;

-- 插入数据 INSERT INTO salgrade_test VALUES (1, 10001, 99999);

INSERT INTO salgrade_test VALUES (2, 8001, 10000);

INSERT INTO salgrade_test VALUES (3, 6001, 8000);

INSERT INTO salgrade_test VALUES (4, 4001, 6000);

INSERT INTO salgrade_test VALUES (5, 1, 4000);

-- 计算员工的薪水等级 SELECT NAME, salary, grade FROM emp_test, salgrade_test WHERE emp_test.salary BETWEEN salgrade_test.lowsal AND salgrade_test.hisal;

-- ------------------------------------------------------ SELECT NAME, salary, grade FROM emp_test FULL JOIN salgrade_test ON emp_test.salary BETWEEN salgrade_test.lowsal AND salgrade_test.hisal;

-- 复制表:只复制结构 , 不复制数据 CREATE TABLE salgrade_copy AS ( SELECT * FROM salgrade_test WHERE 1 <> 1 );

SELECT * FROM salgrade_copy;

-- 复制表:复制一部分数据----通过设置别名的方式 , 指定新表中的列名(year_sal) CREATE TABLE emp_test_copy AS ( SELECT emp_id, NAME, salary * 12 year_sal FROM emp_test WHERE dept_test_id = 10 );

SELECT * FROM emp_test_copy;

-- 复制表:复制一部分数据 -- 新表中的列名 CREATE TABLE emp_count (did, emp_num) AS ( SELECT dept_test_id, COUNT (*) FROM emp_test GROUP BY dept_test_id );

SELECT * FROM emp_count;

-- 创建一个同 emp 表结构相同的空表 , 将部门号为 10 的员工信息放入该表 -- 如果有一张表 emp 的数据量为一百万条 , 此时需要建立 1 张测试表只放入少量测试数据( 如 100条 ) , 执行步骤如下所示: -- 第 1 步 创建一个空表 CREATE TABLE emp_copy AS ( SELECT * FROM emp_test WHERE 1 <> 1 );

-- 第 2 步 揑入少量测试数据 INSERT INTO emp_copy ( SELECT * FROM emp_test WHERE dept_test_id = 10 );

SELECT * FROM emp_copy;

-- 把表中的数据换为部门 20 和 30 的员工记录 DELETE FROM emp_copy;

INSERT INTO emp_copy ( SELECT * FROM emp_test WHERE dept_test_id IN (20, 30) );

SELECT * FROM emp_copy;

-- 向新表中揑入指定记录数的数据,比如前 8 条 DELETE FROM emp_copy;

INSERT INTO emp_copy ( SELECT * FROM emp_test WHERE ROWNUM <= 8 );

SELECT * FROM emp_copy;

-- update( 更新数据 ) ** -- 语法结构: -- update 表名 set 列名 = 新的列值 , -- 列名 = 新的列值. -- …. -- where 条件; -- 注意: --  更新( update )数据表时 , 注意条件 , 如果丌加条件 , 修改的是全部表记录 --  rollback 回退 , commit 确认 -- 将员工号为 1012 的员工薪水改为 3500 , 职位改为 Programmer UPDATE emp_test SET salary = 3500, JOB = 'Programmer' WHERE emp_id = 1012;

SELECT * FROM emp_test;

-- 部门 10 的员工薪水+1000 UPDATE emp_test SET salary = salary + 3500 WHERE dept_test_id = 10;

SELECT * FROM emp_test;

-- delete( 删除数据 ) ** -- 语法结构: -- delete [from] 表名 where 条件 ; -- 注意: --  如果删除语句中丌加 where 条件 , 将删掉表中的全部记录 --  rollback 回退 , commit 确认 --  drop table 会删除表结构和数据 ;truncate 删除表数据 , 保留表结构。Drop 和 truncate 都 -- 不可以回退。 delete 仅删除数据 , 可以回退 -- 创建表 emp_bak2 , 只存放不重复的记录 CREATE TABLE emp_copy2 AS ( SELECT * FROM emp_test WHERE 1 <> 1 ); -- 如下语句执行 3 遍 , 揑入 3 条重复数据 INSERT INTO emp_copy2 (emp_id, NAME, salary) VALUES (1015, 'amy', 4000);

-- 如下语句执行 2 遍 , 揑入 2 条重复数据 INSERT INTO emp_copy2 (emp_id, NAME, salary) VALUES (1016, 'rory', 5000);

-- 如下语句执行 1 遍 , 揑入 1 条数据 INSERT INTO emp_copy2 (emp_id, NAME, salary) VALUES (1017, 'river', 6000);

SELECT * FROM emp_copy2;

-- 创建表 emp_copy3 , 只存放不重复的记录 , 利用 distinct 关键字 CREATE TABLE emp_copy3 AS SELECT DISTINCT * FROM emp_copy2;

SELECT * FROM emp_copy3;

-- -- 将表改名语法区别:Oracle:RENAME tablename TO newtablename;; mysql:RENAME TABLE tablename TO newtablename; -- 把 emp_copy3 改名为 emp_bak4 RENAME emp_copy3 TO emp_bak4;

-- 把 emp_bak4 改名为 emp_copy3 RENAME emp_bak4 TO emp_copy3;

--删除重复数据 DELETE FROM emp_copy2 WHERE ROWID NOT IN ( SELECT MAX (ROWID) FROM emp_copy2 GROUP BY emp_id, NAME, salary );

--子查询:查询出 empno , ename , salary 相同的 rowid 最大的记录

相关文档
最新文档