精华内容
下载资源
问答
  • 5.TRUNCATE TABLE 的对象必须是本模式下的,或者有drop any table的权限 而DELETE 则是对象必须是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的权限 二、 truncate是DDL語言. delete是DML語...

    转自:http://www.examw.com/Oracle/jishu/104237/
      DELETE (删除数据表里记录的语句)

      语法:DELETE FROM表名 WHERE 条件;

      注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.

      如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用的数据块表空间

      语法:TRUNCATE TABLE 表名; //此操作不可回退.

      相同点

      truncate和不带where子句的delete, 以及drop都会删除表内的数据

      注意:这里说的delete是指不带where子句的delete语句

      不同点:

      1. truncate和 delete只删除数据不删除表的结构(定义)

      drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.

      2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.

      truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.

      3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动

      显然drop语句将表所占用的空间全部释放

      truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;   truncate会将高水线复位(回到最开始).

      4.速度,一般来说: drop>; truncate >; delete

      5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及

      使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.

      想删除表,当然用drop

      想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.

      如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据

      oracle中删除表中的一列语句

      alter table 表名 drop colum 列名

    转自:http://blog.csdn.net/wangcheng8080/article/details/2793903
    方法一:
        DELETE FORM tb_channel a WHERE a.rowid IN
                    (SELECT MAX(b.rowid) FROM tb_channle b
        WHERE a.policyno=b.policyno AND a.classcode=b.classcode);
    --这一办法在数据记录超过10万时一般都会变得很慢。

    方法二:
    --建立临时表,--清空原表,--插回原表,如下例:
        CREATE TABLE temp_emp as (SELECT DISTINCT * FROM employee) ;
        truncate table employee;
        INSERT INTO employee SELECT * FROM temp_emp;
    ——这一办法适用于较大的表的情况。因为是块操作,对应于大表效率会好很多。

    方法三:
    --建立新表,--去重复放入,--删除原表,如下例:
        SELECT DISTINCT * INTO new_table FROM old_table
        ORDER BY primary_key
        DROP TABLE old_table
        EXEC sp_rename new_table,old_table;
    ——这一办法适用于较大的表的情况。因为是块操作,对应于大表效率会好很多。

    ---------------------------------------------
    truncate table 与 delete tabel的区别

    一、
    1.delete产生rollback,如果删除大数据量的表速度会很慢,同时会占用很多的rollback segments,truncate是DDL操作,不产生rollback,速度快一些。
      
    2.不从tablespace中腾出空间,需要 ALTER TABLESPACE AAA COALESCE; 才有空间
      
    3.truncate调整high water mark 而delete不.truncate之后,TABLE的HWM退回到 INITIAL和NEXT的位置(默认),delete 则不可以。
      
    4.truncate 只能对table,delete 可以是table,view,synonym
      
    5.TRUNCATE TABLE 的对象必须是本模式下的,或者有drop any table的权限 而DELETE 则是对象必须是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的权限

    二、
    truncate是DDL語言.
    delete是DML語言

    DDL語言是自動提交的.命令完成就不可回滾.
    truncate的速度也比delete要快得多. 所以,delete 后要commit work,而truncate就不需要啦。

    三、
    truncate 会把 highwatermark 回归至 0 ... 当下一次再插入新资料时就会快一些啦。
    所以一般都是在 temp table 上使用的,不过要注意就是 truncate 不能在 pl/sql 上使用,要用 dynamic SQL 才可以。

    四、
    当你不再需要该表时, 用 drop;
    当你仍要保留该表,但要删除所有记录时, 用truncate;
    当你要删除部分记录时(always with a WHERE clause), 用 delete.

    五、
    TRUNCATE TABLE Index也會刪掉不是指drop index

    展开全文
  • 修改oracle表语句

    2011-07-18 08:41:35
    增加字段alter table add (column_name DataType,...);修改字段alter table modify(column_name DataType,...);删除字段alter table drop(column_name,...);免费奉送一条
     

     
    增加字段
    alter table add (column_name DataType,...);
    修改字段
    alter table modify(column_name DataType,...);
    删除字段
    alter table drop(column_name,...);

    免费奉送一条:
    改约束的:
    alter table a(al varchar2(2) null)
    alter table a(al varchar2(2) not null)
    不过改为非空时注意处理已经存在的空值。

    展开全文
  • mysql修改字段长度: ...alter table 表名 drop primary key; 新加主键 Alter table 表名 add primary key(主键id); 增加表字段 alter table fee_item_type add change_flag varchar(5) DEFAULT NULL COMMENT '应收

    mysql修改字段长度:

    alter table 表名 MODIFY column 字段名 VARCHAR(800) DEFAULT NULL COMMENT '字段说明.';
    

    删除主键

    alter table 表名 drop primary key;
    

    新加主键

    Alter table 表名 add primary key(主键id);
    

    增加表字段

    alter table fee_item_type add change_flag varchar(5) DEFAULT NULL COMMENT '字段说明';
    

    序列创建语句-- isCycle='false 不循环 value 代表初始值,max代表最大值 中间代表那个值随意 可以不更改

    seqop @@addseq name='SEQ_ORG_LOGIN_LIMIT_ID' and value='10000000000000' and increment='1000' and max='99999999999999' and isCycle='false';
    

    查询表的字段信息

    desc 表名称;
    

    修改某个表的字段类型及指定为空或非空

    alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空];
    alter table 表名称 modify 字段名称 字段类型 [是否允许非空];
    

    修改某个表的字段名称及指定为空或非空

    alter table 表名称 change 字段原名称 字段新名称 字段类型 [是否允许非空];
    例如:
    修改表expert_info中的字段birth,允许其为空
    alter table expert_info change birth birth varchar(20) null;
    

    查看死锁(mysql):

    show PROCESSLIST
    

    查看执行计划(mysql):

    EXPLAIN
    

    添加表字段

    alter table table1 add transactor varchar(10) not Null;
    alter table   table1 add id int unsigned not Null auto_increment primary key
    

    修改某个表的字段类型及指定为空或非空

    alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空];
    alter table 表名称 modify 字段名称 字段类型 [是否允许非空];
    alter table 表名称 modify 字段名称 字段类型 [是否允许非空];
    

    修改某个表的字段名称及指定为空或非空

    alter table 表名称 change 字段原名称 字段新名称 字段类型 [是否允许非空
    

    删除某一字段

    ALTER TABLE mytable DROP 字段 名;
    

    添加唯一键

    ALTER TABLE test2 ADD UNIQUE ( userid)
    

    修改主键

    ALTER TABLE test2 DROP PRIMARY KEY ,ADD PRIMARY KEY ( id )
    

    增加索引

    ALTER TABLE `表名` ADD INDEX index_name ( `column` )    //索引规范:idx_
    
    展开全文
  • 从网上搜的,一点一点加吧。 -----------设置事务全部回滚----------------- SET XACT_ABORT ON BEGIN BEGIN TRY ...---------------------------------删除表======================= ...--DROP TA...

    从网上搜的,一点一点加吧。

    -----------设置事务全部回滚-----------------
    SET XACT_ABORT ON
    
    BEGIN
    BEGIN  TRY
        BEGIN TRANSACTION TR
    
    
    ---------------------------------删除表=======================
    --DROP TABLE T_QuestionBankItem
    
    
    ---=================================修改列名========================================
    --exec sp_rename 'T_MyCourse.CourseClassId' , 'ClassId', 'column'
    
    
    
    
    -----==========================修改字段类型及默认值------------------
    
    --ALTER TABLE T_Message ALTER COLUMN Title nvarchar(20) NOT NULL
    
    
    
    
    --===========================增加列======================================----
    
    ----------------T_AssNews-------------
    --alter table T_AssNews ADD ViewCount int NOT NULL Default 0
    --EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'浏览量' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_AssNews', @level2type=N'COLUMN',@level2name=N'ViewCount'
    
    
    
    -----------删除字段、先删除约束
    --ALTER TABLE [dbo].[T_TICategory] DROP CONSTRAINT [DF_T_TICategory_TrainingInstitutionId]    
    --ALTER TABLE T_TICategory DROP COLUMN TrainingInstitutionId
    
    
    
        
         COMMIT TRANSACTION TR
         END TRY
    
         BEGIN CATCH 
            PRINT 'EXECUTED FAILED';
    
            select error_number() as error_number ,
                 error_message() as error_message
            ROLLBACK TRANSACTION TR
            RETURN
        END CATCH
    END

     

    转载于:https://www.cnblogs.com/dawenyang/p/9046025.html

    展开全文
  • 在数据库boris中创建Student表 use boris IF OBJECT_ID('Student') IS ...DROP TABLE Student CREATE TABLE Student (Sname nvarchar(50) null, Ssex nvarchar(50) null,Sage int null) insert into Student selec
  • mysql批量删除表

    2020-03-13 18:11:58
    使用 Select CONCAT( 'drop table ', table_name, ';' ) FROM information_schema.tables Where table_name ...可生成drop表语句,然后可以批量删除: drop table __prefix_20180129; drop table __prefix_20180130...
  • mysql 批量删除表

    万次阅读 2018-07-12 10:41:59
    使用Select CONCAT( 'drop table ', table_name, ';' ) FROM information_schema.tables Where table_...可生成drop表语句,然后可以批量删除:drop table seq_data_tmp_gf_sz_20180129;drop table seq_data_tmp_gf_...
  • Sqlite创建表语句 Sqlite增加insert语句 Sqlite查询表select Sqlite更新数据update 表排序order by 查询某段数据limit和offset 删除表drop demo演示 SQLite简介 SQLite属于轻量级的数据库。用起来也很方便...
  • mysqldump之不老将

    2015-09-25 10:50:00
    –add-drop-database 每个数据库创建之前添加drop数据库语句。...–add-drop-table 每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项) --no-create-info ...
  • 数据库 SQL语法一

    2016-11-06 19:49:00
    建立表语句 CREATE TABLE TABLENAME(COL_NAME1 TYPE,COL_NAME2 TYPE,......); 常用TYPE说明 INT 正数 CHAR(LENGTH) 定长字符串,短于指定长度用空格填充 VARCHAR(LENGTH) 变长字符串 删除表语句 DROP TABLE ...
  • 数据库批量查询语句

    2019-09-28 11:14:25
    1.oracle查询所有当前数据库的表语句:select 'drop table '||table_name||';' as sqlscript from user_tables; 2.sql查询所有当前数据库的表语句://查询用户下所有数据库 SELECT Name FROM Master..SysDatabases ...
  • MySQL操作mysqldump命令详解 --all-databases , -A 导出全部数据库。 --all-tablespaces , -Y ...每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项) --add-locks 在每个
  • oracle 关键词

    千次阅读 2013-03-28 15:27:19
    http://blog.csdn.net/newhappy2008/article/details/7566531 oracle导出建表语句  oracle删除表语句  drop table temp ; oracle 锁表语句  alter table t read only; oracle语句创建表  reate table T
  • 表的删除和更新 一、重点内容总结 1、使用DROP TABLE语句来删除表 2、使用ALTER TABLE语句向表中添加列或者从表中删除列 ...删除Shopping表语句DROP TABLE Shopping; 删除的表是无法恢复,即使是被误删...
  • DB2常用语句

    2019-12-13 15:54:41
    1.删除语句 delete from md_bdorg where not exists ( select * from md_org where md_org.recid = md_bdorg.recid ) 2.删表语句 drop table SYS_ORG
  • 1、拼接删除表语句 selectconcat('drop table ',table_name,';')frominformation_schema.TABLESwheretable_schema='数据库名称'; 2、复制,全部执行
  • 表语句 drop table if exists table; create table table( id SERIAL PRIMARY KEY, gmt_create timestamp without time zone, gmt_modified timestamp without time zone, baseInfo json ); ...
  • 导入sql文件时出错,提示 Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON... 查看表语句DROP TABLE IF EXISTS `pro_favorite`; CREATE TABLE `pro_fa
  • 1、 表定义 1.1建表语句 create table 表名 ( 属性 类型, ...1.2删除表语句 drop table 表名 drop table student 1.3修改表语句(修改属性或者类型) 表增加属性 alter table student add cl
  • 删除表语句 1.2 若要彻底删除表,则使用语句: drop table table_name purge; 该语句表示:不放入回收站,直接删除。 1.3 drop含有外键的表 drop table table_name cascade constraints; ---也称为称为级联删除...
  • oracle 常用命令

    2012-12-04 17:24:02
    生成删除所有表语句 select 'drop table '||table_name||' cascade constraints;' from user_tables;   生存删除所有sequence select 'drop sequence '||sequence_name||';' from user_sequences; ...
  • 考试相关题目

    2017-10-31 10:23:22
    考试相关题目-- 创建student和score表语句 DROP TABLE IF EXISTS t_student; CREATE TABLE t_student( id INT(10) AUTO_INCREMENT PRIMARY KEY, name VARCHAR(200) NOT NULL, sex VARCHAR(4), birth YEAR,
  • 表语句 drop table if exists `account`; -- 如果有这个表就将它删除 create table if not exists `account`( id int primary key auto_increment comment '帐号编号', username varchar(12) not nul...
  • 如果有很多表需要删除,而表中有相同的前缀,我们可能需要如下语句: drop table pre_tablename1; drop table pre_tablename2;...因此我们可以通过sql语句输出上面的删除表语句 执行sql语句: ...
  • Mysql数据库操作笔记

    2019-10-02 06:37:11
    如果数据库表字段存在,则删除该表 1 drop table if exists `table_name` ...创建数据库表语句 1 create table `table_name`( 2 `id` int(5) not null auto_increment comment '自增主键', 3 `na...
  • 数据库操作回顾

    2021-04-21 14:10:28
    sql database基本指令 #查看数据库版本 select version(); #查看当前时间 select now() #创建表 create database xxx charset utf8;...#创建表语句 show create database xxx; #显示所有表 show databases sql...
  • 微小型数仓案例整理

    2020-09-03 16:02:28
    一、MySQL导入数据 ...建mysql表语句: CREATE DATABASE IF NOT EXISTS sales_source DEFAULT CHARSET utf8 COLLATE utf8_general_ci; USE sales_source; DROP TABLE IF EXISTS customer; DROP TABL
  • MySQL行转列&列转行

    2020-01-03 16:32:34
    行转列 即将原本同一列下多行的不同...建表语句 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id INT(11) NOT NULL auto_increment, userid VARCHAR(20) NOT NULL COMMENT '用户id', subject VARC...

空空如也

空空如也

1 2 3 4
收藏数 70
精华内容 28
关键字:

drop表语句