<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://knowledgenerd.net/index.php?action=history&amp;feed=atom&amp;title=SQL</id>
	<title>SQL - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://knowledgenerd.net/index.php?action=history&amp;feed=atom&amp;title=SQL"/>
	<link rel="alternate" type="text/html" href="https://knowledgenerd.net/index.php?title=SQL&amp;action=history"/>
	<updated>2026-10-30T15:17:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://knowledgenerd.net/index.php?title=SQL&amp;diff=34&amp;oldid=prev</id>
		<title>Creator at 22:38, 26 March 2021</title>
		<link rel="alternate" type="text/html" href="https://knowledgenerd.net/index.php?title=SQL&amp;diff=34&amp;oldid=prev"/>
		<updated>2021-03-26T22:38:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 22:38, 26 March 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l751&quot; &gt;Line 751:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 751:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== Delete/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;drop &lt;/del&gt;Table ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== Delete / &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Drop &lt;/ins&gt;Table ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  DROP TABLE dr_imagecache_action&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  DROP TABLE dr_imagecache_action&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key knowledgenerd:diff::1.12:old-33:rev-34 --&gt;
&lt;/table&gt;</summary>
		<author><name>Creator</name></author>
		
	</entry>
	<entry>
		<id>https://knowledgenerd.net/index.php?title=SQL&amp;diff=33&amp;oldid=prev</id>
		<title>Creator at 22:37, 26 March 2021</title>
		<link rel="alternate" type="text/html" href="https://knowledgenerd.net/index.php?title=SQL&amp;diff=33&amp;oldid=prev"/>
		<updated>2021-03-26T22:37:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 22:37, 26 March 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l882&quot; &gt;Line 882:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 882:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Restore Database ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Restore &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;/ Import &lt;/ins&gt;Database ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Restore database from a file'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Restore database from a file'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key knowledgenerd:diff::1.12:old-21:rev-33 --&gt;
&lt;/table&gt;</summary>
		<author><name>Creator</name></author>
		
	</entry>
	<entry>
		<id>https://knowledgenerd.net/index.php?title=SQL&amp;diff=21&amp;oldid=prev</id>
		<title>Creator: Created page with &quot;== SQL and MySQL queries ==   === Select ===  ==== ROW_COUNT / Affected Rows ====   SELECT ROW_COUNT(); ROW_COUNT() returns the number of rows changed, deleted, or inserted by...&quot;</title>
		<link rel="alternate" type="text/html" href="https://knowledgenerd.net/index.php?title=SQL&amp;diff=21&amp;oldid=prev"/>
		<updated>2019-09-08T19:32:59Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== SQL and MySQL queries ==   === Select ===  ==== ROW_COUNT / Affected Rows ====   SELECT ROW_COUNT(); ROW_COUNT() returns the number of rows changed, deleted, or inserted by...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== SQL and MySQL queries ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Select ===&lt;br /&gt;
&lt;br /&gt;
==== ROW_COUNT / Affected Rows ====&lt;br /&gt;
&lt;br /&gt;
 SELECT ROW_COUNT();&lt;br /&gt;
ROW_COUNT() returns the number of rows changed, deleted, or inserted by the last statement if it was an UPDATE, DELETE, or INSERT. For other statements, the value may not be meaningful.&lt;br /&gt;
&lt;br /&gt;
==== Concatenate ====&lt;br /&gt;
&lt;br /&gt;
 SELECT CONCAT('Rows affected: ',ROW_COUNT()) AS 'Affected Rows';&lt;br /&gt;
&lt;br /&gt;
==== CASE ====&lt;br /&gt;
&lt;br /&gt;
Case Expression / conditional statement / if statement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT CASE WHEN columnZ &amp;lt;&amp;gt; 0 THEN 4&lt;br /&gt;
            WHEN columnY &amp;lt;&amp;gt; 0 THEN 3&lt;br /&gt;
            WHEN columnX &amp;lt;&amp;gt; 0 THEN 2&lt;br /&gt;
            WHEN columnW &amp;lt;&amp;gt; 0 THEN 1&lt;br /&gt;
            ELSE 0&lt;br /&gt;
       END AS your_alias_name&lt;br /&gt;
FROM ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT u.name,&lt;br /&gt;
  up.points,&lt;br /&gt;
  CASE WHEN u.access &amp;lt;&amp;gt; 0 THEN FROM_UNIXTIME(u.access) ELSE '' END AS 'Last activity on site',&lt;br /&gt;
FROM userpoints up INNER JOIN users u ON up.uid = u.uid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sort ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Joins ===&lt;br /&gt;
&lt;br /&gt;
MySQL cases (can apply to MS SQL also, but not confirmed yet).&lt;br /&gt;
&lt;br /&gt;
Different &amp;lt;code&amp;gt;JOIN&amp;lt;/code&amp;gt; types:&lt;br /&gt;
* '''JOIN''' or '''INNER JOIN''': Return rows when there is at least one match in both tables&lt;br /&gt;
* '''LEFT JOIN''': Return all rows from the left table, even if there are no matches in the right table&lt;br /&gt;
* '''RIGHT JOIN''': Return all rows from the right table, even if there are no matches in the left table&lt;br /&gt;
* '''FULL JOIN''': Return rows when there is a match in one of the tables&lt;br /&gt;
&lt;br /&gt;
Example data:&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse; float: left;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Persons table&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; | P_Id&lt;br /&gt;
!Lastname&lt;br /&gt;
!Firstname&lt;br /&gt;
!Address&lt;br /&gt;
!City&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Hansen&lt;br /&gt;
|Ola&lt;br /&gt;
|Timoteivn 10&lt;br /&gt;
| Sandnes&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Svendson&lt;br /&gt;
|Tove&lt;br /&gt;
|Borgvn 23&lt;br /&gt;
| Sandnes&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Pettersen&lt;br /&gt;
|Kari&lt;br /&gt;
|Storgt 20&lt;br /&gt;
|Stavanger&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse: collapse; border: 1px solid #000000; margin-left: 340px;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Orders table&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | O_Id&lt;br /&gt;
! style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | OrderNo&lt;br /&gt;
! style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | P_Id&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 1&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 77895&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 2&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 44678&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 3&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 22456&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 4&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 24562&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 5&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 34764&lt;br /&gt;
| style=&amp;quot;border: 1px solid #000000; text-align: left;&amp;quot; | 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== INNER JOIN ====&lt;br /&gt;
&lt;br /&gt;
INNER JOIN is same as JOIN. As a matter of fact INNER JOIN is a default type of JOIN and that's why you don't have to include INNER keyword. Returns rows when there is at least one match in both tables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo&lt;br /&gt;
FROM Persons&lt;br /&gt;
INNER JOIN Orders&lt;br /&gt;
ON Persons.P_Id=Orders.P_Id&lt;br /&gt;
ORDER BY Persons.LastName&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The result-set will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LastName  FirstName   OrderNo&lt;br /&gt;
Hansen    Ola     24562&lt;br /&gt;
Hansen    Ola     22456&lt;br /&gt;
Pettersen   Kari    77895&lt;br /&gt;
Pettersen   Kari    44678&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Other examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT mes.*, ind.uid&lt;br /&gt;
FROM pm_message mes&lt;br /&gt;
INNER JOIN pm_index ind ON mes.mid = ind.mid&lt;br /&gt;
WHERE ind.uid = 1234&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LEFT JOIN ====&lt;br /&gt;
&lt;br /&gt;
The LEFT JOIN keyword returns all rows from the left table (first table), even if there are no matches in the right table (table to join).&lt;br /&gt;
&lt;br /&gt;
'''Note!''' In some databases LEFT JOIN is called LEFT OUTER JOIN. In MySQL LEFT OUTER JOIN is equal to LEFT JOIN.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo&lt;br /&gt;
FROM Persons&lt;br /&gt;
LEFT JOIN Orders&lt;br /&gt;
ON Persons.P_Id=Orders.P_Id&lt;br /&gt;
ORDER BY Persons.LastName&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result-set will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LastName  FirstName   OrderNo&lt;br /&gt;
Hansen    Ola     22456&lt;br /&gt;
Hansen    Ola   24562&lt;br /&gt;
Pettersen   Kari    77895&lt;br /&gt;
Pettersen   Kari    44678&lt;br /&gt;
Svendson  Tove    &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== RIGHT JOIN ====&lt;br /&gt;
&lt;br /&gt;
The RIGHT JOIN keyword returns all the rows from the right table (second table), even if there are no matches in the left table (first table).&lt;br /&gt;
&lt;br /&gt;
'''Note!''' In some databases RIGHT JOIN is called RIGHT OUTER JOIN. In MySQL RIGHT OUTER JOIN is equal to RIGHT JOIN.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo&lt;br /&gt;
FROM Persons&lt;br /&gt;
RIGHT JOIN Orders&lt;br /&gt;
ON Persons.P_Id=Orders.P_Id&lt;br /&gt;
ORDER BY Persons.LastName&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result-set will look like this (all the orders with containing persons - if any):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LastName  FirstName   OrderNo&lt;br /&gt;
            34764&lt;br /&gt;
Hansen    Ola   22456&lt;br /&gt;
Hansen    Ola   24562&lt;br /&gt;
Pettersen   Kari    77895&lt;br /&gt;
Pettersen   Kari    44678&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== FULL JOIN ====&lt;br /&gt;
&lt;br /&gt;
The FULL JOIN keyword return rows when there is a match in one of the tables. FULL JOIN = FULL OUTER JOIN.&lt;br /&gt;
* '''Note!''' MySQL lacks support for FULL OUTER JOIN.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo&lt;br /&gt;
FROM Persons&lt;br /&gt;
FULL JOIN Orders&lt;br /&gt;
ON Persons.P_Id=Orders.P_Id&lt;br /&gt;
ORDER BY Persons.LastName&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Result:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LastName  FirstName   OrderNo&lt;br /&gt;
Hansen    Ola   22456&lt;br /&gt;
Hansen    Ola     24562&lt;br /&gt;
Pettersen   Kari    77895&lt;br /&gt;
Pettersen   Kari    44678&lt;br /&gt;
Svendson  Tove   &lt;br /&gt;
            34764&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With '''MySQL''' you can mitigate the FULL JOIN by using LEFT JOIN, RIGHT JOIN and UNION together.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT p.LastName, p.FirstName, o.OrderNo&lt;br /&gt;
FROM persons p&lt;br /&gt;
LEFT JOIN orders o ON p.P_Id = o.P_Id&lt;br /&gt;
UNION&lt;br /&gt;
SELECT p.LastName, p.FirstName, o.OrderNo&lt;br /&gt;
FROM persons p&lt;br /&gt;
RIGHT JOIN orders o ON p.P_Id = o.P_Id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Result:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LastName  FirstName   OrderNo&lt;br /&gt;
Hansen    Ola   22456&lt;br /&gt;
Hansen    Ola     24562&lt;br /&gt;
Svendson  Tove    &lt;br /&gt;
Pettersen   Kari    77895&lt;br /&gt;
Pettersen   Kari    44678&lt;br /&gt;
        34764&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UNION ====&lt;br /&gt;
&lt;br /&gt;
The UNION operator is used to combine the result-set of two or more SELECT statements.&lt;br /&gt;
&lt;br /&gt;
Notice that each SELECT statement within the UNION must have the same number of columns. The columns must also have similar data types. Also, the columns in each SELECT statement must be in the same order.&lt;br /&gt;
&lt;br /&gt;
SQL UNION Syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT column_name(s) FROM table_name1&lt;br /&gt;
UNION&lt;br /&gt;
SELECT column_name(s) FROM table_name2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note: The '''UNION''' operator selects only '''distinct values''' by default. To allow duplicate values, use '''UNION ALL'''. The column names in the result-set of a UNION are always equal to the column names in the first SELECT statement in the UNION.&lt;br /&gt;
&lt;br /&gt;
Example data:&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse; float: left;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Employees_Norway table&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; | E_ID&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | E_Name&lt;br /&gt;
|-&lt;br /&gt;
|01&lt;br /&gt;
|Hansen, Ola&lt;br /&gt;
|-&lt;br /&gt;
|02&lt;br /&gt;
|Svendson, Tove&lt;br /&gt;
|-&lt;br /&gt;
|03&lt;br /&gt;
|Svendson, Stephen&lt;br /&gt;
|-&lt;br /&gt;
|04&lt;br /&gt;
|Pettersen, Kari&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse; margin-left: 190px;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Employees_USA table&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; | E_ID&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | E_Name&lt;br /&gt;
|-&lt;br /&gt;
|01&lt;br /&gt;
|Turner, Sally&lt;br /&gt;
|-&lt;br /&gt;
|02&lt;br /&gt;
|Kent, Clark&lt;br /&gt;
|-&lt;br /&gt;
|03&lt;br /&gt;
|Svendson, Stephen&lt;br /&gt;
|-&lt;br /&gt;
|04&lt;br /&gt;
|Scott, Stephen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* List '''all the different employees''' in Norway and USA&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT E_Name FROM Employees_Norway&lt;br /&gt;
UNION&lt;br /&gt;
SELECT E_Name FROM Employees_USA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result-set will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
E_Name&lt;br /&gt;
Hansen, Ola&lt;br /&gt;
Svendson, Tove&lt;br /&gt;
Svendson, Stephen&lt;br /&gt;
Pettersen, Kari&lt;br /&gt;
Turner, Sally&lt;br /&gt;
Kent, Clark&lt;br /&gt;
Scott, Stephen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note''': Only distinct employee names are shown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* List '''all employees''' in Norway and USA&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT E_Name FROM Employees_Norway&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT E_Name FROM Employees_USA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Result:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
E_Name&lt;br /&gt;
Hansen, Ola&lt;br /&gt;
Svendson, Tove&lt;br /&gt;
Svendson, Stephen&lt;br /&gt;
Pettersen, Kari&lt;br /&gt;
Turner, Sally&lt;br /&gt;
Kent, Clark&lt;br /&gt;
Svendson, Stephen&lt;br /&gt;
Scott, Stephen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note''': Showing all names (Svendson, Stephen x 2).&lt;br /&gt;
&lt;br /&gt;
=== GROUP BY ===&lt;br /&gt;
&lt;br /&gt;
Select how many comments each users have made and sort those descending&lt;br /&gt;
 SELECT uid, COUNT(uid) AS commentcount FROM comments GROUP BY uid ORDER BY commentcount DESC&lt;br /&gt;
&lt;br /&gt;
=== IN Clause Order ===&lt;br /&gt;
&lt;br /&gt;
Result set won't be in the same order than IN-clause's ids:&lt;br /&gt;
 SELECT topic_id, topic_title from phpbb_topics where topic_id IN(5435, 23, 324)&lt;br /&gt;
&lt;br /&gt;
Result set will be ordered as you like:&lt;br /&gt;
 SELECT topic_id, topic_title from phpbb_topics where topic_id IN(5435, 23, 324) ORDER BY FIND_IN_SET(topic_id, '23,324,5435')&lt;br /&gt;
&lt;br /&gt;
=== Substring ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT SUBSTRING('Quadratically',5); // prints 'ratically'&lt;br /&gt;
SELECT SUBSTRING('foobarbar' FROM 4); // prints 'barbar'&lt;br /&gt;
SELECT SUBSTRING('Quadratically',5,6); // prints 'ratica'&lt;br /&gt;
SELECT SUBSTRING('Sakila', -3); // prints 'ila'&lt;br /&gt;
SELECT SUBSTRING('Sakila', -5, 3); // prints 'aki'&lt;br /&gt;
SELECT SUBSTRING('Sakila' FROM -4 FOR 2); // prints 'ki'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update ===&lt;br /&gt;
&lt;br /&gt;
Update with replace:&lt;br /&gt;
Replace url_alias table's dst column's all 'forums' words with 'keskustelu'&lt;br /&gt;
 UPDATE url_alias SET dst = REPLACE(dst, 'forums', 'keskustelu')&lt;br /&gt;
&lt;br /&gt;
Update with subquery:&lt;br /&gt;
 UPDATE `gsmvalidation` SET confirmedtime = (SELECT NOW())&lt;br /&gt;
 WHERE id = (SELECT id FROM (SELECT id,uid,codesended from `gsmvalidation`) AS temp WHERE uid = 1 ORDER BY `codesended` DESC LIMIT 1)&lt;br /&gt;
&lt;br /&gt;
=== Insert ===&lt;br /&gt;
&lt;br /&gt;
Insert single row:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INSERT INTO `drupal6`.`url_alias` (&lt;br /&gt;
`pid` ,&lt;br /&gt;
`src` ,&lt;br /&gt;
`dst` ,&lt;br /&gt;
`language`&lt;br /&gt;
)&lt;br /&gt;
VALUES (&lt;br /&gt;
NULL , 'phpbbforum/index.php', 'forums/index.php', ''&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Insert multiple rows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INSERT INTO url_alias (src, dst)&lt;br /&gt;
VALUES&lt;br /&gt;
('phpbbforum','forums'),&lt;br /&gt;
('phpbbforum/index.php', 'forums/index.php'),&lt;br /&gt;
('phpbbforum/viewtopic.php', 'forums/viewtopic.php');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Insert all rows from other table after emptying the destination table first:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TRUNCATE TABLE drupal622.dr_access;&lt;br /&gt;
INSERT INTO drupal622.dr_access SELECT * FROM drupal510.access;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Custom insert (there's no language column in source table):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INSERT INTO drupal622.dr_url_alias (pid,src,dst,language) SELECT pid,src,dst,'' FROM drupal510.url_alias&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
 DELETE FROM Persons WHERE LastName = 'Smith'&lt;br /&gt;
&lt;br /&gt;
=== Time and date ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Convert timestamp to date'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT u.created FROM users u // 1346693013&lt;br /&gt;
SELECT FROM_UNIXTIME(u.created) as 'User created' FROM users u // 2012-09-03 18:23:33&lt;br /&gt;
SELECT DATE(FROM_UNIXTIME(u.created)) as 'User created' FROM users u // 2012-09-03&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Convert date to timestamp'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT UNIX_TIMESTAMP('2012-08-01') // 1343775600&lt;br /&gt;
SELECT UNIX_TIMESTAMP('2012-08-01 01:02:03') //1343779323&lt;br /&gt;
// post_time = timestamp&lt;br /&gt;
SELECT * FROM phpbb_posts WHERE post_time BETWEEN UNIX_TIMESTAMP('2012-08-01') AND UNIX_TIMESTAMP('2012-09-05')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert datetime field values (CAST &amp;amp; DATE_FORMAT)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT confirmedtime FROM gsm WHERE uid = 1 //2010-10-27 14:58:39&lt;br /&gt;
SELECT CAST(confirmedtime AS DATE) AS confirmedtime FROM gsm WHERE uid = 1 //2010-10-27&lt;br /&gt;
SELECT CAST('2012-09-04' AS DATETIME) // 2012-09-04 00:00:00&lt;br /&gt;
SELECT CAST('2012-09-04' AS DATE) // 2012-09-04&lt;br /&gt;
SELECT DATE_FORMAT(confirmedtime,'%d.%m.%Y') AS confirmedtime FROM gsm WHERE uid = 1 //27.10.2010&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Select current datetime or timestamp&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT NOW()     -- 2010-09-09 08:54:53&lt;br /&gt;
SELECT CURDATE() -- 2010-09-09&lt;br /&gt;
SELECT CURTIME() -- 08:55:35&lt;br /&gt;
SELECT UNIX_TIMESTAMP(NOW()) -- 1314961714&lt;br /&gt;
SELECT UNIX_TIMESTAMP('2005-03-27 02:00:00') -- 1111885200&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Select something where date is 2012-09-04&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// userdata is in following format (timestamp-id): 1346746755-193&lt;br /&gt;
// two hours is added to timestamp to get Finnish time (GMT+2)&lt;br /&gt;
WHERE DATE(FROM_UNIXTIME((SELECT SUBSTRING(userdata, 1,10)+7200))) = CAST('2012-09-04' AS DATE)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minus 1 day from current time for begintime field and add 20 years to endtime field&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY), DATE_ADD(`endtime`, INTERVAL 20 YEAR)&lt;br /&gt;
FROM `publishdates`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update rows which don't have publish from value (startpublish_value). new value this time - 2 days.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE `publishdates`&lt;br /&gt;
SET `startpublish` = DATE_SUB(NOW(), INTERVAL 2 DAY)&lt;br /&gt;
WHERE `startpublish` IS NULL OR `field_startpublish_value` = '0000-00-00 00:00:00'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Insert data to datetime (YYYY-mm-dd H:i:s) and date formatted fields&lt;br /&gt;
 INSERT INTO logs (datetime,date) VALUES ('2005-06-12 23:56:25', '2005-06-12');&lt;br /&gt;
&lt;br /&gt;
If you are using a DATE_FORMAT function to format date e.g. '%d.%m.%Y' and use variable placeholders e.g. %f, '%s' in same sql, you have to add DATE_FORMAT parameters through variable placeholder. Otherwise day %d takes the first variables value. Right way to do it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$dateFormat = &amp;quot;%d.%m.%Y&amp;quot;;&lt;br /&gt;
$gsmValidated = db_fetch_object(db_query(&amp;quot;SELECT DATE_FORMAT(confirmedtime, '%s') AS confirmedtime FROM gsmvalidation WHERE uid = %f AND gsmtoconfirm = '%s' AND confirmedtime != '' ORDER BY `confirmedtime` DESC LIMIT 1&amp;quot;, $dateFormat, $uid, $gsmnumberStr));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cast and between&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// $D1 and $D2 are posted variables in PHP&lt;br /&gt;
SELECT * FROM Sales WHERE TransactionDate BETWEEN CAST('$D1' as DATETIME) and CAST($D2 as DATETIME)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto Increment Values ===&lt;br /&gt;
&lt;br /&gt;
==== Show Next Value ====&lt;br /&gt;
&lt;br /&gt;
Show next autoincrement value from files-table (check Auto_increment column):&lt;br /&gt;
 SHOW TABLE STATUS LIKE 'files'&lt;br /&gt;
or better way to do it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT AUTO_INCREMENT FROM information_schema.tables&lt;br /&gt;
WHERE table_name = 'files'&lt;br /&gt;
AND table_schema = 'drupal6'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or show each tables' auto_increment values:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT table_name, AUTO_INCREMENT FROM information_schema.tables&lt;br /&gt;
WHERE AUTO_INCREMENT IS NOT NULL AND table_schema = 'drupal6'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or select highest autoincrement value and add 1 to it:&lt;br /&gt;
 SELECT MAX(fid)+1 FROM 'files'&lt;br /&gt;
* Note: If someone inserted new row after your query the next id is not up to date anymore. That happens also if the row with max id have been deleted.&lt;br /&gt;
&lt;br /&gt;
==== Show Updated Row's Auto Increment ID Value ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INSERT INTO 'files' ('fid', 'filename') VALUES ('','image.jpg');&lt;br /&gt;
SELECT LAST_INSERT_ID();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Reset Autoincrement Value ====&lt;br /&gt;
&lt;br /&gt;
 ALTER TABLE visitors AUTO_INCREMENT = 1&lt;br /&gt;
&lt;br /&gt;
If the highest value for the column is already greater than new auto-increment value then it will be set to the highest value plus 1&lt;br /&gt;
&lt;br /&gt;
=== Replace ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REPLACE('where_to_look', 'what_to_look', 'the_replacement')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Select name and age. Convert the age column to number and replace 'years' string and whitespaces.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT name, CONVERT(INT, REPLACE(REPLACE(age, 'years', ''), ' ', '')) AS age&lt;br /&gt;
FROM persons&lt;br /&gt;
ORDER BY age DESC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update (limit to 10) nodes_revisions table's body fields content. Change readfile paths from &amp;lt;code&amp;gt;/var/www/html/&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/srv/www/docroot/&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE node_revisions&lt;br /&gt;
SET body = REPLACE(body, '/var/www/html/', '/srv/www/docroot/')&lt;br /&gt;
WHERE body LIKE '%readfile(\'/var/www%'&lt;br /&gt;
LIMIT 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert And Cast ===&lt;br /&gt;
&lt;br /&gt;
==== Convert String Into a Number ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- content string is 1346761037-192&lt;br /&gt;
SELECT CAST(SUBSTRING(content, 12) AS UNSIGNED INTEGER) AS theID&lt;br /&gt;
SELECT CONVERT(SUBSTRING(content, 12), SIGNED INTEGER) AS theID&lt;br /&gt;
SELECT SUBSTRING(content, 12) * 1 AS theID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert BLOB Into a String ====&lt;br /&gt;
&lt;br /&gt;
 SELECT CONVERT(exampleColumn USING utf8) AS exampleColumn FROM exampleTable&lt;br /&gt;
&lt;br /&gt;
* In PhpMyAdmin you can also:&lt;br /&gt;
** download the blob data, by clicking e.g. [BLOB - 6B] link (activates download), downloading it to your computer and opening it with text editor.&lt;br /&gt;
** select &amp;quot;+ Options&amp;quot; from browse data mode and select &amp;lt;code&amp;gt;Show BLOB contents&amp;lt;/code&amp;gt; checkbox.&lt;br /&gt;
&lt;br /&gt;
==== Search String From BLOB ====&lt;br /&gt;
&lt;br /&gt;
BLOB data is stored as a binary data thus it's case sensitive. You can make a case sensitive query by (returns only 'The'):&lt;br /&gt;
 SELECT * FROM `dr_locales_source` WHERE source LIKE '%The%'&lt;br /&gt;
&lt;br /&gt;
If you want to make case-insensitive comparison (e.g. The, the, thE), you can convert BLOB to string using utf8 encoding:&lt;br /&gt;
 SELECT * FROM `dr_locales_source` WHERE CONVERT(source USING UTF8) LIKE '%The%'&lt;br /&gt;
&lt;br /&gt;
=== NULL ===&lt;br /&gt;
&lt;br /&gt;
Find NULL values:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT * FROM USERS&lt;br /&gt;
WHERE 'middle_name' IS NULL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Find values different than NULL:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT * FROM USERS&lt;br /&gt;
WHERE 'middle_name' IS NOT NULL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Explain ===&lt;br /&gt;
&lt;br /&gt;
* Good source: http://www.slideshare.net/phpcodemonkey/mysql-explain-explained&lt;br /&gt;
&lt;br /&gt;
Tool to optimize queries. The '''EXPLAIN''' statement can be used either as a way to obtain information about how MySQL executes a statement, or as a synonym for '''DESCRIBE'''.&lt;br /&gt;
&lt;br /&gt;
Get details of the table:&lt;br /&gt;
 EXPLAIN drupal7.node_revision&lt;br /&gt;
 DESCRIBE drupal7.node_revision&lt;br /&gt;
&lt;br /&gt;
Obtain information about the query:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXPLAIN SELECT n.nid, n.title, n.type, frb.body_value, nr . *&lt;br /&gt;
FROM node n&lt;br /&gt;
JOIN node_revision nr ON n.nid = nr.nid&lt;br /&gt;
JOIN field_revision_body frb ON n.nid = frb.entity_id&lt;br /&gt;
ORDER BY n.nid DESC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''EXPLAIN EXTENDED''' can be used to obtain additional information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXPLAIN EXTENDED SELECT n.nid, n.title&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A good way to keep up to date which queries need optimization and further investigation with &amp;lt;code&amp;gt;EXPLAIN&amp;lt;/code&amp;gt; statement is to enable '''MySQL's Slow Query Log'''&lt;br /&gt;
&lt;br /&gt;
* Use the mysqladmin command line tool to identify more general problems. The Following query will show mysql server's extended status information and updates it every 10 seconds.&lt;br /&gt;
 mysqladmin -u dbuser -p -r -i 10 extended-status&lt;br /&gt;
&lt;br /&gt;
Example: Booking application schema&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | attendees table&lt;br /&gt;
|-&lt;br /&gt;
!attendee_id&lt;br /&gt;
!surname&lt;br /&gt;
!conference_id&lt;br /&gt;
!registration_status&lt;br /&gt;
|-&lt;br /&gt;
| INTEGER (PK)&lt;br /&gt;
| VARCHAR&lt;br /&gt;
| INTEGER(FK)&lt;br /&gt;
| TINYINT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | conferences table&lt;br /&gt;
|-&lt;br /&gt;
!conference_id&lt;br /&gt;
!location_id&lt;br /&gt;
!topic_id&lt;br /&gt;
!date&lt;br /&gt;
|-&lt;br /&gt;
| INTEGER (PK)&lt;br /&gt;
| INTEGER(FK)&lt;br /&gt;
| INTEGER(FK)&lt;br /&gt;
| DATE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXPLAIN SELECT * FROM attendees WHERE conference_id = 123 AND registration_status &amp;gt; 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''possible_keys''' - All possible indicies mysql could use. Query will choose the best one of the availeble ones (if any).&lt;br /&gt;
* '''key''' - The chosen index key for the query. If NULL, no useful index was found --&amp;gt; query needs to be optimized.&lt;br /&gt;
* '''rows''' - All the rows needed to scan for your query&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot;&lt;br /&gt;
!table&lt;br /&gt;
!possible_keys&lt;br /&gt;
!key&lt;br /&gt;
!rows&lt;br /&gt;
|-&lt;br /&gt;
|attendees&lt;br /&gt;
|NULL&lt;br /&gt;
|NULL&lt;br /&gt;
|14052&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Conclusion:&lt;br /&gt;
* No suitable indexes found for this query&lt;br /&gt;
* Mysql had to do a full table scan (almost always the slowest query)&lt;br /&gt;
&lt;br /&gt;
 ALTER TABLE ADD INDEX conf (conference_id);&lt;br /&gt;
 ALTER TABLE ADD INDEX reg (registration_status);&lt;br /&gt;
 EXPLAIN SELECT * FROM attendees WHERE conference_id = 123 AND registration_status &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot;&lt;br /&gt;
!table&lt;br /&gt;
!possible_keys&lt;br /&gt;
!key&lt;br /&gt;
!rows&lt;br /&gt;
|-&lt;br /&gt;
|attendees&lt;br /&gt;
|conf,reg&lt;br /&gt;
|conf&lt;br /&gt;
|331&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Mysql chose the more unique index '''conf''' and had to scan only 331 rows compared to previous full table scan with 14052 rows&lt;br /&gt;
&lt;br /&gt;
== MySQL ==&lt;br /&gt;
&lt;br /&gt;
=== Databases ===&lt;br /&gt;
&lt;br /&gt;
==== Create a Database ====&lt;br /&gt;
&lt;br /&gt;
===== mysql Commandline Tool =====&lt;br /&gt;
&lt;br /&gt;
First access the MySQL server&lt;br /&gt;
 mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Create database&lt;br /&gt;
 CREATE DATABASE exampledatabase;&lt;br /&gt;
&lt;br /&gt;
If you want to grant permissions also for someone else than root user&lt;br /&gt;
 GRANT ALL ON exampledatabase.* TO exampleuser@localhost IDENTIFIED BY &amp;quot;examplepassword&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
Exit mysql admin&lt;br /&gt;
 quit&lt;br /&gt;
&lt;br /&gt;
You can now test login with previously specified user&lt;br /&gt;
 mysql -u exampleuser -p&lt;br /&gt;
&lt;br /&gt;
Check if you see the right databases&lt;br /&gt;
 SHOW DATABASES;&lt;br /&gt;
&lt;br /&gt;
==== Select a Database ====&lt;br /&gt;
&lt;br /&gt;
 USE exampledatabase;&lt;br /&gt;
&lt;br /&gt;
==== Delete / Drop a Database ====&lt;br /&gt;
&lt;br /&gt;
 DROP DATABASE `phpbb3seo`&lt;br /&gt;
Note! MySQL won't free the space after database is deleted. Instead of that it will reuse the space later when new data is added. File is probably: /var/lib/mysql/ibdata1.&lt;br /&gt;
* To shrink the size you will need to dump all databases and then restore them again.&lt;br /&gt;
* You can also do the following: Set innodb_file_per_table in your config file, which will create a separate file per table. That will then allow you to delete these files once a database is dropped and also allow you to use the OPTIMIZE TABLE command to rebuild ibd files if you shrink the data in a particular table.&lt;br /&gt;
&lt;br /&gt;
=== Tables ===&lt;br /&gt;
&lt;br /&gt;
[[MySQL_Server#MySQL_Datatypes | MySQL Datatypes]]&lt;br /&gt;
&lt;br /&gt;
==== Create a Table ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE IF NOT EXISTS `url_alias` (&lt;br /&gt;
  `pid` int(10) unsigned NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `src` varchar(128) NOT NULL DEFAULT '',&lt;br /&gt;
  `dst` varchar(128) NOT NULL DEFAULT '',&lt;br /&gt;
  `language` varchar(12) NOT NULL DEFAULT '',&lt;br /&gt;
  PRIMARY KEY (`pid`),&lt;br /&gt;
  UNIQUE KEY `dst_language_pid` (`dst`,`language`,`pid`),&lt;br /&gt;
  KEY `src_language_pid` (`src`,`language`,`pid`)&lt;br /&gt;
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=35;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create a Temporary Table ====&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
==== Copy a Table ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE `drupal6`.`permission_bak` (&lt;br /&gt;
`pid` int( 11 ) NOT NULL AUTO_INCREMENT ,&lt;br /&gt;
`rid` int( 10 ) unsigned NOT NULL DEFAULT '0',&lt;br /&gt;
`perm` longtext,&lt;br /&gt;
`tid` int( 10 ) unsigned NOT NULL DEFAULT '0',&lt;br /&gt;
PRIMARY KEY ( `pid` ) ,&lt;br /&gt;
KEY `rid` ( `rid` )&lt;br /&gt;
) ENGINE = MYISAM DEFAULT CHARSET = utf8;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO `drupal6`.`permission_bak`&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM `drupal6`.`permission` ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Delete/drop Table ====&lt;br /&gt;
&lt;br /&gt;
 DROP TABLE dr_imagecache_action&lt;br /&gt;
To avoid an error message in case the table don't exist (&amp;lt;code&amp;gt;#1051 - Unknown table 'dr_imagecache_action' &amp;lt;/code&amp;gt;) use &amp;lt;code&amp;gt;IF EXISTS&amp;lt;/code&amp;gt; check:&lt;br /&gt;
 DROP TABLE IF EXISTS dr_imagecache_action&lt;br /&gt;
&lt;br /&gt;
==== Drop Multiple Tables ====&lt;br /&gt;
&lt;br /&gt;
If you want to drop multiple tables using wildcard in table name, here's solution.&lt;br /&gt;
Use &amp;lt;code&amp;gt;SHOW TABLES&amp;lt;/code&amp;gt; to get the wanted table list, e.g.&lt;br /&gt;
 SHOW TABLES LIKE 'phpbb_%';&lt;br /&gt;
&lt;br /&gt;
Then just form your remove query with resulted text:&lt;br /&gt;
 DROP TABLE phpbb_tbl1,phpbb_tbl2, phpbb_tbl3;&lt;br /&gt;
&lt;br /&gt;
If you want to do this with shell commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u your_user -D your_database_name -e &amp;quot;show tables&amp;quot; -s | &lt;br /&gt;
  egrep &amp;quot;^Whatever_&amp;quot; | &lt;br /&gt;
  xargs -I &amp;quot;@@&amp;quot; echo mysql -u your_user -D your_database_name -e &amp;quot;DROP TABLE @@&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
See more from: http://stackoverflow.com/questions/456751/drop-mysql-databases-matching-some-wildcard&lt;br /&gt;
&lt;br /&gt;
==== Copy Multiple Tables Using Linux Shell Scripting ====&lt;br /&gt;
&lt;br /&gt;
Execute a SQL query to get the wanted table names, e.g.&lt;br /&gt;
 SHOW TABLES LIKE 'phpbb_%';&lt;br /&gt;
&lt;br /&gt;
Save table names to text file:&lt;br /&gt;
 vim tablenames.txt&lt;br /&gt;
&lt;br /&gt;
Execute shell command to get the right queries. Pipe table names through &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; which takes each line in the list of table names, and inserts it in the &amp;quot;@@&amp;quot; part in the command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat tablenames.txt | &lt;br /&gt;
  xargs -I &amp;quot;@@&amp;quot; echo &amp;quot;CREATE TABLE drupal6.dr_@@ LIKE drupal5bu.@@; INSERT INTO drupal6.dr_@@ SELECT * FROM drupal5bu.@@;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can execute sql queries straight to sql-server by removing &amp;quot;echo&amp;quot;-part and adding mysql commands, e.g.&lt;br /&gt;
 mysql -u root -D database_name -e &amp;quot;sql query;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Rename Table ====&lt;br /&gt;
&lt;br /&gt;
 RENAME TABLE `drupal6`.`dr_imagecache_action_bak` TO `drupal6`.`dr_imagecache_action` ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Print Table Names ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SHOW TABLES; #print tables from current database&lt;br /&gt;
SHOW TABLES FROM drupal622; #show table names from specific database&lt;br /&gt;
SELECT table_name FROM information_schema.tables WHERE table_schema = 'drupal622'; #get table names from information_schema database&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Columns ===&lt;br /&gt;
&lt;br /&gt;
==== Edit column ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE `dr_url_alias` CHANGE `language` `language` VARCHAR( 12 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'exampledefaultvalue'&lt;br /&gt;
ALTER TABLE dr_imagecache_preset CHANGE presetid presetid int(10) UNSIGNED NOT NULL AUTO_INCREMENT&lt;br /&gt;
ALTER TABLE `dr_content_node_field` CHANGE `db_storage` `db_storage` TINYINT NOT NULL DEFAULT 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Add Column ====&lt;br /&gt;
&lt;br /&gt;
Add it as a first column in table with &amp;lt;code&amp;gt;FIRST&amp;lt;/code&amp;gt; word at the end of sql.&lt;br /&gt;
 ALTER TABLE `dr_permission` ADD `pid` INT( 11 ) NOT NULL AUTO_INCREMENT FIRST&lt;br /&gt;
&lt;br /&gt;
Add timestamp column (int) after starttime column&lt;br /&gt;
 ALTER TABLE `sportlog` ADD `timestamp` INT NOT NULL AFTER `starttime`&lt;br /&gt;
&lt;br /&gt;
Add multiple columns:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE `content_type_youtube_video`&lt;br /&gt;
  ADD COLUMN `field_youtube_video_status` int(10) unsigned NOT NULL DEFAULT '1',&lt;br /&gt;
  ADD COLUMN `field_youtube_video_version` int(10) unsigned NOT NULL DEFAULT '0';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Indexes ===&lt;br /&gt;
&lt;br /&gt;
Index types: primary, index, unique, fulltext&lt;br /&gt;
&lt;br /&gt;
==== Definition ====&lt;br /&gt;
&lt;br /&gt;
* Primary key&lt;br /&gt;
* Unique key (combination of three columns?)&lt;br /&gt;
* Key (Normal key to make data search from the table faster)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PRIMARY KEY (`pid`),&lt;br /&gt;
UNIQUE KEY `dst_language_pid` (`dst`,`language`,`pid`),&lt;br /&gt;
KEY `src_language_pid` (`src`,`language`,`pid`)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Add Index ====&lt;br /&gt;
&lt;br /&gt;
 ALTER TABLE `dr_users_roles` ADD INDEX ( `rid` )&lt;br /&gt;
&lt;br /&gt;
==== Add Unique Index ====&lt;br /&gt;
&lt;br /&gt;
 ALTER TABLE `dr_contemplate_files` ADD UNIQUE (`site`) &lt;br /&gt;
&lt;br /&gt;
==== Remove Index ====&lt;br /&gt;
&lt;br /&gt;
You might want to remove one of the duplicate indicies, e.g. if you get following message in MySQLAdmin: &amp;quot;The following indexes appear to be equal and one of them should be removed: site_2, site&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ALTER TABLE `dr_contemplate_files` DROP INDEX `site_2`&lt;br /&gt;
&lt;br /&gt;
==== Update Index ====&lt;br /&gt;
&lt;br /&gt;
To rename indexes you have to recreate the index&lt;br /&gt;
&lt;br /&gt;
 ALTER TABLE `dr_contemplate_files` DROP INDEX `site_2` ,&lt;br /&gt;
 ADD UNIQUE `site` ( `site` )&lt;br /&gt;
&lt;br /&gt;
=== Views ===&lt;br /&gt;
&lt;br /&gt;
[[MySQL_Server#Views]]&lt;br /&gt;
&lt;br /&gt;
=== Backup database using mysqldump tool ===&lt;br /&gt;
&lt;br /&gt;
[[Mysqldump]]&lt;br /&gt;
&lt;br /&gt;
=== Backup database using phpMyAdmin web ui ===&lt;br /&gt;
&lt;br /&gt;
Type e.g. URL http://localhost/phpmyadmin in your browser and choose:&lt;br /&gt;
&lt;br /&gt;
* databases --&amp;gt; export&lt;br /&gt;
* Export format: SQL&lt;br /&gt;
* Save as file (e.g. gzipped)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Restore Database ===&lt;br /&gt;
&lt;br /&gt;
'''Restore database from a file'''&lt;br /&gt;
 mysql -u root -p drupal6 &amp;lt; /root/Desktop/drupal6_20100912.sql&lt;br /&gt;
&lt;br /&gt;
If you get following error message:&lt;br /&gt;
&amp;lt;code&amp;gt;ERROR 1049 (42000): Unknown database 'drupal6'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...you have to create the database before restoring:&lt;br /&gt;
 mysql -u root -p -e 'CREATE DATABASE drupal6;'&lt;br /&gt;
&lt;br /&gt;
'''Restore compressed backup file'''&lt;br /&gt;
 gunzip &amp;lt; drupal6_bu_20110126.sql.gz | mysql -u root -p drupal6&lt;br /&gt;
&lt;br /&gt;
=== Restore Table ===&lt;br /&gt;
&lt;br /&gt;
'''Restore single database table from a file'''&lt;br /&gt;
 mysql -u root -p drupal6 &amp;lt; /root/Desktop/users.sql&lt;br /&gt;
&lt;br /&gt;
'''Restore compressed backup file (zip or lzip)'''&lt;br /&gt;
 gunzip &amp;lt; users.sql.gz | mysql -u root -p drupal6&lt;br /&gt;
 lzip -d &amp;lt; /var/backups/users.sql.lz | mysql -u root -p drupal6 (note! unpacks the file and removes .lz file!)&lt;br /&gt;
 lzip -d --keep &amp;lt; /var/backups/users.sql.lz | mysql -u root -p drupal6 (note! keeps .lz file, without leaving uncompressed file)&lt;br /&gt;
&lt;br /&gt;
=== Manage database users ===&lt;br /&gt;
&lt;br /&gt;
==== Show All Users ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT User,Host FROM mysql.user;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GRANT / Create User ====&lt;br /&gt;
&lt;br /&gt;
Create example user (if doesn't exist?) and give all permissions to example database&lt;br /&gt;
 GRANT ALL PRIVILEGES ON `exampledatabase`.* TO 'exampleuser'@'localhost';&lt;br /&gt;
Create example user and give all permissions to example database and assign a password&lt;br /&gt;
 GRANT ALL ON exampledatabase.* TO exampleuser@localhost IDENTIFIED BY &amp;quot;examplepassword&amp;quot;;&lt;br /&gt;
Give example user selected permissions to drupal6_bu database&lt;br /&gt;
 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON `drupal6\_bu`.* TO 'exampleuser'@'182.128.10.2';&lt;br /&gt;
&lt;br /&gt;
Related error messages:&lt;br /&gt;
 Error: SELECT command denied to user 'drupal'@'www.site.com' for table 'url_alias'&lt;br /&gt;
&lt;br /&gt;
==== REVOKE ====&lt;br /&gt;
&lt;br /&gt;
Revoke all permissions and grant right from example user to example database&lt;br /&gt;
 REVOKE ALL PRIVILEGES ON `exampledatabase`.* FROM exampleuser@localhost;&lt;br /&gt;
 REVOKE GRANT OPTION ON `exampledatabase`.* FROM 'exampleuser'@'localhost';&lt;br /&gt;
 REVOKE DROP ON `exampledatabase`.* FROM 'exampleuser'@'localhost';&lt;br /&gt;
&lt;br /&gt;
==== DELETE USER ====&lt;br /&gt;
&lt;br /&gt;
 DROP USER exampleUser@localhost&lt;br /&gt;
&lt;br /&gt;
=== Check The Size Of Your Databases ===&lt;br /&gt;
&lt;br /&gt;
Execute the following query to your SQL Server:&lt;br /&gt;
&lt;br /&gt;
 SELECT table_schema 'Database name', sum( data_length + index_length ) / 1024 / 1024 'Database size (MB)'&lt;br /&gt;
 FROM information_schema.TABLES GROUP BY table_schema&lt;br /&gt;
&lt;br /&gt;
=== Check Database Table Information, e.g. Size (Show Table Info) ===&lt;br /&gt;
&lt;br /&gt;
* Show table information. In addition to table size it shows also a lot of other information related to tables, e.g. table's mysql engine, update time if MyISAM&lt;br /&gt;
columns: Name, Engine, Version, Row_format, Rows, Avg_row_length, Data_length, Max_data_length, Index_length, Data_free, Auto_increment, Create_time, Update_time, Check_time, Collation, Checksum, Create_options, Comment&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SHOW TABLE STATUS&lt;br /&gt;
SHOW TABLE STATUS LIKE 'sessions'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* More &amp;lt;code&amp;gt;SHOW&amp;lt;/code&amp;gt; commands: http://dev.mysql.com/doc/refman/5.1/en/show.html&lt;/div&gt;</summary>
		<author><name>Creator</name></author>
		
	</entry>
</feed>