diff --git a/src/Lunr/Gravity/Database/MariaDB/MariaDBDMLQueryBuilder.php b/src/Lunr/Gravity/Database/MariaDB/MariaDBDMLQueryBuilder.php
index 3205eaf6c6ff7d13f83978a069394ce8ff75a783..d1c73bb3cb952c7dea2c07e24b08e9fb3e828ecb 100644
--- a/src/Lunr/Gravity/Database/MariaDB/MariaDBDMLQueryBuilder.php
+++ b/src/Lunr/Gravity/Database/MariaDB/MariaDBDMLQueryBuilder.php
@@ -50,6 +50,34 @@ class MariaDBDMLQueryBuilder extends MySQLDMLQueryBuilder
         return $this;
     }
 
+    /**
+     * Define a EXCEPT, EXCEPT ALL or EXCEPT DISTINCT clause of the SQL statement.
+     *
+     * @param string $sql_query SQL query reference
+     * @param string $operator  EXCEPT operation to perform
+     *
+     * @return MariaDBDMLQueryBuilder $self Self reference
+     */
+    public function except($sql_query, $operator = NULL)
+    {
+        $this->sql_compound($sql_query, 'EXCEPT', strtoupper($operator));
+        return $this;
+    }
+
+    /**
+     * Define a INTERSECT, INTERSECT ALL or INTERSECT DISTINCT clause of the SQL statement.
+     *
+     * @param string $sql_query SQL query reference
+     * @param string $operator  INTERSECT operation to perform
+     *
+     * @return MariaDBDMLQueryBuilder $self Self reference
+     */
+    public function intersect($sql_query, $operator = NULL)
+    {
+        $this->sql_compound($sql_query, 'INTERSECT', strtoupper($operator));
+        return $this;
+    }
+
 }
 
 ?>
diff --git a/src/Lunr/Gravity/Database/MariaDB/Tests/MariaDBDMLQueryBuilderSelectTest.php b/src/Lunr/Gravity/Database/MariaDB/Tests/MariaDBDMLQueryBuilderSelectTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..57588edb911b26a86441d854d15b5081c8a8c8f2
--- /dev/null
+++ b/src/Lunr/Gravity/Database/MariaDB/Tests/MariaDBDMLQueryBuilderSelectTest.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * This file contains the MariaDBDMLQueryBuilderSelectTest class.
+ *
+ * @package    Lunr\Gravity\Database\MariaDB
+ * @author     David Cova <d.cova@m2mobi.com>
+ * @copyright  2013-2018, M2Mobi BV, Amsterdam, The Netherlands
+ * @license    http://lunr.nl/LICENSE MIT License
+ */
+
+namespace Lunr\Gravity\Database\MariaDB\Tests;
+
+use Lunr\Gravity\Database\MariaDB\Tests\MariaDBDMLQueryBuilderTest;
+/**
+ * This class contains select tests for the MariaDBDMLQueryBuilder class.
+ *
+ * @covers Lunr\Gravity\Database\MariaDB\MariaDBDMLQueryBuilder
+ */
+class MariaDBDMLQueryBuilderSelectTest extends MariaDBDMLQueryBuilderTest
+{
+     /**
+     * Test if except returns an instance of itself.
+     *
+     * @covers Lunr\Gravity\Database\MariaDB\MariaDBDMLQueryBuilder::except
+     */
+    public function testIfExceptReturnsSelfReference(): void
+    {
+        $return = $this->builder->except('query');
+
+        $this->assertInstanceOf('Lunr\Gravity\Database\MariaDB\MariaDBDMLQueryBuilder', $return);
+        $this->assertSame($this->builder, $return);
+    }
+
+    /**
+     * Test if intersect returns an instance of itself.
+     *
+     * @covers Lunr\Gravity\Database\MariaDB\MariaDBDMLQueryBuilder::intersect
+     */
+    public function testIfIntersectReturnsSelfReference(): void
+    {
+        $return = $this->builder->intersect('query');
+
+        $this->assertInstanceOf('Lunr\Gravity\Database\MariaDB\MariaDBDMLQueryBuilder', $return);
+        $this->assertSame($this->builder, $return);
+    }
+
+}
+
+?>
diff --git a/src/Lunr/Gravity/Database/MySQL/MySQLSimpleDMLQueryBuilder.php b/src/Lunr/Gravity/Database/MySQL/MySQLSimpleDMLQueryBuilder.php
index c9f1f1ce41f1bcb8e783a6d3da758ec9e42d4520..0b5e48884be2ea32ed8cb9492fa1139f23602227 100644
--- a/src/Lunr/Gravity/Database/MySQL/MySQLSimpleDMLQueryBuilder.php
+++ b/src/Lunr/Gravity/Database/MySQL/MySQLSimpleDMLQueryBuilder.php
@@ -782,13 +782,13 @@ class MySQLSimpleDMLQueryBuilder implements DMLQueryBuilderInterface
      * Define a UNION or UNION ALL clause of the SQL statement.
      *
      * @param string $sql_query SQL query reference
-     * @param string $type      Type of UNION operation to perform.
+     * @param string $operator  UNION operation to perform
      *
      * @return MySQLSimpleDMLQueryBuilder $self Self reference
      */
-    public function union($sql_query, $type = NULL)
+    public function union($sql_query, $operator = NULL)
     {
-        $this->builder->union($this->escaper->query_value($sql_query), $type);
+        $this->builder->union($this->escaper->query_value($sql_query), $operator);
         return $this;
     }
 
diff --git a/src/Lunr/Gravity/Database/SQLite3/SQLite3DMLQueryBuilder.php b/src/Lunr/Gravity/Database/SQLite3/SQLite3DMLQueryBuilder.php
index 02f88bfdb82fa8288b0115a939627c405de92a42..c39569b5518cb143c5776ef113d395ba6e2d688f 100644
--- a/src/Lunr/Gravity/Database/SQLite3/SQLite3DMLQueryBuilder.php
+++ b/src/Lunr/Gravity/Database/SQLite3/SQLite3DMLQueryBuilder.php
@@ -267,6 +267,42 @@ class SQLite3DMLQueryBuilder extends SQLDMLQueryBuilder
         return $this;
     }
 
+    /**
+     * Define a EXCEPT, EXCEPT ALL or EXCEPT DISTINCT clause of the SQL statement.
+     *
+     * @param string $sql_query SQL query reference
+     * @param string $operator  EXCEPT operation to perform
+     *
+     * @return SQLite3DMLQueryBuilder $self Self reference
+     */
+    public function except($sql_query, $operator = NULL)
+    {
+        if(strtoupper($operator) !== 'DISTINCT')
+        {
+            $operator = NULL;
+        }
+        $this->sql_compound($sql_query, 'EXCEPT', $operator);
+        return $this;
+    }
+
+    /**
+     * Define a INTERSECT, INTERSECT ALL or INTERSECT DISTINCT clause of the SQL statement.
+     *
+     * @param string $sql_query SQL query reference
+     * @param string $operator  INTERSECT operation to perform
+     *
+     * @return SQLite3DMLQueryBuilder $self Self reference
+     */
+    public function intersect($sql_query, $operator = NULL)
+    {
+        if(strtoupper($operator) !== 'DISTINCT')
+        {
+            $operator = NULL;
+        }
+        $this->sql_compound($sql_query, 'INTERSECT', $operator);
+        return $this;
+    }
+
 }
 
 ?>
diff --git a/src/Lunr/Gravity/Database/SQLite3/Tests/SQLite3DMLQueryBuilderSelectTest.php b/src/Lunr/Gravity/Database/SQLite3/Tests/SQLite3DMLQueryBuilderSelectTest.php
index 4aa1ee51d44ea564c73f5953093a6dba22c0d6c5..6fbb32aa67ce2fc775e90bf735b40791211a83be 100644
--- a/src/Lunr/Gravity/Database/SQLite3/Tests/SQLite3DMLQueryBuilderSelectTest.php
+++ b/src/Lunr/Gravity/Database/SQLite3/Tests/SQLite3DMLQueryBuilderSelectTest.php
@@ -96,4 +96,30 @@ class SQLite3DMLQueryBuilderSelectTest extends SQLite3DMLQueryBuilderTest
         $this->assertSame($this->class, $return);
     }
 
+    /**
+     * Test if except returns an instance of itself.
+     *
+     * @covers Lunr\Gravity\Database\SQLite3\SQLite3DMLQueryBuilder::except
+     */
+    public function testIfExceptReturnsSelfReference()
+    {
+        $except = $this->class->except('query');
+
+        $this->assertInstanceOf('Lunr\Gravity\Database\SQLite3\SQLite3DMLQueryBuilder', $except);
+        $this->assertSame($this->class, $except);
+    }
+
+    /**
+     * Test if intersect returns an instance of itself.
+     *
+     * @covers Lunr\Gravity\Database\SQLite3\SQLite3DMLQueryBuilder::intersect
+     */
+    public function testIfIntersectReturnsSelfReference()
+    {
+        $intersect = $this->class->intersect('query');
+
+        $this->assertInstanceOf('Lunr\Gravity\Database\SQLite3\SQLite3DMLQueryBuilder', $intersect);
+        $this->assertSame($this->class, $intersect);
+    }
+
 }
diff --git a/src/Lunr/Gravity/Database/Tests/DatabaseDMLQueryBuilderQueryPartsTest.php b/src/Lunr/Gravity/Database/Tests/DatabaseDMLQueryBuilderQueryPartsTest.php
index f8083e199c88a9350805b23dff3365699bfebca6..1ebf4fa38b76567c624260990d1f62a74d51fe1b 100644
--- a/src/Lunr/Gravity/Database/Tests/DatabaseDMLQueryBuilderQueryPartsTest.php
+++ b/src/Lunr/Gravity/Database/Tests/DatabaseDMLQueryBuilderQueryPartsTest.php
@@ -23,7 +23,7 @@ class DatabaseDMLQueryBuilderQueryPartsTest extends DatabaseDMLQueryBuilderTest
 {
 
     /**
-     * Test specifying the UNION part of a query.
+     * Test specifying a compound query.
      *
      * @param string $types     Compound query operator
      *
@@ -48,7 +48,7 @@ class DatabaseDMLQueryBuilderQueryPartsTest extends DatabaseDMLQueryBuilderTest
      *
      * @covers Lunr\Gravity\Database\DatabaseDMLQueryBuilder::sql_compound
      */
-    public function testCompoundQueryWhenCompoundIsSet(): void
+    public function testCompoundQueryWhenCompoundIsSetWithUnion(): void
     {
         $this->set_reflection_property_value('compound', 'QUERY');
 
@@ -59,6 +59,38 @@ class DatabaseDMLQueryBuilderQueryPartsTest extends DatabaseDMLQueryBuilderTest
         $this->assertPropertyEquals('compound', 'QUERY UNION (sql query)');
     }
 
+    /**
+     * Test specifying the EXCEPT part of a query, when compound is set.
+     *
+     * @covers Lunr\Gravity\Database\DatabaseDMLQueryBuilder::sql_compound
+     */
+    public function testCompoundQueryWhenCompoundIsSetWithExcept(): void
+    {
+        $this->set_reflection_property_value('compound', 'QUERY');
+
+        $method = $this->get_accessible_reflection_method('sql_compound');
+
+        $method->invokeArgs($this->class, [ '(sql query)', 'EXCEPT' ]);
+
+        $this->assertPropertyEquals('compound', 'QUERY EXCEPT (sql query)');
+    }
+
+    /**
+     * Test specifying the INTERSECT part of a query, when compound is set.
+     *
+     * @covers Lunr\Gravity\Database\DatabaseDMLQueryBuilder::sql_compound
+     */
+    public function testCompoundQueryWhenCompoundIsSetWithIntersect(): void
+    {
+        $this->set_reflection_property_value('compound', 'QUERY');
+
+        $method = $this->get_accessible_reflection_method('sql_compound');
+
+        $method->invokeArgs($this->class, [ '(sql query)', 'INTERSECT' ]);
+
+        $this->assertPropertyEquals('compound', 'QUERY INTERSECT (sql query)');
+    }
+
     /**
      * Test creating a simple order by statement.
      *
diff --git a/src/Lunr/Gravity/Database/Tests/SQLDMLQueryBuilderSelectTest.php b/src/Lunr/Gravity/Database/Tests/SQLDMLQueryBuilderSelectTest.php
index 0bbeca299ef30cf02f3b506aa480d0e6b5ead5db..0e6c299eec29b7ded4170c16d8ef60e1977473b8 100644
--- a/src/Lunr/Gravity/Database/Tests/SQLDMLQueryBuilderSelectTest.php
+++ b/src/Lunr/Gravity/Database/Tests/SQLDMLQueryBuilderSelectTest.php
@@ -171,7 +171,7 @@ class SQLDMLQueryBuilderSelectTest extends SQLDMLQueryBuilderTest
      */
     public function testUnion(): void
     {
-        $return = $this->class->union('QUERY');
+        $this->class->union('QUERY');
 
         $this->assertPropertyEquals('compound', 'UNION QUERY');
     }
@@ -184,7 +184,7 @@ class SQLDMLQueryBuilderSelectTest extends SQLDMLQueryBuilderTest
      */
     public function testUnionDistinct(): void
     {
-        $return = $this->class->union('QUERY', 'DISTINCT');
+        $this->class->union('QUERY', 'DISTINCT');
 
         $this->assertPropertyEquals('compound', 'UNION DISTINCT QUERY');
     }
@@ -197,13 +197,13 @@ class SQLDMLQueryBuilderSelectTest extends SQLDMLQueryBuilderTest
      */
     public function testUnionAll(): void
     {
-        $return = $this->class->union('QUERY', 'ALL');
+        $this->class->union('QUERY', 'ALL');
 
         $this->assertPropertyEquals('compound', 'UNION ALL QUERY');
     }
 
     /**
-     * Test fluid interface of the union method.
+     * Test fluid interface of the UNION method.
      *
      * @covers Lunr\Gravity\Database\SQLDMLQueryBuilder::union
      */
diff --git a/tests/phpunit.xml b/tests/phpunit.xml
index 43b21b2e2edcc223b3ce150480fe18cf71009fb9..3b3f2aeafdcc765f29cd8a56661b40a016677b5a 100644
--- a/tests/phpunit.xml
+++ b/tests/phpunit.xml
@@ -161,6 +161,7 @@
             <file>../src/Lunr/Gravity/Database/MySQL/Tests/MySQLConnectionMasterSlaveTest.php</file>
             <file>../src/Lunr/Gravity/Database/MariaDB/Tests/MariaDBConnectionBaseTest.php</file>
             <file>../src/Lunr/Gravity/Database/MariaDB/Tests/MariaDBDMLQueryBuilderDeleteTest.php</file>
+            <file>../src/Lunr/Gravity/Database/MariaDB/Tests/MariaDBDMLQueryBuilderSelectTest.php</file>
             <file>../src/Lunr/Gravity/Database/MariaDB/Tests/MariaDBSimpleDMLQueryBuilderBaseTest.php</file>
             <file>../src/Lunr/Gravity/Database/MariaDB/Tests/MariaDBSimpleDMLQueryBuilderDeleteTest.php</file>
             <file>../src/Lunr/Gravity/Database/MariaDB/Tests/MariaDBSimpleDMLQueryBuilderBaseTest.php</file>
