- DDL (Data Definition Language)
- DML (Data Manipulation Language)
- DCL (Data Control Language)
- TCL (Transaction Control Language)
- https://github.com/enochtangg/quick-SQL-cheatsheet
- http://www.dusun-think.net/dosya/czyayin/mysqlcheatsheet.pdf
- https://www.cheatography.com/guslong/cheat-sheets/essential-mysql/
- https://data36.com/wp-content/uploads/2018/12/sql-cheat-sheet-for-data-scientists-by-tomi-mester.pdf
- https://www.kdnuggets.com/2018/07/sql-cheat-sheet.html
- https://devhints.io/mysql
- http://www.sqltutorial.org/sql-cheat-sheet/
Definition: Deals with descriptions of the database schema and is used to create and modify the structure of database objects
Examples of DDL commands:
CREATE
– is used to create the database or its objects (like table, index, function, views, store procedure and triggers).DROP
– is used to delete objects from the database.ALTER
- is used to alter the structure of the database.TRUNCATE
– is used to remove all records from a table, including all spaces allocated for the records are removed.COMMENT
– is used to add comments to the data dictionary.RENAME
– is used to rename an object existing in the database.
CREATE DATABASE
database_nameCREATE TABLE
(col def,…,PRIMARY KEY(col),FOREIGN KEY (col) REFERENCES table(col2))CREATE PROCEDURE
procedure_nameAS
sql_statementGO
;CREATE INDEX
idx_cityON
table_customers(field_city);DROP INDEX
idx_cityON
table_customers;CREATE VIEW
view_nameAS SELECT
column1, column2FROM
table_nameWHERE
condition;CREATE TRIGGER
[TRIGGER_NAME] [before | after] {insert | update | delete}on
[table_name] [FOR/AFTER/INSTEAD OF] [INSERT/UPDATE/DELETE]AS
[trigger_body]
ALTER TABLE
table_nameADD
column_name column_definition;
ALTER TABLE
table_nameMODIFY
column_name column_type;
ALTER TABLE
table_nameDROP COLUMN
column_name;
DROP
database_nameDROP VIEW
view_name;
TRUNCATE TABLE
table_name;
RENAME TABLE
table_name TO new_table_name;RENAME DATABASE
database_name TO new_database_name;
EXEC procedure_name;
Definition: Deals with the manipulation of data present in database
Examples of DML:
SELECT
– is used to retrieve data from the a database.INSERT
– is used to insert data into a table.UPDATE
– is used to update existing data within a table.DELETE
– is used to delete records from a database table.
SELECT
*FROM
table_name;SELECT
*FROM
view_name;
DISTINCT: returns distinct values only (filters away duplicate values and returns rows of specified column)
SELECT DISTINCT
column_name;
SELECT
column1, column2FROM
table_nameWHERE
condition;SELECT
*FROM
table_nameWHERE
condition1AND
condition2;SELECT
*FROM
table_nameWHERE
condition1OR
condition2;SELECT
*FROM
table_nameWHERE NOT
condition;SELECT
*FROM
table_nameWHERE
condition1AND
(condition2OR
condition3);SELECT
*FROM
table_nameWHERE EXISTS
(SELECT
column_nameFROM
table_nameWHERE
condition);
WHERE
exp AND|OR
exp AND|OR
exp…
where exp
can be one of the following:
- column
=
value - column
>
value - column
>=
value - column
<
value - column
<=
value - column
BETWEEN
value1AND
value2 - column
IN
(value1,value2,…) - column
NOT IN
(value1,value2,…) - column
LIKE
value - column
NOT LIKE
value
SELECT
*FROM
table_nameORDER BY
column;SELECT
*FROM
table_nameORDER BY
columnDESC
;SELECT
*FROM
table_nameORDER BY
column1ASC
, column2DESC
;
SELECT TOP
number columns_namesFROM
table_nameWHERE
condition;SELECT TOP
percent columns_namesFROM
table_nameWHERE
condition;- Not all database systems support
SELECT TOP
. The MySQL equivalent is theLIMIT
clause SELECT
column_namesFROM
table_nameLIMIT
offset, count;
- % (percent sign) is a wildcard character that represents zero or more characters
- _ (underscore) is a wildcard character that represents a single character (_ is exactly one character in the LIKE statement)
SELECT
column_namesFROM
table_nameWHERE
column_nameLIKE
pattern;LIKE
‘a%’ (find any values that start with “a”)LIKE
‘%a’ (find any values that end with “a”)LIKE
‘%or%’ (find any values that have “or” in any position)LIKE
‘_r%’ (find any values that have “r” in the second position)LIKE
‘a__%’ (find any values that start with “a” and are at least 3 characters in length)LIKE
‘[a-c]%’ (find any values starting with “a”, “b”, or “c”LIKE
'%[^0-9]%' (match all strings that don't have a digit)
- essentially the IN operator is shorthand for multiple OR conditions
SELECT
column_namesFROM
table_nameWHERE
column_nameIN
(value1, value2, …);SELECT
column_namesFROM
table_nameWHERE
column_nameIN
(SELECT STATEMENT
);
SELECT
column_namesFROM
table_nameWHERE
column_nameBETWEEN
value1AND
value2;SELECT
*FROM
ProductsWHERE
(column_nameBETWEEN
value1AND
value2)AND NOT
column_name2IN
(value3, value4);SELECT
*FROM
ProductsWHERE
column_nameBETWEEN
#01/07/1999# AND #03/12/1999#;
SELECT
*FROM
table_nameWHERE
column_nameIS NULL
;SELECT
*FROM
table_nameWHERE
column_nameIS NOT NULL
;
SELECT
column_nameAS
alias_nameFROM
table_name;SELECT
column_nameFROM
table_nameAS
alias_name;SELECT
column_nameAS
alias_name1, column_name2AS
alias_name2;SELECT
column_name1, column_name2 + ‘, ‘ + column_name3AS
alias_name;
- Each SELECT statement within UNION must have the same number of columns
- The columns must have similar data types
- The columns in each SELECT statement must also be in the same order
SELECT
columns_namesFROM
table1UNION SELECT
column_nameFROM
table2;UNION
operator only selects distinct values,UNION ALL
will allow duplicates
SELECT
column_namesFROM
table1INNER JOIN
table2ON
table1.column_name=table2.column_name;SELECT
table1.column_name1, table2.column_name2, table3.column_name3FROM
((table1INNER JOIN
table2ON
relationship)INNER JOIN
table3ON
relationship);
- LEFT (OUTER) JOIN: returns all records from the left table (table1), and the matched records from the right table (table2)
SELECT
column_namesFROM
table1LEFT JOIN
table2ON
table1.column_name=table2.column_name;
- RIGHT (OUTER) JOIN: returns all records from the right table (table2), and the matched records from the left table (table1)
SELECT
column_namesFROM
table1RIGHT JOIN
table2ON
table1.column_name=table2.column_name;
SELECT
column_namesFROM
table1FULL OUTER JOIN
table2ON
table1.column_name=table2.column_name;
SELECT
column_namesFROM
table1 T1, table1 T2WHERE
condition;
- Each row from 1st table joins with all the rows of 2nd table.
Example:
table_a | table_b |
---|---|
1 | a |
2 | b |
3 | c |
SELECT
a.num, b.word
FROM
table_a a
CROSS JOIN
table_b b;
Result:
num | word |
---|---|
1 | a |
2 | a |
3 | a |
1 | b |
2 | b |
3 | b |
1 | c |
2 | c |
3 | c |
INTERSECT: set operator which is used to return the records that two SELECT statements have in common
- Generally used the same way as UNION above
SELECT
columns_namesFROM
table1INTERSECT SELECT
column_nameFROM
table2;
EXCEPT: set operator used to return all the records in the first SELECT statement that are not found in the second SELECT statement
- Generally used the same way as UNION above
SELECT
columns_namesFROM
table1EXCEPT SELECT
column_nameFROM
table2;
- The
ANY
operator returns true if any subquery values meet the condition - The
ALL
operator returns true if all subquery values meet the condition SELECT
columns_namesFROM
table1WHERE
column_name operator (ANY
|ALL
) (SELECT
column_nameFROM
table_nameWHERE
condition);
GROUP BY: statement often used with aggregate functions (COUNT, MAX, MIN, SUM, AVG) to group the result-set by one or more columns
SELECT
column_name1, COUNT(column_name2)FROM
table_nameWHERE
conditionGROUP BY
column_name1ORDER BY
COUNT(column_name2) DESC;
HAVING: this clause was added to SQL because the WHERE keyword could not be used with aggregate functions
SELECT
COUNT
(column_name1), column_name2FROM
tableGROUP BY
column_name2HAVING
COUNT(
column_name1)
> 5;
WITH: often used for retrieving hierarchical data or re-using temp result set several times in a query. Also referred to as "Common Table Expression"
WITH RECURSIVE
cteAS
(
SELECT
c0.*FROM
categoriesAS
c0WHERE
id = 1# Starting point
UNION ALL
SELECT
c1.*FROM
categoriesAS
c1JOIN
cteON
c1.parent_category_id = cte.id
)
SELECT
*
FROM
cte
SELECT COUNT (DISTINCT
column_name)
;
SELECT MIN (
column_names) FROM
table_nameWHERE
condition;SELECT MAX (
column_names) FROM
table_nameWHERE
condition;
SELECT AVG (
column_name) FROM
table_nameWHERE
condition;
SELECT SUM (
column_name) FROM
table_nameWHERE
condition;
Used to insert new records/rows in a table
INSERT INTO
table_name (column1, column2)VALUES
(value1, value2);INSERT INTO
table_nameVALUES
(value1, value2 …);
Used to modify the existing records in a table
UPDATE
table_nameSET
column1 = value1, column2 = value2WHERE
condition;UPDATE
table_nameSET
column_name = value;
Used to delete existing records/rows in a table
DELETE FROM
table_nameWHERE
condition;DELETE
*FROM
table_name;
Definition: Deals with the rights, permissions and other controls of the database system
Examples of DCL commands:
GRANT
-gives user’s access privileges to database.REVOKE
-withdraw user’s access privileges given by using the GRANT command.
GRANT
privilege_nameON
object_name {Database_name|Table_name|View_name|Dashboard_name}TO
{user_name |PUBLIC |role_name}- [WITH GRANT OPTION];
privilege_name[ALL|EXECUTE|SELECT|INSERT|UPDATE|DELETE|CREATE|ALTER|DROP]
REVOKE
privilege_nameON
object_name {Database_name|Table_name|View_name|Dashboard_name}FROM
{user_name |PUBLIC |role_name}
Example: Revoke ALL ANSI-92 permissions (ie: SELECT
, INSERT
, UPDATE
, DELETE
, and REFERENCES
) on a table for a user named anderson
REVOKE ALL ON
employeesFROM
anderson;
ACCESS
ALL
CREATE TABLE
CREATE VIEW
CREATE DASHBOARD
DROP
DROP VIEW
DELETE DASHBOARD
SELECT
,INSERT
,TRUNCATE
,UPDATE
,DELETE
SELECT VIEW
EDIT DASHBOARD
VIEW DASHBOARD
VIEW SQL EDITOR
SELECT
,INSERT
,TRUNCATE
,UPDATE
,DELETE
DROP
TRIGGER
REFERENCES
EXECUTE
SELECT
DROP
VIEW
EDIT
DELETE
Definition: Deals with the transaction within the database
Examples of TCL commands:
COMMIT
– commits a Transaction.ROLLBACK
– rollbacks a transaction in case of any error occurs.SAVEPOINT
–sets a savepoint within a transaction.SET TRANSACTION
–specify characteristics for the transaction.
SELECT
col1FROM
tblORDER BY
RAND()LIMIT
10;//returns 10 rows random
LOAD DATA INFILE
″filename″INTO TABLE
table
SHOW DATABASES|TABLES
SHOW COLUMNS FROM
table