SQL

En passant

valeur fixe – afficher une valeur fixe

select 'valeur fixe' from table1
select 'valeur fixe' from dual

SELECT – Changer le type de la variable ‘nom’

CONVERT(VARCHAR(200),nom)

SELECT – Liste les éléments de la table

SELECT * FROM Table1
SELECT t1.name AS nom FROM table1 AS t1
SELECT t1.name nom FROM table1 t1
SELECT COUNT(*) FROM table1

INSERT/UPDATE/DELETE – Gestion des lignes dans une table

Insertion : INSERT INTO [nom_base].[nom_table] VALUES ('val-31','val-32','val-33');
Modification : UPDATE Ref.Brand SET InsertDate = '2018-10-24 15:04:57' where BrandCode='CA'
Supression : DELETE FROM [nom_base].[nom_table] WHERE elt1 = 'val-11'

JOIN – Liste les users qui ont une note avec leur note

SELECT * FROM table1 INNER JOIN table2 ON Col1.id = Col2.Col1_id

LEFT OUTER JOIN – Liste les users avec soit leur note associée, soit NULL s’ils n’ont pas de note

SELECT * FROM table1 LEFT OUTER JOIN table2 ON Col1.id = Col2.Col1_id

RIGHT OUTER JOIN – Liste des notes avec soit les users associés à ces notes, soit NULL si aucun user à eu la note

SELECT * FROM table1 RIGHT OUTER JOIN table2 ON Col1.id = Col2.Col1_id

FULL JOIN – Liste de toutes les notes et tous les users avec un NULL sur note lorsque l’user n’a pas de note et un NULL sur user, lorsqu’une note n’est pas attribuée à un user

SELECT * FROM table1 FULL JOIN table2 ON Col1.id = Col2.Col1_id

UNION – Liste toutes les id des users des lycées 1 et 2 y compris. Ceux qui sont inscrits aux deux lycées apparaissent 1 fois

SELECT table1.id FROM table1 UNION SELECT table2.id FROM table2

UNION ALL – éléments des lignes qui apparaissent dans la table 1 et dans la table 2
tables 1 et 2 des id de users des lycées 1 et 2 => liste toutes les id des users des lycées 1 et 2 y compris. Ceux qui sont inscrits aux deux lycés apparaissnet 2 fois

SELECT table1.id FROM table1 UNION ALL SELECT table2.id FROM table2

COUNT – nb d’utilisateurs dans la table 1

SELECT COUNT(name) FROM table1

DISTINCT – nb d’utilisateurs ayant un nom différent dans la table 1

SELECT COUNT(name distinct) FROM table1

GROUP BY – nb d’utilisateurs par titre dans la table 1

SELECT title, COUNT(*) FROM table1 GROUP by title

MAX – Employé le plus jeune de l’entreprise

SELECT MAX(birth_date) FROM employees;

LIKE – liste des employés

SELECT name FROM employees WHERE name LIKE '%nico%';

Arithmetique – liste des employés

SELECT name FROM employees WHERE number ='1' AND number >='1' AND number >'1' AND number !='1'

subqueries – liste des employés

SELECT name FROM employees WHERE city IN (SELECT DISTINCT city FROM loc WHERE city like %pari%)

SQL Dynamique

DECLARE @sql varchar(Max)
Set @sql = 'SELECT * from Ref.Brand'
PRINT @sql
EXEC (@sql);

CREATE TABLE – Gérer une table dans un schéma

Créer une table : CREATE TABLE [dbo].[test] (id INT NOT NULL PRIMARY KEY, nom varchar(100),);
Supprimer une table : Drop TABLE [dbo].[test] 

ALTER TABLE – Gérer les colonnes d’une table

Ajouter une colonne : ALTER TABLE [dbo].[test] ADD age varchar(10);
Modifier le format d'une colonne : ALTER TABLE [dbo].[test] ALTER COLUMN age varchar(20);
Supprimer une colonne : ALTER TABLE [dbo].[test] DROP COLUMN age ;

Taille des tables d’une base SQL

SELECT S.name + '.' + T.name AS tableName, T.create_date As creationDate, SUM(PS. row_count) AS nbRows, SUM(PS.reserved_page_count) * 8192 AS tableSize
FROM sys.dm_db_partition_stats AS PS 
INNER JOIN sys.tables AS T  ON PS.object_id = T.object_id
INNER JOIN sys.schemas AS S ON S.schema_id = T.schema_id
WHERE PS.index_id BETWEEN 0 AND 1 AND T.name <> 'sysdiagrams'
GROUP BY S.name, T.name, T.create_date

Tutos : https://www.w3schools.com/sql/default.asp