Language T-SQL: (TRANSACT SQL propres à Microsoft - extention + languade de prog intégré)
Ligne - Row
colonne - Column
exemple d'intro : SELECT loc FROM dept
obtenir des données : SELECT
Language de manip des données :
INSERT
UPDATE
DELETE
Création de donnée de base de données :
CREATE
ALTER
DROP
RENAME
TRUNCATE
contrôle de transaction :
COMMIT
ROLLBACK
Niveau de Controle des données (permitions):
GRANT
REVOKE
touche F5 pour executer le code ;)
on peut lui demander juste d'executé du code en surlignat le code avant f5 il executera seulement le code selectionner
pour rajouté des com :
/*
totototo
*/
une valeur inconue (différent de 0 que l'on ne connait pas ) on utlilise : NULL
la commande distinc permet de supprimé les doublons : DISTINCT
ex : Select DISTINCT deptno
From emp
afficher la structure des tables :
EXEC sp_columns dept
Exercice 1 :
A) Montrer la structure de la table "EMP"
EXEC sp_columns emp
b) Créer une requête pour afficher :
- Empno
- ename
- job
- hiredate
EXEC sp_columns emp
SELECT empno, ename, job, hiredate
FROM emp
EXERCICES 2:
Créer une requête pour afficher la liste des jobs sans doublon:
Select DISTINCT job
From emp
EXERCICES 3:
afficher le nom et le job séparés par une virgule et un espace
le nom de cette colonne est "employés et titres"
EXEC sp_columns emp
SELECT ename + ', '+ job
AS 'employés et titres'
FROM emp
EXERCICES 4:
créer une requête pour afficher toutes les données (sauf HireDate) de la table EMP.
Chaque données est séparée par une virgule.
Le nom de la colonne est LA SORTIE.
EXEC sp_columns emp
SELECT str(empno) + ', ' + ename + ', ' + job + ', ' + str (mgr)
AS 'LA SORTIE'
FROM emp
rem : STR( ) permet de lui définir que la donnée tenir compe que c'est que du texte pour pas quil en fasse un calcul mathématique ^^
Chapitre 2 :
SELECT ....
FROM .....
WHERE ...... (restreindre les ligne retournées)
ex :
SELECT ename, job, deptno
FROM emp
WHERE deptno=10
=> il afiche le num de département 10 sur 3 colonnes
pour comparer une chaine de caractère on utilise l'apostraphe (').
ex :
SELECT ename, job, deptno
FROM emp
WHERE ename='james'
OPERATEUR DE COMPARAISON :
= égal à
> supérieur à
>= sup ou égal à
< inf à
<= inf ou égal à
<> ou != différent de (utilisé de pref != pour compatibilité oracle par ex ;)
exemples :
SELECT ename, sal, comm
FROM emp
Where sal<comm
autres opérateurs :
BETWEEN ... AND .... entre deux valeurs (inclues)
IN(list) correspondant à une valuer de la liste
LIKE répondant au modèle
IS NULL est une valeur nulle
BETWEEN :
ex :
salaire entre 1000 et 1500
SELECT ename, sal
FROM emp
Where sal BETWEEN 1000 and 1500
IN :
SELECT ename, sal,mgr
FROM emp
WHERE mgr IN (7902, 7608)
LIKE :
% zéro ou plusierus caractères
[] un caractère de la plage spécifiée
_ un caractère
ex :
like '[a]%'
=> tt les mot qui commence par a
ex:
select ename
from emp
where ename like 's%'
=> tt les mots qui commence par s
ex :
select ename
from emp
where ename like 's[a-e]'
=> tt les mot qui commence par s et que le 2ème lettre comprise entre a et e
LIKE option ESCAPE:
pour rechercher un caractère mais qui est utilisé comme opérateur dans la commande
ex :
select ename
from emp
where ename like '%a\_b%' escape '\'
IS NULL :
détermine si les valeurs sont nulles
ex :
select ename, mgr
from emp
where mgr IS NULL
Opérateurs logiques :
AND retourne TRUE si les deux conditions sont vraies
OR retourne TRUE si au moin une condition est vraie
NOT retourne TRUE si la condition est fausse (FALSE)
ex :
SELECT empno, ename, job, sal
FROM emp
WHERE sal>=1100
AND job ='clerk'
Règle de priorité :
1) opérateur de comparaison
2) NOT
3) AND
4) OR
=> il faut utilisé des parenthèses pour "forcer" l'ordre de priorité.
ORDER BY
=> trier les lignes par ordre :
ASC (croissant)
DESC (décroissant)
EXERCICES :
Créer une requête pour afficher le nom et le salaire des employés ayant plus de $2850
SELECT ename, sal
From emp
WHERE sal>2850
Créer une requête pour afficher le nom et le numéro de département de l'employé numéros 7566
SELECT ename, deptno
From emp
where empno=7566
Créer une requête pour afficher le nom et le salaire des employés dont le salaire n'est pas compris entre $1500 et $2850
SELECT ename, sal
FROM emp
WHERE sal not between 1500 and 2850
affiché le nom, le métier et la date d'engagement des employés engagés entre le 20 février 1981 et le 1er mars 1981.
Trier le résultat par ordre d'arrivée dans la société.
Select ename, job, hiredate
From emp
Where hiredate between '02/02/1981' and '03/01/1981'
order by hiredate asc
Afficher le nom et le numéros de département des employés dont le numéro de département est soit 10, soit 30.
Trier le résultat par ordre alphabétique sur le nom
Select ename, deptno
FROM emp
Where deptno=10 or deptno=30
order by ename asc
ou
Select ename, deptno
FROM emp
Where deptno in (10,30)
order by ename asc
Afficher le nom et le salaire des employés qui ont plus de $1500 et sont dans le département 10 ou 30
libeller les collonnes employés et salaire mensuel
SELECT ename as 'employés' , sal as 'salaire mensuel'
FROM emp
Where deptno in (10,30) and sal>1500
Afficher le nom, le salaire et la commission de tous les employés qui ont une commision.
Trier les données par ordre déroissant de salaire et de commision
SELECT ename, sal, comm
from emp
Where comm is not null
order by sal, comm desc
Donner le nom des employés dont la 3ème lettre est un A
SELECT ename
from emp
Where ename like '__A%'
Afficher les employés dont leur nom sontient la séquence LL et qui appartiennent au département 30 ou dont leur manager porte le numéro 7782
SELECT ENAME
FROM emp
where ename like '[LL]' and deptno=30 or MGR=7782
Afficher le nom et le titre de tous les employés qui n'ont pas de manager
SELECT ename, job
FROM emp
Where mgr is 'null'
(tips : isnuméric ( ) => permet de voir si ya un nombre dans la collone il dira si c vrai 1 si c faut 0)
Afficher le nom, le titre et le salaire de tous les employés dont le job n'est ni clerk, ni analyst et dont le salaire n'est ni $1000, ni $3000, ni $5000.
SELECT ename, job
FROM emp
WHERE job <>'clerk' and job <> 'analyst' and not sal=1000 and not sal=3000 and not sal=5000
Tips : (pour avoir de l'aide selectionner la commande et faite F1)
CHAPITRE 3:
... voir slide
Fonctions "Numériques"
ROUND arrondir un nombre décimal
FLOOR tronquer un nombre décimal en nombre
POWER Calculer X puissance Y
Fonction " dates"
GETDATE() date actuelle
DATEDIFF(Month,..) nombre de mois entre 2 dates
DATEADD(month,...) ajoute nmois à une date
DAY(...)
..... voir slide
Fonction ISNULL
=> convertion d'un null en une valeur définie
=> en date
=> en nombre
=> en ...
Exercices :
Afficher le numéro, le nom, le salaire et le salaire augmenté de 15% (en nombre entier) des employés.(+ nom salaire +15% a cette dernière collones)
SELECT empno, ename, sal, round (sal+(sal/100*15),0) as 'SALAIRE+15%'
FROM emp
Modifier cette cequête pour ajouter une colonne contenant la différence de salaire entre l'ancien salaire et le nouveau salaire.
SELECT empno, ename, sal, round (sal+(sal/100*15),0) salaire,(round ((sal/100*15),0))
FROM emp
Pour chaque employé, calculé le nombre de mois écoulés entre leur date d'engagement et aujourd'hui
Libeller cette colonne "mois"
Trier le résultat de l'employé le plus ancien au plus récent.
SELECT ename, DATEDIFF (month,hiredate,getdate()) as 'Mois'
FROM emp
order by mois desc
Afficher les employés :
Dont le nom commence par J,A ou M;
Leur nom en minuscule;
Le nombre de caractères qui composent leur nom.
SELECT lower (ename), len (ename) as 'nombres de caractères pour le nom'
from emp
WHERE left (ename,1) in ('j','a','m')
Ecrire une requête qui affiche pour chaque employé:
- <nom_employé> gagne <salaire> par moi, mais voudrait <3_fois_salaires>
- libeller cette colonne "salaire de rêve"
SELECT ename, sal as 'salaire par moi', sal*3 as 'salaire de rêve'
From emp
exercice 6:
select ename, replicate ( '$',15 - len(sal)) + itrim(str(sal)) as 'salaire'
from emp
CHAPITRE 4
Tables multiples
exercice :
select ename, emp.deptno, dname
from dept, emp
where emp.deptno = dept.deptno
pour vérif la jointure et corespondance des 2 colonnes :
select ename, emp.deptno,dept.deptno, dname
from dept, emp
where emp.deptno = dept.deptno
Afficher le nom, le nom du département et la ville de travail de tous les employés qui ne possèdent pas une commission.
select ename, dept.dname,dept.deptno, loc, grade, emp.comm
from dept, emp, salgrade
where comm is null and emp.deptno = dept.deptno and sal between losal and hisal
tips : on utilise tj is null et nan = null sinan sa marche pas ;)
Afficher la liste de tous les jobs et la localité qui sont dans le département 30.
select job, loc, dep
Chapitre 5:
exercices:
afficher le minimum, le maximum, la somme et la moyenne des salaires pour chaque type de job.
select job,
min (sal) "salaire minimum",
max (sal) "salaire maximum",
sum (sal) "somme des salaires",
avg (sal) "moyenne des salaires"
From emp
group by job
Chapitre 6 : sous requêtes SQL
Afficher le nom et la date d'engagement de tous les employés du même département que Blake.
Blake exclut
select ename, hiredate
from emp
where deptno =
(select deptno
from emp
where ename = 'blake')
and ename != 'blake'
Afficher le numéro et le nom de tous les employés qui ont plus du salaire moyen.
Trier les résultats par ordre décroissant.
Select empno, ename
from emp
WHERE SAL >
(select avg(sal)
from emp)
order by sal desc
Aucun commentaire:
Enregistrer un commentaire