Créer une base de données:
voilà syntax;
create database nom_database;

Créer une table:
syntax: create table nom_table
(
Id int,
Nom varchar(30),
Prénom varchar(34),
email varchar(20)
)

Sélectionner les information:
syntax:
select * from nom_table ;
ou:
select column1,column2,..... from nom_table

Ajouter vers database:
Syntax:
insert into nom_table values(1,'Nom1','Prénom1','email@gmail.com');

Supprimer les données à travers un élement que vous allez choisie:
Syntax:
delete from nom_table where condition;
example :
delete from nom_table where id=1;

supprimer tous les ligne:
syntax:
delete from nom_table;
modifier les information:
syntex:
update nom_table1 set column1 = valeur1, column2 = valeur1 ..... where condition;

Primary key:Example
create table nom_table
(
Id int primary key,
Nom varchar(30) not null,
Prénom varchar(34) not null,
email varchar(20) not null,
);

trier un table :
ordre croissant et décroissant:
select * from nom_table1 order by nom_colonnes choix(asc ou desc);
Example:
select * from nom_table1 order by Nom asc;

ALTER:
L'instruction (ALTER TABLE) est utilisée pour ajouter, modifier ou supprimer des colonnes dans une table existante.
1_Ajouter:
alter table nom_table1 add code int;
2-modifier:
alter table nom_table1 alter column Nom varchar(38) not null;
3-supprimer columns:
alter table nom_table1 drop column nom_column ;

sélectionner  count:
définition:
La fonction  count() est utilisée pour renvoyer les nombre des lignes d'élement dans une table .
Example:
select
count(nom_colonnes) from nom_table1;

Sélectionner les nombre supérieur à 3:
select Id from nom_table1 where Id>3;

Sélectionner   par ordre croissant:
select Id from nom_table1 order by Id desc;

Sélectionner nombre max:
select max (nom_colonnes) from nom_table1;

Sélectionner nombre min:
select min (nom_colonnes) from nom_table1;

trigger sql:
Un trigger dans sql permet d’exécuter un ensemble d’instruction SQL juste
après un événement. Cela permet de faciliter des actions au
sein d’un Système de Gestion de Base de Données .
Syntax:

create trigger nomtrigge
on nomtable
after,for,instead of {[INSERT],[UPDATE],[DELETE]}
as beggin
//code
end
Example:
on suppose table Formateur(id,Nom)
create database databaseFormateur
create table Formateur
(
Id int primary key,
Nom varchar(30)
)
go
create trigger triggerformateur
on Formateur
for insert
as begin
select *from Formateur;
end

insert into Formateur values(1,'stevani');

dans ce example là , résultat est ajouter les information suivants et au même temps afficher.


Rechercher dans base de données:
select * from nom_table where nom_colonnes Like '%mot%'
Example:
select * from Formateur where Nom Like '%M%'

Distinct:
est utilisé avec le mot clé select pour récupérer uniquement des données distinctes et éviter les valeurs en double. syntax:
select distinct nom_colonnes from nom_table ;
ou:
select distinct column1,column2,..... from nom_table

La fonction sum():
Il est utilisé dans une requête SQL pour renvoyer l' addition
syntax:
select sum (nom_colonne) from nom_table where condition

La fonction avg():
Il est utilisé dans une requête SQL pour renvoyer l' addition sur nombre d'enregistrement
syntax:
select nom_colonne1, avg (nom_colonne2) from nom_table group by nom_colonne1

Imaginons une Stagiaire avec deux colonnes Nom et Note

Nom Note
george 19
Stevan 20
george 18
Stevan 16
select Nom, avg (Note) from Stagiaire group by Nom

en utilisant GROUP BY pour définir les Note des mêmes Stagiaires.

Résultat.
la note du Stevan=18
la note du george=18.5

condition having:c'est à dire en français (ayant)
having dans sql est presque similaire à where mais la seule différence que having
permet de utiliser les fonctions par example sum() avg() min() count() max().
Syntax:

select nom_colonne1, avg (nom_colonne2) from nom_table group by nom_colonne1

Imaginons une Stagiaire avec deux colonnes Nom et Note

Nom Note
george 19
Stevan 20
george 18
Stevan 16
select Nom, avg (Note) from Stagiaire group by Nom having avg(Note>18)
Résultat.
la note du Stevan=18
la note du george=18.5
donc la note >18=18.5

procedure:ca veut dir en anglais stored procedure
Une procédure stockée est en fait un ensemble d'instructions exécutées et enregistré au sein de la base de données
par example sélèctionner,ajouter,supprimer,modifier.
Syntax:sélèctionner
create proc nom_procedure
as
select * from nom_table
Syntax:ajouter
create proc nom_procedure
@par1 int varchar bigint-..... ,@par2 int varchar bigint -.....,@par3 int varchar bigint -.....
as
insert into nom_table(id,Nom,Prénom) values(@par1,@par2,@par3)

Jointure SQL:
les jointure en sql permet d'associer plusieur table dans une meme requete
  1. Sql inner join
cette commande permet de retourner les enregistrement lorsqu’il y a au moins une ligne dans chaque colonne
qui correspond à la condition.

Example:

Imaginons les table suivants.


table Ville.
Id_ville nom_ville
1 marrakech
2 rabat
4 casablanca


table Quartier
Id Id_ville quartier_ville
1 1 EL massira 1
2 1 EL massira 2
3 2 Hay Riad
4 null Hay Ennour

Test:
select * from ville inner join quartier on ville.Id_ville=quartier.Id_ville
voilà Le résultat de la requête, Les élèment qui sont pas affichés puisqu’il n’y a pas de references(foreign key).

2. Sql left join
cette commande permet de afficher tous les enregistrement de table gauche et aussi s’il n’y a pas de meme references et remplacé par NULL

Example:

Imaginons les table suivants.


table Ville.
Id_ville nom_ville
1 marrakech
2 rabat
4 casablanca


table Quartier
Id Id_ville quartier_ville
1 1 EL massira 1
2 1 EL massira 2
3 2 Hay Riad
4 null Hay Ennour

Test:
select * from ville left join quartier on ville.Id_ville=quartier.Id_ville

voilà Le résultat de la requête, donc retourner les ville qui n’ont comportée aucune quartier .

3. Sql right join
cette commande permet de afficher tous les enregistrement de table droite et aussi s’il n’y a pas de meme references et remplacé par NULL

Example:

Imaginons les table suivants.


table Ville.
Id_ville nom_ville
1 marrakech
2 rabat
4 casablanca


table Quartier
Id Id_ville quartier_ville
1 1 EL massira 1
2 1 EL massira 2
3 2 Hay Riad
4 null Hay Ennour

Test:
select * from ville right join quartier on ville.Id_ville=quartier.Id_ville

voilà Le résultat de la requête, donc retourner les quartier qui n’ont éffectuée à aucune ville .

4. Sql full join
cette commande permet de afficher tous les enregistrement de table à travers la condition et remplir avec la valeur null si la condition n'est pas existe

Example:

Imaginons les table suivants.


table Ville.
Id_ville nom_ville
1 marrakech
2 rabat
4 casablanca


table Quartier
Id Id_ville quartier_ville
1 1 EL massira 1
2 1 EL massira 2
3 2 Hay Riad
4 null Hay Ennour

Test:
select * from ville full join quartier on ville.Id_ville=quartier.Id_ville
voilà Le résultat de la requête,


Exercice1:

On suppose Stagiaire(Id,Nom,moyenne).
1-Créer un table Stagiaire.
2-ajouter un stagiaire.
3-Sélectionner un stagiaire.
4-modifer un les info du stagiaire.
5-supprimer un stagiaire.
6-définir moyenne plus haute et moyenne plus bas.
7-définir le nombre stagiaire.
8-trier table par moyenne en utilise ordre décroissant.

Solution:


Exercice2:

On suppose Table Formateur(Id,Nom).
1-Créer un table Formateur.
2-ajouter des Formateurs.
3-Sélectionner un Formateur.
4-Créer un trigger en utilise la requete select
et aprés ajouter un Formateur .

Solution:
Exercice3:

On suppose les Tables suivants
_Stagiaire(IdSta,Nom).
_Matiere(codeM,coefM,NomM).
_Controle(idS,noteS,codeM).
avec coefM=coefficient du matiére
idS est une référence de idSta
codeM du table _Controle est une référence de codeM du matiére

1-Créer une base de donneé.
2-Créer table Stagiaire ,table Matiere ,table Controle.
3-ajouter 4 stagiaire et 2 _Matiere et table _Controle .
4-Donner le nombre des stagiaires.
5-donner la note de chaque matière.
6-donner la note génerale de chaque Stagiaire.
7-donner la moyenne génerale de chaque Stagiaire.

Solution:


Exercice4:

voilà les tables suivants:
employee (matricule, NomE, Poste, DateEmb, Salaire, Num_Dept)
dapartement (Num_Dept, NomDept, Lieu)
projet (CodeP, NomP)
participation (Matricule, CodeP, Fonction)
1- Ajouter la colonne Commission vers table employee.
2- Ajouter la colonne Nombre de jour prévu vers table projet (nbr_Jourprevus)
3- Ajouter Nombre de jour réalisé par l’employée vers table projet (nbr_jourrealise)
4- Ajouter les contraintes suivants:
a-la colonne nbr_jourrealise et strictemrnt positive
b-la colonne nbr_Jourprevus et strictemrnt positive
5- Effectué une augmentation de 24% vers les salaires des employees du departement 'geo'.
6- Créer une vues sur la table employee permet de afficher matricule, NomE, Poste, NomDept et un champ calculé salaire avec commission.
7- Créer une vues projet pour afficher NomP, nbr_Jourprevus et le pourcentage des nbr_jourrealise par rapport nbr_Jourprevus.

Solution:
create database exercice_4
go
use exercice_4
create table dapartement
( NumDept int primary key identity,
NomDept varchar(40),
Lieu varchar(30)
)
create table employee (
Matr varchar(30) primary key,
NomE varchar(30) not null,

Poste varchar(30) not null,
DateEmb date,
Salaire money ,
NumDept int foreign key references dept( NumDept)
)
create table projet
(
CodeP int primary key ,
NomP varchar(30) not null
)
create table participation

(
Matr varchar(30) foreign key references EMPLOYEE( Matr),
CodeP int foreign key references PROJET(CodeP),
Fonction varchar(30),
constraint con_pri primary key(CodeP,Matr)

)
--1
alter table employee add Commission float
--2
alter table projet add nbr_JourPrevu int
--3
alter table participation add nbr_JourRealise int
--4
alter table projet add constraint pre_jour check (nbr_JourPrevu>0)
alter table participation add constraint pre_jour1 check (nbr_JourRealise>0)
--5
update employee set salaire=salaire+salaire*(24/100) where NumDept in(select NumDept from dapartement where NomDept='geo')
--6
create view afficher
as
select Matr, NomE, Poste, NomDept ,salaire+=(salaire*Commission) from dapartement inner join EMPLOYEE on dapartement.NumDept=EMPLOYEE.NumDept group by Matr, NomE, Poste, NomDept
--7
create view project
as
select NomP,(sum(JourPrevu)/sum(JourRealise))*100 as pourcentage from Participation inner join PROJET on participation.CodeP=PROJET.CodeP group by NomP