<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: DbVisualizer</title>
    <description>The latest articles on DEV Community by DbVisualizer (@dbvismarketing).</description>
    <link>https://dev.to/dbvismarketing</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1018155%2F9a05440d-0b09-424f-9e49-fa152d1ede58.png</url>
      <title>DEV Community: DbVisualizer</title>
      <link>https://dev.to/dbvismarketing</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dbvismarketing"/>
    <language>en</language>
    <item>
      <title>How to Use SQL INSERT INTO SELECT to Copy Data Between Tables</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 07 Sep 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/how-to-use-sql-insert-into-select-to-copy-data-between-tables-2ib8</link>
      <guid>https://dev.to/dbvismarketing/how-to-use-sql-insert-into-select-to-copy-data-between-tables-2ib8</guid>
      <description>&lt;p&gt;Copying rows between tables is a common SQL task. Rather than inserting values one row at a time, &lt;code&gt;INSERT INTO ... SELECT&lt;/code&gt; lets you move data using the output of another query.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does INSERT INTO SELECT Do?
&lt;/h2&gt;

&lt;p&gt;This statement inserts the results of a &lt;code&gt;SELECT&lt;/code&gt; query into an existing table. It works well for migrations, backups, reporting tables, and filtered datasets.&lt;/p&gt;

&lt;p&gt;Some useful characteristics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supports filtered inserts.&lt;/li&gt;
&lt;li&gt;Can use joins.&lt;/li&gt;
&lt;li&gt;Allows value transformations.&lt;/li&gt;
&lt;li&gt;Works across popular SQL databases.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Basic Syntax
&lt;/h2&gt;

&lt;p&gt;The statement combines an insert operation with a select query.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;target_table&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;column1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;column2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;column3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;column1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;column2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;column3&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;source_table&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Example Query
&lt;/h2&gt;

&lt;p&gt;Here's a simple example that stores only IT employees in another table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;it_staff_backup&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;original_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;full_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;first_name&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;' '&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;last_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;salary&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;department&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'IT'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This query:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filters employees by department.&lt;/li&gt;
&lt;li&gt;Builds a full name.&lt;/li&gt;
&lt;li&gt;Copies salary information.&lt;/li&gt;
&lt;li&gt;Inserts the results into an existing backup table.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Which SQL statement copies table data?
&lt;/h3&gt;

&lt;p&gt;Use &lt;code&gt;INSERT INTO ... SELECT&lt;/code&gt; whenever data should be copied into an existing table.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is INSERT INTO table from SELECT another command?
&lt;/h3&gt;

&lt;p&gt;No. It's another name for the same SQL statement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does Oracle support this syntax?
&lt;/h3&gt;

&lt;p&gt;Yes. Oracle implements the same general approach for inserting data selected from another table or query.&lt;/p&gt;

&lt;h3&gt;
  
  
  How is CREATE TABLE ... SELECT different?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;CREATE TABLE ... SELECT&lt;/code&gt; creates a new table first. &lt;code&gt;INSERT INTO ... SELECT&lt;/code&gt; writes into a table that already exists.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why work with a visual database client?
&lt;/h3&gt;

&lt;p&gt;Graphical SQL tools make it easier to browse schemas, execute queries, inspect results, and manage databases from one interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;INSERT INTO ... SELECT&lt;/code&gt; is a practical SQL feature for copying and transforming data in one step. Understanding this statement can simplify many everyday database tasks.&lt;/p&gt;

&lt;p&gt;Read the full original article here &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/insert-into-%e2%80%a6-select-statement-what-you-need-to-know/" rel="noopener noreferrer"&gt;INSERT INTO … SELECT Statement: What You Need to Know.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SQL SUBSTRING_INDEX: How to Extract Text Using Delimiters</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 31 Aug 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/sql-substringindex-how-to-extract-text-using-delimiters-2496</link>
      <guid>https://dev.to/dbvismarketing/sql-substringindex-how-to-extract-text-using-delimiters-2496</guid>
      <description>&lt;p&gt;Many SQL queries involve extracting part of a value instead of returning an entire string. Whether you're working with URLs, email addresses, or IP addresses, &lt;code&gt;SUBSTRING_INDEX&lt;/code&gt; provides a simple way to retrieve the section you need using a delimiter.&lt;/p&gt;

&lt;p&gt;This article covers the basics of the function, common use cases, and a few things to keep in mind when using it in larger datasets.&lt;/p&gt;

&lt;h2&gt;
  
  
  How SUBSTRING_INDEX Works
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;SUBSTRING_INDEX&lt;/code&gt; returns a portion of a string based on a delimiter and the number of delimiter occurrences.&lt;/p&gt;

&lt;p&gt;The basic syntax is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;SUBSTRING_INDEX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;delimiter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;count&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The function accepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A string or column&lt;/li&gt;
&lt;li&gt;A delimiter to search for&lt;/li&gt;
&lt;li&gt;A count value that determines where the string is split&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SUBSTRING_INDEX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'https://dbvis.com'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'.'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Negative values count delimiters from the end of the string:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SUBSTRING_INDEX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'www.dbvis.com'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'.'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If one of the arguments is &lt;code&gt;NULL&lt;/code&gt;, the function returns &lt;code&gt;NULL&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Everyday Use Cases
&lt;/h2&gt;

&lt;p&gt;Instead of hardcoded values, you'll usually apply &lt;code&gt;SUBSTRING_INDEX&lt;/code&gt; to table columns.&lt;/p&gt;

&lt;p&gt;Some common scenarios include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extracting email domains&lt;/li&gt;
&lt;li&gt;Breaking IP addresses into individual parts&lt;/li&gt;
&lt;li&gt;Parsing URLs&lt;/li&gt;
&lt;li&gt;Preparing data for reports and analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, extracting email domains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SUBSTRING_INDEX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'@'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This approach is useful when grouping or filtering users based on their email provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance Considerations
&lt;/h2&gt;

&lt;p&gt;String functions can become expensive on large tables, so it's worth planning queries carefully.&lt;/p&gt;

&lt;p&gt;A few practical recommendations are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test queries on production-sized datasets.&lt;/li&gt;
&lt;li&gt;Use indexes where they support the overall query.&lt;/li&gt;
&lt;li&gt;Combine extraction with aggregation only when needed.&lt;/li&gt;
&lt;li&gt;Export processed data if it will be reused elsewhere.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's a simple reporting query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
&lt;span class="n"&gt;SUBSTRING_INDEX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'@'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Related Functions
&lt;/h2&gt;

&lt;p&gt;Not every database includes &lt;code&gt;SUBSTRING_INDEX&lt;/code&gt;, but similar functionality exists across SQL platforms.&lt;/p&gt;

&lt;p&gt;Depending on the database, you may use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SUBSTRING&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SUBSTR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RIGHT()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Pattern-based &lt;code&gt;SUBSTRING&lt;/code&gt; in PostgreSQL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The available function depends on the SQL dialect you're working with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is SUBSTRING_INDEX in SQL?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;SUBSTRING_INDEX&lt;/code&gt; extracts part of a string based on a delimiter and the number of matching delimiter occurrences. It's commonly used to isolate values from structured text.&lt;/p&gt;

&lt;h3&gt;
  
  
  When should I use SUBSTRING_INDEX?
&lt;/h3&gt;

&lt;p&gt;Use it whenever data contains predictable separators, such as periods, slashes, or the &lt;code&gt;@&lt;/code&gt; symbol in email addresses.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which databases support SUBSTRING_INDEX?
&lt;/h3&gt;

&lt;p&gt;MySQL provides native support for &lt;code&gt;SUBSTRING_INDEX&lt;/code&gt;. Other database systems offer comparable functionality through functions such as &lt;code&gt;SUBSTRING&lt;/code&gt;, &lt;code&gt;SUBSTR&lt;/code&gt;, or &lt;code&gt;RIGHT()&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;SUBSTRING_INDEX&lt;/code&gt; is a useful SQL function for extracting values from structured strings without complex expressions. Whether you're parsing URLs, email addresses, or IP addresses, it can simplify many everyday database tasks.&lt;/p&gt;

&lt;p&gt;If you'd like to explore more examples and database compatibility details, read the original article &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/parsing-data-with-substring_index-a-complete-guide/" rel="noopener noreferrer"&gt;Parsing Data with SUBSTRING_INDEX: A Complete Guide.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Use SQL DROP TABLE Safely: Syntax, Examples, and Tips</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 24 Aug 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/how-to-use-sql-drop-table-safely-syntax-examples-and-tips-14o8</link>
      <guid>https://dev.to/dbvismarketing/how-to-use-sql-drop-table-safely-syntax-examples-and-tips-14o8</guid>
      <description>&lt;p&gt;The SQL &lt;code&gt;DROP TABLE&lt;/code&gt; statement is designed to remove an entire table from a database. Unlike commands that only delete records, this one also removes the table definition and related database objects. Knowing its behavior helps you make safer decisions when modifying a database.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does DROP TABLE Do?
&lt;/h2&gt;

&lt;p&gt;Before deleting a table, it's useful to understand exactly what the statement affects.&lt;/p&gt;

&lt;p&gt;Running &lt;code&gt;DROP TABLE&lt;/code&gt; typically removes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The table itself.&lt;/li&gt;
&lt;li&gt;Every stored row.&lt;/li&gt;
&lt;li&gt;Indexes associated with the table.&lt;/li&gt;
&lt;li&gt;Constraints and triggers tied to it.&lt;/li&gt;
&lt;li&gt;The storage allocated to the table.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since this is generally a DDL operation, it is usually committed immediately and cannot be rolled back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic SQL Syntax
&lt;/h2&gt;

&lt;p&gt;The syntax is straightforward and works similarly across most relational database systems.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After execution, the &lt;code&gt;students&lt;/code&gt; table no longer exists, and applications can no longer query it.&lt;/p&gt;

&lt;p&gt;Some database platforms also allow multiple table names in the same statement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Avoid Errors with IF EXISTS
&lt;/h2&gt;

&lt;p&gt;Database scripts often need to run repeatedly. In those situations, trying to remove a table that has already been deleted can interrupt execution.&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;IF EXISTS&lt;/code&gt; avoids that problem.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;IF&lt;/span&gt; &lt;span class="k"&gt;EXISTS&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This version skips the operation when the table is missing instead of returning an error, making automation scripts more reliable.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Should You Use DROP TABLE?
&lt;/h2&gt;

&lt;p&gt;There are several practical situations where removing a table is appropriate.&lt;/p&gt;

&lt;p&gt;You might use it when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cleaning up temporary tables.&lt;/li&gt;
&lt;li&gt;Removing outdated database objects.&lt;/li&gt;
&lt;li&gt;Resetting development environments.&lt;/li&gt;
&lt;li&gt;Simplifying an evolving database schema.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before executing the command, confirm that no applications or database objects still depend on the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Safer Way to Remove Tables
&lt;/h2&gt;

&lt;p&gt;Running destructive SQL commands directly from a query editor works, but graphical database tools can make the process easier to verify.&lt;/p&gt;

&lt;p&gt;A visual client allows you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browse database objects.&lt;/li&gt;
&lt;li&gt;Inspect the schema first.&lt;/li&gt;
&lt;li&gt;Preview the generated SQL.&lt;/li&gt;
&lt;li&gt;Execute the command after confirmation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This extra visibility can help prevent accidental changes, especially when working with shared databases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices Before Running DROP TABLE
&lt;/h2&gt;

&lt;p&gt;Removing a table takes only one statement, but preparation matters.&lt;/p&gt;

&lt;p&gt;Consider these recommendations before executing it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Back up valuable data.&lt;/li&gt;
&lt;li&gt;Check foreign key relationships.&lt;/li&gt;
&lt;li&gt;Review dependent views and procedures.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;IF EXISTS&lt;/code&gt; where appropriate.&lt;/li&gt;
&lt;li&gt;Keep schema changes under version control.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These habits help reduce the chance of removing something unexpectedly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is the difference between DROP TABLE, TRUNCATE, and DELETE?
&lt;/h3&gt;

&lt;p&gt;The three commands remove data differently.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;DROP TABLE&lt;/code&gt; deletes the table completely. &lt;code&gt;TRUNCATE&lt;/code&gt; clears all rows but keeps the table definition. &lt;code&gt;DELETE&lt;/code&gt; removes rows while preserving both the structure and database object.&lt;/p&gt;

&lt;p&gt;They also differ in logging, rollback capabilities, and trigger behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  How can you remove every table?
&lt;/h3&gt;

&lt;p&gt;SQL does not provide a universal command for dropping all tables.&lt;/p&gt;

&lt;p&gt;Instead, administrators usually generate &lt;code&gt;DROP TABLE&lt;/code&gt; statements from the database catalog and execute them through a script.&lt;/p&gt;

&lt;p&gt;The exact solution depends on the database system being used.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you remove a column?
&lt;/h3&gt;

&lt;p&gt;Dropping a column requires &lt;code&gt;ALTER TABLE&lt;/code&gt; rather than &lt;code&gt;DROP TABLE&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="k"&gt;table_name&lt;/span&gt;
&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="k"&gt;column_name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only the selected column is removed, while the rest of the table remains unchanged.&lt;/p&gt;

&lt;h3&gt;
  
  
  How are temporary tables dropped?
&lt;/h3&gt;

&lt;p&gt;Temporary tables are generally removed with the same command.&lt;/p&gt;

&lt;p&gt;Some database engines include additional keywords or naming conventions, but the overall process is very similar to dropping a regular table.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can multiple tables be removed together?
&lt;/h3&gt;

&lt;p&gt;Yes, many SQL databases support listing several tables in one statement.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;orders_archive&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;customers_archive&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Support varies between database platforms, so check your system's documentation before relying on this syntax.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why use a visual database client?
&lt;/h3&gt;

&lt;p&gt;Visual database clients simplify everyday administration by combining schema exploration, SQL editing, and object management in one interface.&lt;/p&gt;

&lt;p&gt;They also make potentially destructive operations easier to review before execution, reducing the likelihood of accidental changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;DROP TABLE&lt;/code&gt; is an essential SQL command for permanently removing database tables. Understanding its syntax, knowing when to use &lt;code&gt;IF EXISTS&lt;/code&gt;, checking dependencies, and following good database practices can help you perform schema changes more safely.&lt;/p&gt;

&lt;p&gt;To explore database-specific behavior, additional SQL examples, and a more detailed explanation, read the original article here &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/sql-drop-table-statement-everything-you-need-to-know/" rel="noopener noreferrer"&gt;SQL DROP TABLE Statement: Everything You Need To Know&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Upgrade MySQL in WHM: Quick Setup Guide</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 17 Aug 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/upgrade-mysql-in-whm-quick-setup-guide-3fd0</link>
      <guid>https://dev.to/dbvismarketing/upgrade-mysql-in-whm-quick-setup-guide-3fd0</guid>
      <description>&lt;p&gt;WHM provides a built-in way to upgrade MySQL and MariaDB without relying entirely on the command line. This overview covers the main steps, compatibility checks, and a few tools that can help with database management afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sign In to WHM
&lt;/h2&gt;

&lt;p&gt;Start by accessing your WHM instance. You'll need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open your server using port &lt;code&gt;2087&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Authenticate with your server account.&lt;/li&gt;
&lt;li&gt;Confirm that WHM is available.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Upgrade Your Database Version
&lt;/h2&gt;

&lt;p&gt;Once inside WHM, the upgrade process only takes a few steps. Open &lt;strong&gt;MySQL/MariaDB Upgrade&lt;/strong&gt;, then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select a supported database version.&lt;/li&gt;
&lt;li&gt;Review the transferred &lt;code&gt;my.cnf&lt;/code&gt; settings.&lt;/li&gt;
&lt;li&gt;Choose automatic or interactive mode.&lt;/li&gt;
&lt;li&gt;Complete the upgrade.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Run the Upgrade Checker
&lt;/h3&gt;

&lt;p&gt;After selecting the version, it's a good idea to verify the upgrade. The checker helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review compatibility.&lt;/li&gt;
&lt;li&gt;Detect potential problems.&lt;/li&gt;
&lt;li&gt;Confirm the upgrade is ready.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Database Management Beyond Upgrades
&lt;/h2&gt;

&lt;p&gt;Keeping software updated is only part of maintaining a healthy database environment. Useful capabilities include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Managing database connections.&lt;/li&gt;
&lt;li&gt;Running SQL queries.&lt;/li&gt;
&lt;li&gt;Controlling query permissions.&lt;/li&gt;
&lt;li&gt;Creating ER diagrams.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How can I upgrade MySQL in WHM?
&lt;/h3&gt;

&lt;p&gt;Use the &lt;strong&gt;Upgrade Database Version&lt;/strong&gt; feature in WHM, choose a supported release, review your configuration, and complete the guided upgrade.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I upgrade MySQL without WHM?
&lt;/h3&gt;

&lt;p&gt;Yes. Manual upgrades involve backing up your data, installing updated MySQL packages, and restarting the service using your operating system's package manager.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is the Upgrade Checker necessary?
&lt;/h3&gt;

&lt;p&gt;It's recommended because it validates compatibility before the upgrade is finalized.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does DbVisualizer upgrade MySQL?
&lt;/h3&gt;

&lt;p&gt;No. DbVisualizer is intended for working with databases after they're running, not for upgrading the database server itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;WHM simplifies MySQL and MariaDB upgrades by providing a guided interface and compatibility checks. If you'd like the complete walkthrough, read the original article here &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/how-to-upgrade-mysql-in-whm-step-by-step-guide/" rel="noopener noreferrer"&gt;How to Upgrade MySQL in WHM? Step-By-Step Guide.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Getting Started with Multitenant Database Containers in Kubernetes</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 10 Aug 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/getting-started-with-multitenant-database-containers-in-kubernetes-3bg3</link>
      <guid>https://dev.to/dbvismarketing/getting-started-with-multitenant-database-containers-in-kubernetes-3bg3</guid>
      <description>&lt;p&gt;Running databases for multiple customers doesn't always require separate infrastructure. Multitenant database containers allow applications to serve multiple tenants while maintaining clear data boundaries and efficient resource usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multitenancy in Simple Terms
&lt;/h2&gt;

&lt;p&gt;A multitenant system serves multiple customers from a shared application or database environment.&lt;/p&gt;

&lt;p&gt;While infrastructure is shared, each tenant's data remains separate and protected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Kubernetes and Containers Matter
&lt;/h2&gt;

&lt;p&gt;Containers provide portable and repeatable environments for databases. Kubernetes adds orchestration and automation on top. Some common advantages include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduced infrastructure overhead&lt;/li&gt;
&lt;li&gt;Easier scaling during traffic increases&lt;/li&gt;
&lt;li&gt;Better operational consistency&lt;/li&gt;
&lt;li&gt;Tenant isolation controls&lt;/li&gt;
&lt;li&gt;Version-controlled infrastructure definitions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Components Required for Deployment
&lt;/h2&gt;

&lt;p&gt;A Kubernetes database deployment usually includes three essential resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Storage Layer
&lt;/h3&gt;

&lt;p&gt;Persistent Volumes hold database data independently from containers. Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;PersistentVolume&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Storage Requests
&lt;/h3&gt;

&lt;p&gt;Persistent Volume Claims allocate storage to workloads.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;PersistentVolumeClaim&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Database Deployment
&lt;/h3&gt;

&lt;p&gt;The deployment resource controls the database container lifecycle.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apps/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deployment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Network Access
&lt;/h3&gt;

&lt;p&gt;Services expose the database to applications running inside the cluster.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Service&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Deploying the Resources
&lt;/h2&gt;

&lt;p&gt;Once the configuration files are ready, deploy them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; mysql-pv.yaml
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; mysql-pvc.yaml
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; mysql-deployment.yaml
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; mysql-service.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verification commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pv
kubectl get pvc
kubectl get svc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Are Multitenant Database Containers?
&lt;/h3&gt;

&lt;p&gt;They are database deployments designed to support multiple tenants from shared infrastructure while maintaining logical separation between users and applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Can They Be Configured in Kubernetes?
&lt;/h3&gt;

&lt;p&gt;The process typically involves defining a Persistent Volume, a Deployment, and a Service using Kubernetes YAML manifests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Use DbVisualizer?
&lt;/h3&gt;

&lt;p&gt;DbVisualizer provides database management features such as query execution, data editing, export options, and support for numerous database platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Multitenant database containers offer a straightforward way to manage multiple tenants within Kubernetes. By combining storage, deployments, and services, teams can build database environments that are easier to scale and maintain. For the original article, visit: &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/multitenant-database-containers-for-modern-day-applications/" rel="noopener noreferrer"&gt;Multitenant Database Containers for Modern-Day Applications&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>multitenant</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Reliable MySQL Backups with MyDumper Checksum Validation</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 03 Aug 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/reliable-mysql-backups-with-mydumper-checksum-validation-2k9c</link>
      <guid>https://dev.to/dbvismarketing/reliable-mysql-backups-with-mydumper-checksum-validation-2k9c</guid>
      <description>&lt;p&gt;MyDumper is widely used for MySQL and MariaDB backups because it can process data using multiple threads. Combined with checksum validation, it can also help verify that restored backups remain accurate.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes MyDumper Different?
&lt;/h2&gt;

&lt;p&gt;Traditional backup tools may process data sequentially. MyDumper approaches the task differently by using parallel operations. Some advantages include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster backup execution&lt;/li&gt;
&lt;li&gt;Better handling of large tables&lt;/li&gt;
&lt;li&gt;Flexible filtering options&lt;/li&gt;
&lt;li&gt;Support for parallel workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it useful for both small and large database environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enabling Checksum Validation
&lt;/h2&gt;

&lt;p&gt;Backup integrity can be checked by enabling checksum verification, example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./mydumper &lt;span class="nt"&gt;--host&lt;/span&gt; localhost &lt;span class="nt"&gt;--user&lt;/span&gt; mysqluser &lt;span class="nt"&gt;--password&lt;/span&gt; BrV9u2MbT &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--outputdir&lt;/span&gt; /tmp/backups/ &lt;span class="nt"&gt;--M&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When checksum validation is enabled:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backup data is analyzed&lt;/li&gt;
&lt;li&gt;Checksum values are stored&lt;/li&gt;
&lt;li&gt;Restored data is compared&lt;/li&gt;
&lt;li&gt;Mismatches can be detected&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This process helps identify integrity issues before backups are relied upon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Helpful Features Worth Knowing
&lt;/h2&gt;

&lt;p&gt;MyDumper offers more than backup creation. Administrators can also:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connect through SSL&lt;/li&gt;
&lt;li&gt;Include specific databases&lt;/li&gt;
&lt;li&gt;Exclude selected objects&lt;/li&gt;
&lt;li&gt;Filter rows&lt;/li&gt;
&lt;li&gt;Adjust thread usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These controls allow backup jobs to be tailored to specific requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  How MyLoader Fits In
&lt;/h2&gt;

&lt;p&gt;MyLoader is commonly used alongside MyDumper when restoring data. The pairing provides:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fast backup generation&lt;/li&gt;
&lt;li&gt;Efficient data restoration&lt;/li&gt;
&lt;li&gt;Validation support&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For larger databases, this workflow can improve operational efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Supporting Tools for Database Work
&lt;/h2&gt;

&lt;p&gt;Backup validation is important, but so is ongoing database management. SQL clients can assist with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Query tracking&lt;/li&gt;
&lt;li&gt;Data exploration&lt;/li&gt;
&lt;li&gt;Result exports&lt;/li&gt;
&lt;li&gt;Query reuse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together with backup tools, they form part of a broader database toolkit.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is MyDumper and how does it differ from mysqldump?
&lt;/h3&gt;

&lt;p&gt;MyDumper performs logical backups using multiple threads, while mysqldump operates in a single-threaded manner.&lt;/p&gt;

&lt;h3&gt;
  
  
  Are MyLoader and MyDumper the same?
&lt;/h3&gt;

&lt;p&gt;No. MyDumper creates backup files and MyLoader restores them. They are designed to work together.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you use MyDumper?
&lt;/h3&gt;

&lt;p&gt;Execute MyDumper from the command line, provide database connection details, and optionally enable checksum validation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;MyDumper provides a practical solution for creating MySQL backups while supporting integrity verification through checksums. When combined with MyLoader, it can streamline backup and recovery workflows. For the complete article, visit: &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/using-mydumper-checksums-for-reliable-mysql-backup-validation/" rel="noopener noreferrer"&gt;Using MyDumper Checksums for Reliable MySQL Backup Validation.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>PostgreSQL Backup and Restore Workflow for Developers</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 27 Jul 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/postgresql-backup-and-restore-workflow-for-developers-npm</link>
      <guid>https://dev.to/dbvismarketing/postgresql-backup-and-restore-workflow-for-developers-npm</guid>
      <description>&lt;p&gt;PostgreSQL includes built-in tools that make backups and recovery straightforward when used correctly. This overview covers backup creation, restore procedures, and common issues that appear during recovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preparing PostgreSQL for Backup Testing
&lt;/h2&gt;

&lt;p&gt;A simple Docker-based setup makes it easy to practice backup operations.&lt;/p&gt;

&lt;p&gt;Key preparation steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a PostgreSQL container&lt;/li&gt;
&lt;li&gt;Configure database credentials&lt;/li&gt;
&lt;li&gt;Create a sample database&lt;/li&gt;
&lt;li&gt;Insert test data
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose &lt;span class="nt"&gt;-f&lt;/span&gt; postgresql.yml up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This provides a safe environment for testing backup and restore procedures.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating a Backup with pg_dump
&lt;/h2&gt;

&lt;p&gt;The first step in any recovery plan is creating a backup.&lt;/p&gt;

&lt;p&gt;A custom-format backup is a common choice because it balances storage efficiency and recovery flexibility.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pg_dump &lt;span class="nt"&gt;-U&lt;/span&gt; dbadmin &lt;span class="nt"&gt;-F&lt;/span&gt; c &lt;span class="nt"&gt;-f&lt;/span&gt; backup.dump surveyplatform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This file can later be restored using pg_restore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handling a Failed Restore
&lt;/h2&gt;

&lt;p&gt;Restore failures often reveal missing dependencies rather than damaged backups. A common example is a missing database role. When this happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check restore errors carefully&lt;/li&gt;
&lt;li&gt;Recreate missing roles&lt;/li&gt;
&lt;li&gt;Remove incomplete restore attempts&lt;/li&gt;
&lt;li&gt;Retry the restoration
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;ROLE&lt;/span&gt; &lt;span class="n"&gt;demo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resolving ownership issues is frequently enough to complete recovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the Right Backup Format
&lt;/h2&gt;

&lt;p&gt;PostgreSQL supports multiple backup formats. Options include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQL text backups&lt;/li&gt;
&lt;li&gt;Custom backups&lt;/li&gt;
&lt;li&gt;Directory backups&lt;/li&gt;
&lt;li&gt;TAR backups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each format targets a different operational need, from debugging to large-scale restoration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Restoring and Verifying Data
&lt;/h2&gt;

&lt;p&gt;Restoration should always be followed by validation. For SQL backups:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;psql &lt;span class="nt"&gt;-f&lt;/span&gt; backup.sql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For custom backups:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pg_restore &lt;span class="nt"&gt;-d&lt;/span&gt; surveyplatform backup.dump
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After restoring, run queries against important tables to confirm the expected data exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Which PostgreSQL backup format should I use for daily backups?
&lt;/h3&gt;

&lt;p&gt;Custom format is often the recommended starting point. It offers compression and flexible recovery options. The format also supports selective restores when needed.&lt;/p&gt;

&lt;p&gt;For many workloads, it provides a practical balance between convenience and capability.&lt;/p&gt;

&lt;h3&gt;
  
  
  How often should I test my PostgreSQL backups?
&lt;/h3&gt;

&lt;p&gt;Backup testing should happen regularly. A monthly restore test can identify problems before they affect production recovery.&lt;/p&gt;

&lt;p&gt;Verification queries help confirm backup quality. Testing turns backups into a dependable recovery solution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why do I get "role does not exist" errors when restoring backups?
&lt;/h3&gt;

&lt;p&gt;The backup references a database owner that is not available on the target system.&lt;/p&gt;

&lt;p&gt;PostgreSQL cannot assign ownership without that role. Creating the missing role resolves the issue. The restore can then complete successfully.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I restore a PostgreSQL backup to a different database name?
&lt;/h3&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Create the destination database beforehand. Restore the backup into that database. Avoid using options that force the original database name to be recreated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;PostgreSQL's pg_dump and pg_restore tools provide a dependable foundation for backup and recovery. Knowing how to create backups, troubleshoot restores, and verify recovered data helps reduce risk when failures occur. For the complete tutorial, visit &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/postgresql-backup-and-restore-complete-tutorial-with-pg_dump-and-pg_restore/" rel="noopener noreferrer"&gt;PostgreSQL Backup and Restore: Complete Tutorial with pg_dump and pg_restore.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>backup</category>
      <category>restore</category>
    </item>
    <item>
      <title>Preparing for MySQL 8.0 End of Life: Key Things to Know</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 20 Jul 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/preparing-for-mysql-80-end-of-life-key-things-to-know-3n2d</link>
      <guid>https://dev.to/dbvismarketing/preparing-for-mysql-80-end-of-life-key-things-to-know-3n2d</guid>
      <description>&lt;p&gt;MySQL 8.0 reaches end of life in April 2026. Once support ends, organizations using the database version should be aware of the operational and security implications that follow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Impact
&lt;/h2&gt;

&lt;p&gt;The end of official support means changes for database environments.&lt;/p&gt;

&lt;p&gt;Key considerations include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No future security fixes&lt;/li&gt;
&lt;li&gt;Reduced support resources&lt;/li&gt;
&lt;li&gt;Compliance concerns&lt;/li&gt;
&lt;li&gt;Greater maintenance effort&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For regulated industries, unsupported software may require additional controls and documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Next Steps
&lt;/h2&gt;

&lt;p&gt;Organizations generally choose one of three approaches.&lt;/p&gt;

&lt;h3&gt;
  
  
  Upgrade to a Supported Version
&lt;/h3&gt;

&lt;p&gt;Many teams will move to MySQL 8.4 or newer releases. Advantages include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ongoing updates&lt;/li&gt;
&lt;li&gt;Better security posture&lt;/li&gt;
&lt;li&gt;Easier compliance management&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Explore Alternative Platforms
&lt;/h3&gt;

&lt;p&gt;Some organizations may decide to migrate elsewhere. Frequently considered options are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MariaDB&lt;/li&gt;
&lt;li&gt;Percona Server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These platforms offer compatibility with many existing MySQL workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue Operating MySQL 8.0
&lt;/h3&gt;

&lt;p&gt;Although possible, staying on MySQL 8.0 after EOL increases risk. Organizations should prepare for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Independent troubleshooting&lt;/li&gt;
&lt;li&gt;Additional security oversight&lt;/li&gt;
&lt;li&gt;Potential audit concerns&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Database Tools and Daily Operations
&lt;/h2&gt;

&lt;p&gt;Database management tools can support administrators by improving visibility and productivity. Useful capabilities often include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Schema navigation&lt;/li&gt;
&lt;li&gt;Access control management&lt;/li&gt;
&lt;li&gt;SQL assistance&lt;/li&gt;
&lt;li&gt;Query-building tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While they do not replace software updates, they can improve daily database administration.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Has MySQL 8.0 Reached EOL?
&lt;/h3&gt;

&lt;p&gt;MySQL 8.0 reaches end of life in April 2026. The support status depends on the current date and should be verified against official lifecycle information.&lt;/p&gt;

&lt;h3&gt;
  
  
  What If I Need to Stay on MySQL 8.0?
&lt;/h3&gt;

&lt;p&gt;Upgrading remains the preferred solution. If business requirements delay migration, organizations should strengthen security practices and carefully monitor database environments. Unsupported software generally becomes harder to maintain over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where Can I Find Official MySQL EOL Notices?
&lt;/h3&gt;

&lt;p&gt;Oracle provides lifecycle and support information through its official MySQL channels. Those notices offer the most reliable source for support timelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The MySQL 8.0 end-of-life transition is primarily about planning ahead. Understanding support timelines, evaluating upgrade paths, and maintaining secure database practices can help organizations manage the change effectively. You can read the original article here: &lt;a href="https://www.dbvis.com/thetable/mysql-8.0-eol-what-happens-next/" rel="noopener noreferrer"&gt;&lt;strong&gt;MySQL 8.0 EOL: What Happens Next?&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Top RBAC Tools for SQL Databases in 2026</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 13 Jul 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/top-rbac-tools-for-sql-databases-in-2026-4c3h</link>
      <guid>https://dev.to/dbvismarketing/top-rbac-tools-for-sql-databases-in-2026-4c3h</guid>
      <description>&lt;p&gt;Database permissions affect both security and day-to-day operations. RBAC helps ensure users only access the resources they need, making the choice of database tooling an important decision.&lt;/p&gt;

&lt;p&gt;Several SQL tools include features that help manage permissions and access controls. Here are three commonly considered options.&lt;/p&gt;

&lt;h2&gt;
  
  
  DbVisualizer
&lt;/h2&gt;

&lt;p&gt;DbVisualizer offers database administration and security-related functionality across many platforms. Key features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Query execution controls&lt;/li&gt;
&lt;li&gt;Master password support&lt;/li&gt;
&lt;li&gt;Feature-rich SQL editor&lt;/li&gt;
&lt;li&gt;Support for 60+ database technologies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Possible drawbacks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Advanced functionality is paid&lt;/li&gt;
&lt;li&gt;Interface updates may require adaptation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  DBeaver
&lt;/h2&gt;

&lt;p&gt;DBeaver combines database management features with role-based administration in its commercial offerings. Useful capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User and project access management&lt;/li&gt;
&lt;li&gt;Built-in Command Palette&lt;/li&gt;
&lt;li&gt;Quick generation of SELECT statements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Things to consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance may decrease with large datasets&lt;/li&gt;
&lt;li&gt;Can require more system resources&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Adminer
&lt;/h2&gt;

&lt;p&gt;Adminer is designed for users who want a lightweight solution. Reasons people choose it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free availability&lt;/li&gt;
&lt;li&gt;Multi-database support&lt;/li&gt;
&lt;li&gt;Community-driven extensions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simpler RBAC options&lt;/li&gt;
&lt;li&gt;Less suitable for larger teams&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Is the Best Tool for RBAC?
&lt;/h3&gt;

&lt;p&gt;The answer depends on your requirements. If advanced database management and security features are priorities, DbVisualizer is often considered first. DBeaver provides a capable alternative, while Adminer is a practical choice for straightforward environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Can You Secure Your Database?
&lt;/h3&gt;

&lt;p&gt;Security starts with fundamentals. Maintain strong passwords, restrict access using roles, audit permissions regularly, and ensure users receive only the privileges they need.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;RBAC plays an important role in protecting database systems. Whether you choose DbVisualizer, DBeaver, or Adminer, aligning the tool with your operational needs is the key consideration.&lt;/p&gt;

&lt;p&gt;Read the full article here: &lt;a href="https://www.dbvis.com/thetable/best-tools-for-role-based-access-control-rbac-in-sql-databases-in-2026/" rel="noopener noreferrer"&gt;&lt;strong&gt;Best Tools for Role-Based Access Control (RBAC) in SQL Databases in 2026.&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How Git Helps Manage SQL Queries and Database Changes</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 06 Jul 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/how-git-helps-manage-sql-queries-and-database-changes-5fcp</link>
      <guid>https://dev.to/dbvismarketing/how-git-helps-manage-sql-queries-and-database-changes-5fcp</guid>
      <description>&lt;p&gt;Most developers use Git daily, but version control can also play an important role in database projects. Managing SQL files through Git makes it easier to track changes, coordinate work, and maintain consistency across environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bringing Version Control to Databases
&lt;/h2&gt;

&lt;p&gt;Database development often involves ongoing updates to tables, relationships, and queries. Git provides a structured way to manage those changes. Benefits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clear change history&lt;/li&gt;
&lt;li&gt;Team collaboration&lt;/li&gt;
&lt;li&gt;Easier rollbacks&lt;/li&gt;
&lt;li&gt;Better visibility&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Examples of Git in Database Projects
&lt;/h2&gt;

&lt;p&gt;Versioning SQL files creates a record of database evolution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tracking Schema Modifications
&lt;/h3&gt;

&lt;p&gt;As databases grow, schema updates become common. Git helps document those changes over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Supporting Deployments
&lt;/h3&gt;

&lt;p&gt;Database-related SQL files can be shared across teams and environments, making deployments more predictable. Common advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster releases&lt;/li&gt;
&lt;li&gt;Consistent execution&lt;/li&gt;
&lt;li&gt;Easier review processes&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Managing Multiple Features
&lt;/h3&gt;

&lt;p&gt;Branches help separate database work into manageable units. Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New schema features&lt;/li&gt;
&lt;li&gt;Query updates&lt;/li&gt;
&lt;li&gt;Table restructuring&lt;/li&gt;
&lt;li&gt;Migration development&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools That Complement Git
&lt;/h2&gt;

&lt;p&gt;Version control records changes, but SQL clients help interpret them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Database Exploration
&lt;/h3&gt;

&lt;p&gt;Database tools can assist with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Schema navigation&lt;/li&gt;
&lt;li&gt;Relationship analysis&lt;/li&gt;
&lt;li&gt;Constraint review&lt;/li&gt;
&lt;li&gt;Index inspection&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ERD Generation
&lt;/h3&gt;

&lt;p&gt;Entity-Relationship Diagrams provide a visual overview of table connections and data flow.&lt;/p&gt;

&lt;h3&gt;
  
  
  SQL Development Features
&lt;/h3&gt;

&lt;p&gt;Many database clients include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smart suggestions&lt;/li&gt;
&lt;li&gt;Auto-completion&lt;/li&gt;
&lt;li&gt;Query editing tools&lt;/li&gt;
&lt;li&gt;Formatting assistance&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Relevance Does Git Have for Database Operations?
&lt;/h3&gt;

&lt;p&gt;Git helps organize database-related code and schema changes. It creates a shared process for managing updates while preserving historical records.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Best to Track Changes in a Database?
&lt;/h3&gt;

&lt;p&gt;Version-controlled SQL files are a good starting point. Combining Git with backups and migration management creates a more complete change-tracking strategy.&lt;/p&gt;

&lt;p&gt;Backups remain important because they protect actual database content.&lt;/p&gt;

&lt;h3&gt;
  
  
  Besides Tracking Changes, Is There Something Else To Take Care Of?
&lt;/h3&gt;

&lt;p&gt;Yes. Database knowledge extends beyond version control. Learning about database architecture, performance, and administration can improve long-term results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Git is not a database management tool, but it can support database workflows effectively. Versioning SQL queries, migrations, and schema updates helps teams maintain better visibility and control over database changes.&lt;/p&gt;

&lt;p&gt;Please read the original article &lt;a href="https://www.dbvis.com/thetable/versioning-your-queries-git-workflows-for-analysts-and-engineers/" rel="noopener noreferrer"&gt;&lt;strong&gt;Versioning Your Queries: Git Workflows for Analysts and Engineers.&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>4 MySQL Workbench Alternatives Every Mac Developer Should Know</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 29 Jun 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/4-mysql-workbench-alternatives-every-mac-developer-should-know-5ahf</link>
      <guid>https://dev.to/dbvismarketing/4-mysql-workbench-alternatives-every-mac-developer-should-know-5ahf</guid>
      <description>&lt;p&gt;If MySQL Workbench feels limiting on macOS, there are several alternatives that offer a different balance of usability, database support, and productivity features. Here are four tools worth a closer look.&lt;/p&gt;

&lt;p&gt;Workbench still has a large user base, but some developers look elsewhere because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance concerns&lt;/li&gt;
&lt;li&gt;Interface complexity&lt;/li&gt;
&lt;li&gt;MySQL-only focus&lt;/li&gt;
&lt;li&gt;Limited optimization for macOS workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As database environments become more diverse, broader tool support becomes increasingly important.&lt;/p&gt;

&lt;h2&gt;
  
  
  DbVisualizer
&lt;/h2&gt;

&lt;p&gt;DbVisualizer is designed for managing multiple database platforms from one place. What it provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;50+ supported databases&lt;/li&gt;
&lt;li&gt;Visual schema management&lt;/li&gt;
&lt;li&gt;ER diagram generation&lt;/li&gt;
&lt;li&gt;Flexible import and export options&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It works well for organizations that manage both traditional and cloud databases.&lt;/p&gt;

&lt;h2&gt;
  
  
  TablePlus
&lt;/h2&gt;

&lt;p&gt;TablePlus keeps things simple without removing essential functionality. Developers often choose it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Native Mac responsiveness&lt;/li&gt;
&lt;li&gt;Clean design&lt;/li&gt;
&lt;li&gt;Query assistance&lt;/li&gt;
&lt;li&gt;Easy data management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It balances speed and usability effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  DBeaver
&lt;/h2&gt;

&lt;p&gt;DBeaver is a feature-rich open-source database client. Included capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Broad database compatibility&lt;/li&gt;
&lt;li&gt;SQL productivity features&lt;/li&gt;
&lt;li&gt;Visual query tools&lt;/li&gt;
&lt;li&gt;Database diagrams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It may require more resources, but it remains a strong free option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beekeeper Studio
&lt;/h2&gt;

&lt;p&gt;Beekeeper Studio takes a minimalist approach. Key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Straightforward interface&lt;/li&gt;
&lt;li&gt;Fast navigation&lt;/li&gt;
&lt;li&gt;AI-powered database assistance&lt;/li&gt;
&lt;li&gt;Multi-database connectivity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some advanced tools are reserved for paid editions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which One Should You Choose?
&lt;/h2&gt;

&lt;p&gt;The answer depends on your priorities, for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Need broad database coverage? DbVisualizer.&lt;/li&gt;
&lt;li&gt;Want a Mac-native experience? TablePlus.&lt;/li&gt;
&lt;li&gt;Prefer open source? DBeaver.&lt;/li&gt;
&lt;li&gt;Like modern AI-assisted workflows? Beekeeper Studio.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each tool targets a slightly different workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;There are several capable alternatives to MySQL Workbench for macOS users. Whether your focus is database compatibility, interface design, open-source tooling, or workflow simplicity, these tools offer practical options for modern development.&lt;/p&gt;

&lt;p&gt;For additional details and the full comparison, read the original article &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/the-best-mysql-gui-for-macos-top-4-alternatives-to-workbench/" rel="noopener noreferrer"&gt;The Best MySQL GUI for macOS: Top 4 Alternatives to Workbench&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>mysqlclient</category>
    </item>
    <item>
      <title>DbVisualizer 26.2 with Better AI, Maps for Geodata, and Tab Groups</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Thu, 25 Jun 2026 10:40:05 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/dbvisualizer-262-with-better-ai-maps-for-geodata-and-tab-groups-10a6</link>
      <guid>https://dev.to/dbvismarketing/dbvisualizer-262-with-better-ai-maps-for-geodata-and-tab-groups-10a6</guid>
      <description>&lt;p&gt;We've just released &lt;strong&gt;DbVisualizer 26.2&lt;/strong&gt;, and this version includes a handful of features aimed at making day-to-day database work smoother.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Inside the SQL Editor
&lt;/h2&gt;

&lt;p&gt;One of the biggest changes is that AI is now available directly in SQL Commander.&lt;/p&gt;

&lt;p&gt;You can use it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fix SQL syntax errors&lt;/li&gt;
&lt;li&gt;Improve existing queries&lt;/li&gt;
&lt;li&gt;Generate new SQL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And once the assistant suggests a query, you can run it directly from the AI panel without copying and pasting.&lt;/p&gt;

&lt;p&gt;We also added support for models from Anthropic, Google, and OpenAI, so teams can choose the provider that works best for them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjqx9i18zvam30461zq72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjqx9i18zvam30461zq72.png" alt=" " width="492" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And yes, AI remains completely optional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search Database Connections Faster
&lt;/h2&gt;

&lt;p&gt;If your connection tree has become a jungle, this release helps.&lt;/p&gt;

&lt;p&gt;You can now search directly in the Databases tab and in the SQL Commander connection selector, making it much easier to jump between databases in larger environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  See Geospatial Data on a Map
&lt;/h2&gt;

&lt;p&gt;Working with coordinates or spatial datasets?&lt;/p&gt;

&lt;p&gt;DbVisualizer can now display query results containing geodata in a built-in map view, giving you a quick visual way to verify and explore location-based data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjy3afz5u7sgws6yxkzqc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjy3afz5u7sgws6yxkzqc.png" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tab Groups Arrive in SQL Commander
&lt;/h2&gt;

&lt;p&gt;For anyone who constantly has too many tabs open (you know who you are), SQL Commander now supports tab groups.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F81eqxxo4hdc03b8ss2l7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F81eqxxo4hdc03b8ss2l7.png" alt=" " width="800" height="105"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's a simple addition, but it makes it much easier to organize scripts by project, task, or environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other Nice Additions
&lt;/h2&gt;

&lt;p&gt;A few more things that made it into 26.2:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improved grid filtering and search&lt;/li&gt;
&lt;li&gt;Client-side audit logging&lt;/li&gt;
&lt;li&gt;Amazon Athena and InfluxDB support&lt;/li&gt;
&lt;li&gt;Vim mode&lt;/li&gt;
&lt;li&gt;Visual JSON editing&lt;/li&gt;
&lt;li&gt;In-app notifications with the new &lt;code&gt;@notify&lt;/code&gt; command&lt;/li&gt;
&lt;li&gt;Security and driver updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are also plenty of smaller fixes and improvements throughout the application. &lt;a href="https://www.dbvis.com/download/" rel="noopener noreferrer"&gt;Download DbVisualizer&lt;/a&gt; and try out the new features!&lt;/p&gt;

&lt;p&gt;If you'd like to see everything that's included, check out the full &lt;a href="https://www.dbvis.com/releasenotes/26.2/" rel="noopener noreferrer"&gt;release notes&lt;/a&gt;, the full list of whats new can be found &lt;a href="https://www.dbvis.com/whatsnew/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Happy querying!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
