AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 170849
Accepted
l.lijith
l.lijith
Asked: 2017-04-13 08:53:19 +0800 CST2017-04-13 08:53:19 +0800 CST 2017-04-13 08:53:19 +0800 CST

Truncar com cláusula where

  • 772

Posso usar o comando truncate com uma cláusula where? Eu preciso remover linhas específicas de várias tabelas.

Como posso excluir dados específicos de todo o banco de dados?

SELECT DimEmployee.[FirstName], DimEmployee.[LastName], [SalesOrderNumber], [ShipDateKey]
    FROM DimEmployee
    JOIN [FactResellerSales] 
        ON DimEmployee.[EmployeeKey] = [FactResellerSales].[ProductKey] 
    WHERE DimEmployee.[FirstName] like 'kevin%' <--have to truncate this specific name from entire DB

Existe algum outro método para remover dados específicos de todo o banco de dados?

No meu banco de dados existem 172 tabelas. Eu queria excluir um nome específico e suas colunas correspondentes de todo o banco de dados. O nome está espalhado por todo o banco de dados, portanto, quero removê-lo de uma só vez, em vez de ir para cada tabela e excluí-lo individualmente.

sql-server sql-server-2008-r2
  • 4 4 respostas
  • 39405 Views

4 respostas

  • Voted
  1. Best Answer
    Erik Darling
    2017-04-13T08:55:30+08:002017-04-13T08:55:30+08:00

    Não, Truncar não pode ser usado com uma WHEREcláusula. Truncar simplesmente desaloca todas as páginas pertencentes a uma tabela (ou partição) e seus índices.

    De BOL :

    -- Syntax for SQL Server and Azure SQL Database  
    
    TRUNCATE TABLE   
        [ { database_name .[ schema_name ] . | schema_name . } ]  
        table_name  
        [ WITH ( PARTITIONS ( { <partition_number_expression> | <range> }   
        [ , ...n ] ) ) ]  
    [ ; ]  
    

    Se você está procurando uma maneira mais eficiente de excluir dados, eu começaria aqui .

    • 11
  2. Hadi
    2017-04-13T13:05:22+08:002017-04-13T13:05:22+08:00

    Existem três métodos de exclusão no sql server: Truncate, Delete,Drop

    DROP, TRUNCATE são comandos DDL (DROP é usado para remover objetos como tabelas, colunas, restrições,... mas não linhas)

    DELETE é um comando DML.

    "TRUNCATE Remove todas as linhas de uma tabela sem registrar as exclusões de linhas individuais. TRUNCATE TABLE é semelhante à instrução DELETE sem cláusula WHERE; no entanto, TRUNCATE TABLE é mais rápido e usa menos recursos do sistema e do log de transações..." Leia mais

    Você precisa criar o comando usando um sql dinâmico e executá-lo: (algo como esta consulta)

    DECLARE @strquery as NVARCHAR(MAX)
    
    SET @strquery = ''
    SELECT 'Delete T2 from [' + Table_name + '] As T2
    Inner join  DimEmployee as T1 
    On T1.[EmployeeKey] = T2.[ProductKey] 
    Where    T1.[FirstName] like ''kevin%'';'
     From information_schema.tables
     WHERE table_name <> 'DimEmployee'
    
    
    EXEC(@strquery)
    

    Links úteis

    • Drop vs Truncate vs Delete (oracle) infos são semelhantes ao sql server
    • Truncar vs Excluir (servidor sql)
    • Excluir usando junção interna com sql server
    • 4
  3. Vinod Narwal
    2019-01-12T09:40:11+08:002019-01-12T09:40:11+08:00

    Truncar é um comando ddl que funciona no nível da página. Simplesmente desaloque páginas no nível da partição e do objeto. Considerando que delete é um comando dml e funciona no nível da linha. Dentro da página, ele pesquisa o deslocamento da linha e marca o registro como excluído.

    Portanto, de acordo com a instrução acima, você não pode usar a instrução truncate com query.

    • -1
  4. Aqsa AS
    2019-01-12T07:43:38+08:002019-01-12T07:43:38+08:00

    Uma cláusula where pode ser usada junto com um comando Truncar

    Todo desenvolvedor SQL deseja controle total sobre o banco de dados por consulta. Devido a isso eles começam a pensar além da sintaxe SQL. Um desses equívocos é se uma cláusula where deve ser usada junto com um comando Truncar para realizar algumas operações condicionais.

    Por exemplo, se alguém quiser excluir todos os registros da semana passada (7 dias) usando o comando Truncar. Embora isso possa ser feito usando "Delete from table_name where conditions", mas truncate é usado porque é mais rápido que a consulta Delete.

    A resposta para a pergunta "Uma cláusula where pode ser usada junto com um comando Truncate" é SIM. A instrução Truncate significa Tudo ou Nada. Isso significa que todos os registros da Tabela serão excluídos ou nenhum deles será excluído.

    TRUNCAR TABELA

    TRUNCATE TABLE é uma instrução em SQL que exclui todos os registros em uma tabela muito rapidamente desalocando as páginas de dados usadas pela tabela. A desalocação das páginas de dados reduz a sobrecarga de recursos de registrar as exclusões feitas, bem como o número de bloqueios adquiridos. Os registros removidos pela instrução de consulta TRUNCATE TABLE não podem ser restaurados, portanto, você precisa ter muito cuidado antes de executar a consulta TRUNCATE TABLE.

    • -2

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve