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