Skip to content

Commit

Permalink
[sql/en] More examples (#4898)
Browse files Browse the repository at this point in the history
  • Loading branch information
Th3G33k authored Apr 19, 2024
1 parent 5ac6da0 commit fbd84cf
Showing 1 changed file with 48 additions and 1 deletion.
49 changes: 48 additions & 1 deletion sql.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ language: SQL
filename: learnsql.sql
contributors:
- ["Bob DuCharme", "http://bobdc.com/"]
- ["Th3G33k", "https://github.com/Th3G33k"]
---

Structured Query Language (SQL) is an [ISO/IEC 9075](https://www.iso.org/standard/63555.html) standard language for creating and working with databases stored in a set of tables. Implementations usually add their own extensions to the language; [Comparison of different SQL implementations](http://troels.arvin.dk/db/rdbms/) is a good reference on product differences.
Expand All @@ -15,6 +16,10 @@ Several of these sample commands assume that the [MySQL employee sample database
```sql
-- Comments start with two hyphens. End each command with a semicolon.

/*
Multi-line comments
*/

-- SQL is not case-sensitive about keywords. The sample commands here
-- follow the convention of spelling them in upper-case because it makes
-- it easier to distinguish them from database, table, and column names.
Expand Down Expand Up @@ -54,7 +59,22 @@ SELECT * FROM departments WHERE dept_name LIKE 'S____';
SELECT DISTINCT title FROM titles;

-- Same as above, but sorted (case-sensitive) by the title values.
SELECT DISTINCT title FROM titles ORDER BY title;
-- The order can be specified by adding ASC (ascending) or DESC (descending).
-- If omitted, it will sort in ascending order by default.
SELECT DISTINCT title FROM titles ORDER BY title ASC;

-- Use the comparison operators (=, >, <, >=, <=, <>) and
-- the conditional keywords (AND, OR) to refine your queries.
SELECT * FROM departments WHERE dept_no = 'd001' OR dept_no = 'd002'

-- Same as above.
SELECT * FROM departments WHERE dept_no IN ('d001', 'd0002')

-- Opposite of the above.
SELECT * FROM departments WHERE dept_no NOT IN ('d001', 'd0002')

-- Select in a given range.
SELECT * from departments WHERE dept_no BETWEEN 'd001' AND 'd0002'

-- Show the number of rows in the departments table.
SELECT COUNT(*) FROM departments;
Expand All @@ -63,6 +83,24 @@ SELECT COUNT(*) FROM departments;
-- have 'en' as a substring of the dept_name value.
SELECT COUNT(*) FROM departments WHERE dept_name LIKE '%en%';

-- Aggregate functions can be used, with GROUP BY, to compute a value
-- from a set of values. Most commonly used functions are:
-- MIN(), MAX(), COUNT(), SUM(), AVG().
-- Use HAVING to filter rows by aggregated values.

-- Retrieve the total number of employees, by department number,
-- with the condition of having more than 100 employees.
SELECT dept_no, COUNT(dept_no) FROM dept_emp GROUP BY dept_no
HAVING COUNT(dept_no) > 100

-- Aliases, using the optional keyword AS, can be used for column/table names.
SELECT COUNT(A.*) AS total_employees, COUNT(B.*) total_departments
FROM employees AS A, departments B

-- Common date format is "yyyy-mm-dd".
-- However, it can vary according to the implementation, the operating system, and the session's locale.
SELECT * FROM dept_manager WHERE from_date >= '1990-01-01'

-- A JOIN of information from multiple tables: the titles table shows
-- who had what job titles, by their employee numbers, from what
-- date to what date. Retrieve this information, but instead of the
Expand All @@ -75,6 +113,15 @@ SELECT employees.first_name, employees.last_name,
FROM titles INNER JOIN employees ON
employees.emp_no = titles.emp_no LIMIT 10;

-- Combine the result of multiple SELECT.
-- UNION selects distinct rows, UNION ALL selects all rows.
SELECT * FROM departments WHERE dept_no = 'd001'
UNION
SELECT * FROM departments WHERE dept_no = 'd002'

-- SQL syntax order is:
-- SELECT _ FROM _ JOIN _ ON _ WHERE _ GROUP BY _ HAVING _ ORDER BY _ UNION

-- List all the tables in all the databases. Implementations typically provide
-- their own shortcut command to do this with the database currently in use.
SELECT * FROM INFORMATION_SCHEMA.TABLES
Expand Down

0 comments on commit fbd84cf

Please sign in to comment.