This repository contains solutions for various SQL websites -
- Hackerrank
- Interview Query
- SQLZoo -
- DataLemur
- LeetCode
- Stratascratch
- DataFord.io
- Leetcode SQL50
- Window Function
- Finding Data Queries
- Data Modification Queries
- Reporting Queries
- Join Queries
- View Queries
- Altering Table Queries
- Creating Table Query
- String functions (CONCAT, LENGTH, SUBSTRING, REPLACE, UPPER, LOWER)
- Date and time functions (DATE, TIME, TIMESTAMP, DATEPART, DATEADD, DATA_FORMAT)
- Numeric functions (ROUND, CEILING, FLOOR, ABS, MOD)
- Conditional functions (CASE, COALESCE, NULLIF)
SELECT*FROMtable_name;
SELECT DISTINCTcolumn_name;
SELECTcolumn1, column2FROMtable_nameWHEREcondition;SELECT*FROMtable_nameWHEREcondition1ANDcondition2;SELECT*FROMtable_nameWHEREcondition1ORcondition2;SELECT*FROMtable_nameWHERE NOTcondition;SELECT*FROMtable_nameWHEREcondition1AND(condition2ORcondition3);SELECT*FROMtable_nameWHERE EXISTS(SELECTcolumn_nameFROMtable_nameWHEREcondition);
SELECT*FROMtable_nameORDER BYcolumn;SELECT*FROMtable_nameORDER BYcolumnDESC;SELECT*FROMtable_nameORDER BYcolumn1ASC, column2DESC;
SELECT TOPnumber columns_namesFROMtable_nameWHEREcondition;SELECT TOPpercent columns_namesFROMtable_nameWHEREcondition;- Not all database systems support
SELECT TOP. The MySQL equivalent is theLIMITclause SELECTcolumn_namesFROMtable_nameLIMIToffset, count;
- % (percent sign) is a wildcard character that represents zero, one, or multiple characters
- _ (underscore) is a wildcard character that represents a single character
SELECTcolumn_namesFROMtable_nameWHEREcolumn_nameLIKEpattern;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β[a-c]%β (find any values starting with βaβ, βbβ, or βcβ
- essentially the IN operator is shorthand for multiple OR conditions
SELECTcolumn_namesFROMtable_nameWHEREcolumn_nameIN(value1, value2, β¦);SELECTcolumn_namesFROMtable_nameWHEREcolumn_nameIN(SELECT STATEMENT);
SELECTcolumn_namesFROMtable_nameWHEREcolumn_nameBETWEENvalue1ANDvalue2;SELECT*FROMProductsWHERE(column_nameBETWEENvalue1ANDvalue2)AND NOTcolumn_name2IN(value3, value4);SELECT*FROMProductsWHEREcolumn_nameBETWEEN#01/07/1999# AND #03/12/1999#;
SELECT*FROMtable_nameWHEREcolumn_nameIS NULL;SELECT*FROMtable_nameWHEREcolumn_nameIS NOT NULL;
SELECTcolumn_nameASalias_nameFROMtable_name;SELECTcolumn_nameFROMtable_nameASalias_name;SELECTcolumn_nameASalias_name1, column_name2ASalias_name2;SELECTcolumn_name1, column_name2 + β, β + column_name3ASalias_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
SELECTcolumns_namesFROMtable1UNION SELECTcolumn_nameFROMtable2;UNIONoperator only selects distinct values,UNION ALLwill allow duplicates
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
SELECTcolumns_namesFROMtable1INTERSECT SELECTcolumn_nameFROMtable2;
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
SELECTcolumns_namesFROMtable1EXCEPT SELECTcolumn_nameFROMtable2;
- The
ANYoperator returns true if any subquery values meet the condition - The
ALLoperator returns true if all subquery values meet the condition SELECTcolumns_namesFROMtable1WHEREcolumn_name operator (ANY|ALL) (SELECTcolumn_nameFROMtable_nameWHEREcondition);
GROUP BY: statement often used with aggregate functions (COUNT, MAX, MIN, SUM, AVG) to group the result-set by one or more columns
SELECTcolumn_name1, COUNT(column_name2)FROMtable_nameWHEREconditionGROUP BYcolumn_name1ORDER BYCOUNT(column_name2) DESC;
HAVING: this clause was added to SQL because the WHERE keyword could not be used with aggregate functions
SELECTCOUNT(column_name1), column_name2FROMtableGROUP BYcolumn_name2HAVINGCOUNT(column_name1)> 5;
INSERT INTOtable_name (column1, column2)VALUES(value1, value2);INSERT INTOtable_nameVALUES(value1, value2 β¦);
UPDATEtable_nameSETcolumn1 = value1, column2 = value2WHEREcondition;UPDATEtable_nameSETcolumn_name = value;
DELETE FROMtable_nameWHEREcondition;DELETE*FROMtable_name;
SELECT COUNT (DISTINCTcolumn_name);
SELECT MIN (column_names) FROMtable_nameWHEREcondition;SELECT MAX (column_names) FROMtable_nameWHEREcondition;
SELECT AVG (column_name) FROMtable_nameWHEREcondition;
SELECT SUM (column_name) FROMtable_nameWHEREcondition;
SELECTcolumn_namesFROMtable1INNER JOINtable2ONtable1.column_name=table2.column_name;SELECTtable1.column_name1, table2.column_name2, table3.column_name3FROM((table1INNER JOINtable2ONrelationship)INNER JOINtable3ONrelationship);
LEFT (OUTER) JOIN: returns all records from the left table (table1), and the matched records from the right table (table2)
SELECTcolumn_namesFROMtable1LEFT JOINtable2ONtable1.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)
SELECTcolumn_namesFROMtable1RIGHT JOINtable2ONtable1.column_name=table2.column_name;
SELECTcolumn_namesFROMtable1FULL OUTER JOINtable2ONtable1.column_name=table2.column_name;
SELECTcolumn_namesFROMtable1 T1, table1 T2WHEREcondition;
CREATE VIEWview_nameAS SELECTcolumn1, column2FROMtable_nameWHEREcondition;
DROP VIEWview_name;
ALTER TABLEtable_nameADDcolumn_name column_definition;
ALTER TABLEtable_nameMODIFYcolumn_name column_type;
ALTER TABLEtable_nameDROP COLUMNcolumn_name;
CREATE TABLEtable_name(
column1datatype,
column2datatype,
column3datatype,
column4datatype,
);