begin process at 2013 05 21 13:48:17
  Trouver un code source :
 
dans
 
Accueil > 

Tutoriels

 > 

Fonctions

 > SYNTHESE DES INSTRUCTION SQL

SYNTHESE DES INSTRUCTION SQL


 Information sur le tutoriel

Note :
Aucune note

 Description

Bonjour,

J'ai fait cette synthèse pendant mes cours SQL, J'ai essayé de reprendre le plus d'instructions avec un exemple d'utilisation à chaque fois.

Si vous trouvez des erreurs ou des oublis faites le moi savoir.

Luc

Tutorial

SQL

Data Type.

Format



Numeric exact


Integer

Integer(precision)

De -2 147 483 643 à +2 147 483 643 sur 4 octets.

Smallint

Smallint(precision)

De -32 768 à +32767

Numeric

Numeric(precision,scale)

Scale= nbr de décimale

Decimal

decimal(precision,scale)



Numeric Approximate


Real

Real

De -1,175495e-38 à 3,402823e+38 sur 4 octets

Double precision

Double precision

De 2,2250738585072e-308 à 1,79769313486231e+308 sur 8 octets

Float

Float(precision)

Sur 4 octets si precision>25 8 octets si >=25


Character string


Char

Char(size)

Rempli les blancs par spaces

Varchar

Varchar(size)

Pas d'espaces

Clob

Clob(size)

Utilisé pour les variables et larges groupes de caractères.


Bit & binary strings


Bit

Bit(size)

Size doit être rempli du size déterminé + court ou + long = erreur (défaut=1)

Bit Varying

Bit varying(size)

Size détermine les caractères maximum + long est rejeté (défaut=illimité)

Blob

Blob(size)

Très large chaîne d'octet.


Boolean


Boolean

Boolean

True – false – unknown


Date time


Date

Date()

Année 4 digits - mois 2 digits (01-->12) - jours 2 digits (01-->30) longueur 10 positions.

Time

Time(precision)

Heures 2 digits (00-->23) minutes 2 digits (00-->59) secondes 2 digits décimale optionnelle longueur : 8 positions 9 avec les décimales.

Timestamp

Timestamp(precision)

Réunis date & heure longueur : 19 positions 20 avec les décimales.

With time zone

.....with time zone

Syntaxe : avec time : HH-MM-SS-HH-MM

avec timestamp : YYYY-MM-DD-HH-MM-SS-F..F-HH-MM

Interval

Interval year(precision)

interval month(precision)

inteval Year(prec.)to month

Stocke année et mois.

Interval

Interval(day)

Stocke le jour ou heures ou minute ou seconde


Constructed composite type

Inexistant dans SyBAse

Array

Array[maximum cardinality]

Acces au tableau par index – renvoi 'null' pour les éléments vides

Row

Nom ROW (fld1,fld2...fldn)

Collection de 1 ou plusieurs éléments (par ex-champs) un champ à un nom et un data type (idem colonnes de table).adresse Row(rue CHAR(20) ville CHAR(20))

Attribut composite.


Data Retrieval


Select

SELECT colonne_cible FROM Table_cible

Not case sensitive, une ou plusieurs lignes mais les mots-clés ne peuvent pas être splittés.


SELECT * FROM Table_cible.

Affiche tout les data de la table.


SELECT colonne_cible1, colonne_cible2 FROM Table_cible

Affiche les colonne_cible1 & colonne_cible2 de la table


SELECT colonne_cible as nom_de_colonne (alias) FROM Table_cible

Change le nom de la colonne.Entre « » donne des espace vide

Alias crée une colonne virtuelle par ex: Select Firstname, Year_result,(year_result/20)*100 as New_result crée une 3ième colonne new_result


Opérateur arithmétiques



+ - / *



Opérateur de concatenation



||

On ne peut pas concaténer autre chose que des caractères -> il faut convertir les données en varchar s'il faut concaténer des variables numériques ou date.


« + »

Sur Microsoft SQL Server

Convert

Convert (varchar,Nom_de_colonne)Convert,nom_colonne,style

Voir en fin de texte les fonctions spécifiques de Convert pour avoir les dates sous un format spécifique et immuable en SQL Server.

Distinct

Select DISTICNT colonne_cible from Table_cible

Retire les lignes identiques du résultat par ex s'il y a plusieurs fois le même nom -> il n'apparaîtra qu'une fois, supprime les redondances.


Select délimité & ordonné


Where

SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible = xxx

Affiche la colonne_cible1, colonne_cible2 mais uniquement avec le filtre spécifié dans la condition where peut être utilisé avec<, <=, > >=, =,<>

Between

SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible BETWEEN nn AND nn

Affiche la colonne_cible1, colonne_cible2 mais uniquement avec le filtre spécifié.

nn and nn spécifié après between sont deux chiffres précisant la portée. Nn & nn peuvent aussi être des dates à utiliser pour tout intervalle de valeur.


In

SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible IN (na,nb,nc)

La condition IN peut être utilisée avec n'importe quel types de data.

Signifie est égal à na OU égal à nb OU égal à nc

Like

SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible LIKE 'xyz'

Recherche effectuée avec des caractères et de chiffres. % Remplace plusieurs caractères,_ remplace un caractère.

AND.


OR

SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible1 LIKE 'xyz' AND [OR] colonne_cible2

AND retourne vrai lorsque les deux conditions sont vraies.

OR retourne vrai lorsque une des deux conditions est vraie.


Not

SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible1 NOT LIKE 'xyz'

Affiche le résultat s'il n'est pas équivalent à xyz, Peut-être mis devant Like, between, and, or & in


Rôle de préséance.



1

Opérateurs arithmétiques.


2

Opérateurs de concaténation.


3

Conditions de comparaison.


4

IS [NOT] NULL,LIKE, [NOT] IN


5

[NOT] BETWEEN


6

NOT condition logique.


7

AND condition logique.


8

OR condition logique.

Order by.

SELECT SELECT colonne_cible FROM Table_cible

ORDER BY colonne_cible DESC [ASC]

Affiche les colonnes selon un ordre ASCendant ou DESCendant par rapport à la colonne_cible spécifié après order by,

Peut-être ordonné sur un alias.


SELECT SELECT colonne_cible1,colonne_cible2,colonne_cible3 FROM Table_cible

ORDER BY colonne_cible1 DESC [ASC],colonne_cible2 DESC [ASC]

Affiche les colonnes selon un ordre ASCendant ou DESCendant par rapport aux colonne_cible1, colonne_cible2 spécifié après order by.

Triées 1ere sur la colonne_cible1 ensuite sur la colonne_cible2.

Toujours en fin d'écriture.


Numeric value functions


Position

POSITION(expression_chaine_1 IN expression_chaine2)

Retourne la position d'une chaîne dans une autre ou expression_chaîne1 est la chaîne à rechercher et expression_chaine2 et la chaîne dans laquelle il faut chercher



Extract

Datepart (sql server)


EXTRACT (champs_datetime FROM valeur_datetime)

(champs_datetime FROM valeur_interval)

(Champs_timezone FROM valeur_datetime)


Isole un simple champ d'un datetime ou d'un interval et le converti en nombre. Les paramètres sont : YEAR, MONTH, DAY, HOUR, MINUTE, SECONDE, FRACTION.

Ex:extract (year from date '08/12/1953') retourne 1953

Avec datepart – yyyy – mm – dd

(yyyy, champs_datetime)


datepart(champs_datetime,valeur_datetime)


Lenght

Len (sql server)

CHAR_length(chaine_de caratère) ou character_length(chaine_de caratère) ou

Octet_length(chaine_de caratère)

Retourne le nombre de caractères d'octet.ex: select char_length('kim bassinger') retourne 12

un espace = 1 caractère.

Cardinality

Cardinality (collection_value)

Retourne le nombre d'éléments dans un tableau.

Select CARDINALITY (colone_cible) from table_cible

ABS

Abs (valeur_numérique)

Retourne la valeur absolue d'une expression

Mod

% (sql server)

Mod(dividende, diviseur)

Nom_de_colone %diviseur

Retourne le reste de la division.

Select MOD (27,4) retourne 3



String value function


Substring

Substring(chaine from start [for lenght]

Retourne une sous chaîne (bit ou caractère) d'une source

select SUBSTRING ('kim FROM 2 FOR 2) retourne im

Left

Left(chaine,Nbr_Caractère)

Retourne le nbr_de_caractère d'une Chaîne dans une sous-chaîne (bit ou caractère).left(kim,2) retourne ki

Right

Right(chaine,Nbr_Caractère)

Retourne le nbr_de_caractère d'une Chaîne dans une sous-chaîne (bit ou caractère).right (kim,2) retourne im

Upper

Upper(chaîne_de_caractères)

Retourne la chaîne en majuscule

Lower.

Lower(chaîne_de_caractères)

Retourne la chaîne en minuscule.

Trim

TRIM ([both|leading|trailing] caractères FROM chaine_de_caratères)

Retourne la chaîne amputée du caractère.

Both : supprime tous les caractères désignés.Leading: supprime tout les caractères désignés a gauche de la chaîne

Trailing : supprime tous les caractères désignés à droite de la chaîne.



Date & time value function


Current

Getdate()

(SQL server)

CURRENT_DATE or CURRENT_TIME[(precision)] or CURRENT_TIMESTAMP[(precision)]

Retourne la date, time (heure), ou timestamp (date & heure) courant.



Local


LOCALTIME[(precision)] ou LOCALTIMESTAMP[(precision)]


Retourne time, ou timestamp courant de la zone horaire


Aggregate function


Count

COUNT(*|[distnct|all] nom_de_colonne)

Retourne le total du nbr. de ligne ou de valeurs d'une colonne qui ne contient pas null.distinct : sans les doublons

all (défaut): tout.* tout avec les null

Max

MAX(nom_de_colonne)

Retourne la valeur maximale à l'intérieur d'une colonne spécifique.

Min

MIN(nom_de_colonne)

Retourne la valeur minimum à l'intérieur d'une colonne spécifique

Sum

SUM(nom_de_colonne)

Retourne la somme des valeurs à l'intérieur d'une colonne spécifique.

Avg

AVG(nom_de_colonne)

Retourne la moyenne des valeurs à l'intérieur d'une colonne spécifique.


Condition de recherche


Case

....

End

CASE

WHEN Condition de recherche1 THEN résultat1

WHEN Condition de recherche THEN résultat2

[ELSE résultatx]

END

Permets de faire une recherche si la condition when est vraie alors résultat.si aucune condition alors sortie de la boucle ou passage par Else s'il est spécifié.

Nullif

NULLIF(valeur-t,valeur X)

Retourne NULL si valeur-t égale valeur X.

Coalesce

COALESCE(valeur-1,valeur-2,valeur-3)

Retourne une valeur dans coalesce si ce n'est pas NULL.

Retourne la première valeur trouvée.


Clause avancée Group by


Group BY

SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible = xxx

GROUP BY

Fait un regroupement, spécifie comment les rangées devront être groupées dans la table.

Les colonnes spécifiées dans le SELECT qui ne sont pas dans la ‘’group function’’ doivent être dans la clause GROUP BY

Les différents groupes sont :

colonne simple, colonnes multiples, nested, having

Colonne simple

SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible = xxx

GROUP BY colonne_cible1

Divise la table en sets

Souvent combiné avec des fonctions d'agrégat

Pas de Texte, Byte, Clob,Blob dans une clause



Colonne multiple

SELECT colonne_cible1, colonne_cible2 FROM Table_cible WHERE colonne_cible = xxx

GROUP BY colonne_cible1, colonne_cible2

Groupe sur plus d'une colonne.



Nested




SELECT Nom_de_colonne1,max(avg(nom_de_colonnenumérique)) FROM table_cible GROUP BY nom_de_colonne1




Retourne la ligne avec la moyenne maximale.

Se fait en deux phases :

1. Calcule le résultat moyen.

2. sélectionne le résultat moyen le plus haut




Having

SELECT ...... FROM ......

GROUP BY ....... HAVING (nom_de_colonne) condition

Affiche un set de colonnes restrain. Fait une nouvelle sélection de type where. Filtre le regroupement.

Rollup


Group by.... With Rollup

(sql server)

SELECT nom_colonne1,[nom_colonne2] SUM[MAX][AVG...] nom_colonne WHERE....GROUP BY ROLLUP.......

Obtient un tableau avec tous les sous totaux possibles.Utilisé pour produire des ensembles de cumul comme les sous totaux

Cube


Utilisé pour produire des valeurs résultantes de cross tabulation, S'applique dans les dataware House. Permets de gérer des données grâce aux calculs matriciels.Crée virtuellement un cube


Ensemble de Table


Equi-Join

SELECT table1,colonne1,table2.colonne1 FROM table1,table2

Where table1.colonne1= table2.colonne1

Les conditions de jointure sont dans la clause where. Évite les ambiguïtés en préfixant le nom des colonnes avec le nom des tables, permet l'utilisation d'alias pour simplifier les recherches.


Equi-join n tables


Joindre n tables requière au moins n-1 conditions par exemple: joindre 3tables requière au moins deux jointures.

Self-join

SELECT t1.colonne1, t2.colonne2 FROM table1 as t1, table1 as t2 WHERE t1.colonne = t2.colonne

Joint la table avec elle-même match les informations de la même table. Requière l'utilisation d'alias dans la clause FROM.

Nonequi-join

SELECT s.name,s.year,g.grade

FROM Grade g, Student s

WHERE s.year BETWEEN

g.lower-bound AND g.upper_bound

Fonction inverse a Equi Join

Cross join

(Pas supporté par SQL server)

SELECT course.course_id, professor.professor_id, FROM course CROSS JOIN professor

Très rarement utilisé.

Retourne un produit cartésien comme résultat

Natural join

(Pas supporté par SQL server)

SELECT * FROM t1 NATURAL JOIN t2

Jointure basée sur les colonnes des tables partageant le même nom.

Les valeurs non-identiques sont éliminées

Condition join

SELECT * FROM t1 JOIN t2 on t1.c1= t2.c3

La condition join du natural join est basiquement un equi-join de toutes les colonnes ayant le même nom.



Inner join

SELECT * FROM t1 join (t2 join t3 on t2.c3 = t3.c2) on t1.c1=t2 .c2

SELECT * FROM t1 INNER JOIN t2 on t1.c1= t2.c2

Jointure entre 3 tables la t2 est une table de liaison avec les FK comprenant les PK de T1 et T3.

Affiche les données des champs qui sont dans l'intersection des deux bases.



Left outer join

SELECT * FROM t1 LEFT OUTER JOIN t2 on t1.c1= t2.c3

Permets de récupérer l'entièreté de la table T1 et la partie commune de la table T2.



Rigth outer join

SELECT * FROM t1 RIGHT OUTER JOIN t2 on t1.c1= t2.c3

Permets de récupérer la partie commune de la table T1 et l'entièreté de la table T2.



Full outer join

SELECT * FROM t1 FULL OUTER JOIN t2 on t1.c1= t2.c3

Full outer join agit comme une combinaison des left et right outer joins



Union

SELECT * from T1

UNION

SELECT * FROM T2

Combine le résultat de plusieurs select en un seul résultat. Les opérateurs sont ALL & DISTINCT (défaut)



Union All

SELECT * from T1

UNION ALL

SELECT * FROM T2

Affiche toutes les occurrences des deux tables.

Union distinct

SELECT * from T1

UNION ALL

SELECT * FROM T2

Affiche qu’une seule fois les tuples se trouvant dans la t1 et dans la t2


Intersect

SELECT * from T1

INTERSECT

SELECT * FROM T2

Retourne les rangs existant dans l'intersection des deux tables.




Except

SELECT * from T1

EXCEPT

SELECT * FROM T2

Retourne les rangs qui sont dans la première table excepté de ceux qui apparaissent aussi dans la deuxième table. Peuvent être utilisés avec ALL & DISTINCT


Subqueries




Est une requête qui est évaluée avant le process de la recherche principale


SELECT select_list

From table

WHERE expr operator

(SELECT select_list FROM table)

Scellé dans la clause d'un autre select.

Peuvent être utilisé dans WHERE, HAVING, FROM.

Toujours entre parenthèse.Désigné sous outer query

Type de subqueries


Atomic (single row subquery)

Row - Table value (multiple row subquery)




Single-Row

SELECT last_name FROM student WHERE Year_result>(SELECT year_result FROM student WHERE last_name='bacon'

Retourne seulement une valeur & utilise les opérateurs de comparaison habituel.

Group Functions

SELECT last_name,year_result FROM student WHERE Year_result>(SELECT AVG(year_result) FROM student)

Affiche le résultat des étudiants qui ont un résultat supérieur a la moyenne de l’année.

Having clause

SELECT section_id,AVG(year_result) as Moyenne FROM student

GROUP BY section_id

HAVING AVG( Year_result) = (SELECT AVG(year_result) FROM student)


Multiple Row


Requête à cardinalité multiple


Multiple-row IN






Multiple-row ANY

SELECT last_name,year_result FROM student

WHERE Year_result IN (SELECT MAX(year_result)

FROM student)

GROUP BY section_id


SELECT last_name,year_result FROM student

WHERE Year_result <= ANY (SELECT MAX(year_result)

FROM student)

GROUP BY section_id

IN égale à un des membres présent dans la liste








ANY compare la valeur à chaque valeur retournée dans la liste.

Donne comme résultat tout les étudiants qui ont au minimum la valeur la plus petite de la liste


Multiple-row ALL

SELECT last_name,year_result FROM student

WHERE Year_result >= ALL (SELECT MAX(year_result)

FROM student)

GROUP BY section_id

ALL compare la valeur avec toutes les valeurs de la liste et retourne la valeur maximum de la liste

Correlated


Utilisé pour les recherches de ligne à ligne.

Chaque sous-recherche est exécutée pour chaque ligne de la OUTER query.

Les informations retournées dépendent des data qui ont été traitées dans la OUTER query


SELECT last_name,section_id year_result FROM student AS OUTER

WHERE Year_result >

(SELECT AVG(year_result) FROM student WHERE section_id = OUTER,section_id)

Cherche tous les étudiants qui ont plus que le résultat moyen de leur section.Chaque fois qu'une ligne de la Outer query est traitée la inner query est évaluée,


Ordre d’exécution :



From

Where

Group By

Having

Select

Order By




Limit (mySQL)


TOP(access)

SELECT * from table LIMIT x

SELECT * from table LIMIT x,y

Select top x from table

Affiche les x premiers résultats d’une table.Affiche les y résultats d’une table en commencant par x

Affiche les x premiers résultats d’une table en acces




Data Definition Language

Create table




Exemple pour Sqlite


CREATE TABLE [Nom_BD(shema).] table

(

colonne datatype [default expr]

);

create table recette (id_recette integer, nom text, page integer, id_liste integer, id_langue integer, constraint id_recette_pk primary key (id_recette), constraint id_liste_fk foreign key (id_liste) references liste (id_liste),constraint id_langue_fk foreign key (id_langue) references langue (id_langue) )

Crée une nouvelle table dans la DB active.

[default expr] spécifie une valeur par défaut pour la colonne lors de l'insertion des datas.


Alter table

ALTER TABLE table

ADD (colonne datatype [default expr]

);

SqLite :

ALTER TABLE table

ADD COLUMN colonne datatype [default expr]

;

Ajoute une nouvelle colonne.

Describe permet d’afficher la structure de la table.

Pas de parenthèse pour sqlite


ALTER TABLE table

MODIFY (colonne datatype [default expr]

);

Modifie une colonne existante.


ALTER TABLE table

DROP (colonne datatype [default expr]

);

Drop une colonne existante

Supprime tout les datas et les structures d'une table.Ne permet pas de retour en arrière

Truncate table

TRUNCATE TABLE table

Enlève toutes les lignes d'une table. Supprime uniquement les données.

Libère les storages utilisés par la table.Ne permet pas de retour en arrière

Comment on table

COMMENT ON TABLE table|COLUMN table.colonne IS 'text'

Ajoute un commentaire à une table ou à une colonne.

Utiliser text=' ' pour vider le comment.

Constraint


Renforce les règles au niveau de la table

Empêche la suppression de la table s'il y a des dépendances.

Peut-être créé soit à la création de la table soit après au niveau de la colonne ou de la table.

Not null

(contrainte de colonne)

CREATE TABLE employe (

id_empl NUMBER(6),

Last_name VARCHAR(25) NOT NULL

.......);

Ne permet pas que la colonne ait la valeur NULL

Disponible seulement au niveau de la colonne.

Unique

(contrainte de table)

CREATE TABLE employe (

id_empl NUMBER(6),

Last_name VARCHAR(25) NOT NULL

email VARCHAR2(25)

.......

CONSTRAINT emp_email UNIQUE(email));

Requière que chaque valeur dans la colonne ou dans un set de colonne (clé) soit unique.

Disponible au niveau de la BD ou de la colonne.

Si la contrainte est décrite au niveau de la table l'on peut alors l'utiliser dans le management de la BD.

Primary key

CREATE TABLE employe (

id_empl NUMBER(6),

Last_name VARCHAR(25) NOT NULL

.......

CONSTRAINT id_dept_pk PRIMARY KEY(id_empl));

TSQL primarykey(id.empl)

Créer la clé primaire de la table.

Disponible au niveau de la BD ou de la colonne.

Implique un index (physique) dans la table.




Foreign key

CONSTRAINT name FOREIGN KEY (nom_de_clé) REFERENCES(nom_de_table.nom_de_clé)

FOREIGN KEY : Défini la colonne dans la chaîne fille au niveau de la contraint de table.

REFERENCES: identifie la table et la colonne de la table parent.

ON DELETE CASCADE: supprime les lignes dépendantes dans la table fille lorsqu'une ligne de la table mère est supprimée.

ON DELETE SET NULL: converti les valeurs des foreign key dépendante à NULL.

Check

......,salary NUMBER(2)

CONSTRAINT emp_salary_min CHECK (salary > 1000)

Défini une condition que chaque colonne doit satisfaire les expressions suivantes n'est pas autorisées :

CURRVAL,NEXTVAL,LEVEL & ROWNUM

Calls to SYSDATE,UID,USER, & USERENV functions

Recherche qui réfère à d'autres valeurs dans d'autres lignes.


Ajout de contrainte avec ALTER TABLE




Il faut utiliser l'ALTER TABLE pour :

Ajouter ou supprimer une contrainte sans modifier la structure.

Permettre ou mettre hors d'action une contrainte.

Ajouter une contrainte NOT NULL en utilisant la clause MODIFY.


ALTER TABLE employe

ADD CONSTRAINT emp_manager_fk

FOREIGN KEY (manager_id)

REFERENCES employe(employe_id);

Une contrainte FOREIGN KEY est ajoutée à la table employe indique qu'un manager peut exister comme un employé dans la table EMPLOYE.

Drop

ALTER TABLE employe

DROP CONSTRAINT emp_manager_fk;

Retire une constraint d'une table.


Disabbling

ALTER TABLE employe

DISABLE CONSTRAINT emp_emp_id_pk CASCADE

Exécute la clause DISABLE du statement ALTER TABLE pour désactiver une contrainte d'intégrité.

Applique l'option CASCADE pour désactiver les contraintes d'intégrité dépendantes.


SELECT constraint_name,constraint_type,search_condition

FROM user_constraint

WHERE table_name='empoye'

Recherche la table USER_CONSTRAINT pour visualiser toutes les définitions de contrainte et leurs noms.


SELECT constraint_name,column_name

FROM user_cons_column

WHERE table_name = 'employe'

Visualise les colonnes associées avec les noms des contraintes dans la user_cons_column

Data Manipulation Language


Insert

INSERT INTO table [(colonne [,colonne...])] VALUES(value[,value...])


INSERT INTO table [(colonne [,colonne...])] (select value[,value...] from…)

Insère un enregistrement dans une table. Un enregistrement à la fois. Si la liste des colonnes n'est pas utilisée, la liste doit suivre l'ordre des colonnes. Les caractères et les dates doivent être mise entre simple cote. Les valeurs oubliées sont traitées comme NULL .

Lorsque il y a l’utilisation d’un select pour l’encodage des valeurs ->il ne faut pas utiliser VALUES

Update

UPDATE table SET colonne = valeur [,colonne=valeur,...]

[WHERE condition];

Modifie la valeur d'une ou de plusieurs colonnes dans un ou plusieurs enregistrements.

Peut-être utilisé avec les conditions de recherche ou des sous-requêtes requêtes.

L'absence de condition where signifie tous les enregistrements.

Delete

DELETE FROM table

[WHERE condition];

Retire des enregistrements d'une table, Peut être utilisé avec les conditions de recherche. L'absence de condition where signifie tous les enregistrements.

Merge

MERGE INTO table_name

USING(table|view|subquery)

ON (joint condition)

WHEN MATCHED THEN

UPDATE SET

col1=col_val1,

col2=col_val2

WHEN NOT MATCHED THEN

INSERT (colomn_list)

VALUES (column_value);

Utilisé lorsque l’on veut fusionner des bases de données secondaires dans une base de données principale (par ex : BD de délégué sur la route et BD de la société).Update et insert des datas dans une table conditionnellement.

Update si l'enregistrement existe.Insert si c'est un nouvel enregistrement.



Travailler avec les vues.




Principes :

Présente des subsets logique ou des combinaisons de datas

Peut-être basée sur des tables ou des vues. Ne stocke pas de data mais permet aux datas de changer à travers la vue.

Stockée comme un select dans le data dictionnary

Utilisée pour restreindre les accès aux datas, faire de recherche complexe plus facilement, présente différentes vue des même datas.

Simple views

CREATE VIEW studentVU1010

AS SELECT student_id,first_name,year_result

FROM student

WHERE section_id='1010'

Les datas proviennent d'une seule table.

NO functions

NO group of datas

Permets les DML à travers la vue.


Complex views

CREATE VIEW complVU (name,minres,maxres,avgr)

AS SELECT se.section_name,min(st.year_result),max((st.year_result),avg(st.year_result)

FROM student st,section se

WHERE st.section_id=se.section_id

GROUP BY se section_nam

Vue complexe :

-Les datas proviennent d'une ou plusieurs tables.-Functions.

-Groupes de data

-Permets les DML à travers la vue (sous réserve)


CREATE [OR REPLACE]

[FORCE|NOFORCE] View vue [(alias[,alias]...)

AS subquery

[WITH CHECK OPTION[ CONSTRAINT contrainte]]

[WITH READ ONLY CONSTRAINT contrainte]]

ON REPLACE recrée la vue si elle existe déjà.

FORCE créer la vue sans se soucier que la table existe.

NO FORCE créer la vue seulement si la table existe.

Vue nom de la vue.

Subquery est un select complet

WITH CHECK OPTION spécifie que seulement les lignes accessibles par la vue peuvent être insérée ou mise à jour.

WITH READ ONLY empêche toute action de DML sur la vue.

Contrainte est le nom assigné à CHECK OPTION ou à READ ONLY.

Querying a view

SELECT *

FROM studentVU1010

WHERE result >50



DML operation


Removing row


Adding Data


Interdit dans les vues simples contenant :

Group functions

A GROUP BY clause

le mot clé DISTINCT

Un pseudo colonne ayant comme mot-clé ROWNUM.

Colonne définies pas des expressions.Colonne NOT NULL dans les tables non sélectionnée dans la vue

With Check Option

CREATE OR REPLACE VIEW studVu

AS SELECT *

FROM studen

WHERE section_id =1010

WITH CHECK OPTION CONSTRAINT studvu_ck

Empêche les changements dans la section_id pour chaque row autrement il y aurait violation de la contrainte with check option

Utilisation limitée pour protéger l'intégrité des data.

Cette option spécifie que les inserts et les update exécutés à travers la vue ne peuvent créer des rows que la vue ne peut sélectionner en affichant une erreur avec le nom de la contrainte.

With read only

CREATE OR REPLACE VIEW studVu

AS SELECT *

FROM studen

WHERE section_id =1020

WITH READ ONLY CONSTRAINT studvu_ck

Empêche toutes les opérations DML sur la vue.

Removing a view

DROP VIEW view

Supprimer une vue ne supprime pas les datas de la table d'origine de la vue.



Fonction de Convert


Lorsque vous extrayez une date sous forme littérale, SQL Server se servira à nouveau des paramètres régionaux pour formater la chaîne de caractères. Vous risquez d'être surpris par le résultat...

Si vous voulez un format immuable et reproductible, vous devez utiliser la fonction CONVERT, qui, à l'aide d'un paramètre de style peut vous donner différentes présentations :


Style

Présentation

0 ou

100

mois jj aaaa hh:mmAM (ou PM)

101


mm/jj/aa

102


aa.mm.jj

103


jj/mm/aa

104


jj.mm.aa

105


jj-mm-aa

106


jj-mm-aa

107


mois jj, aa

108


hh:mm:ss

9 ou

109

mois jj aaaa hh:mm:ss:mmmAM (ou PM)

110


mm-jj-aa

111


aa/mm/jj

112


aammjj

13 ou 113

jj mois aaaa hh:mm:ss:mmm

114


hh:mm:ss:mmm

20 ou 120

aaaa-mm-jj hh:mm:ss

21 ou 121

aaaa-mm-jj hh:mm:ss.mmm

126


aaaa-mm-jj Thh:mm:ss.mmm

130


jj mon aaaa hh:mm:ss:mmmAM

131


jj/mm/aa hh:mm:ss:mmmAM


 Historique

23 janvier 2009 13:34:30 :
Quelques corrections orthographiques
24 juin 2010 13:11:08 :
Quelques petit ajout pour les instruction SqLite

Commentaires

Commentaire de dolu74200 le 25/01/2009 18:27:33

salut




http://www.monstersgame.fr/?ac=vid&vid=18042296

Commentaire de marcotte le 28/01/2009 21:10:04

super boulot ^^

Mais pourquoi tu la pas mis en téléchargement ?

Commentaire de lucdr le 29/01/2009 10:34:08

Bonjour,

Merci,
Les turtoriaux ne semblent pas pouvoir être mis en téléchargement, s'il y a une possibilit, c'est avec plaisir que je le ferai

Luc

Commentaire de coldman le 19/02/2009 01:13:09

Interessant, un travail bien fait englobant la majorité du sujet (SQL), ça m'aidera beaucoup merci beaucoup :) je donne 9/10 ;)

Commentaire de zoommii le 19/02/2009 10:23:59

Salut Luc,

Merci!!!
En tant que non informaticien ayant appris seul SQL, j'avoue que cette resource est très utile et me sera bénéfique. Je te remercie infiniment pour cette aide.

Commentaire de lemouelfl le 04/03/2009 10:48:48

Je vais me remettre au SQL ( j'ai finie mes cours de BDD il y a 2 mois, et on perd vite. )

Merci pour ton travail, propre, clair, et assez bien organisé. Tu as aidé pas mal de monde à mon humble avis.

Encore merci =)

Commentaire de maxmido le 12/03/2009 14:40:30

salut
merci bien pour ce travail. c'est vraiment interressant et claire.


Commentaire de hicham1965 le 28/03/2009 13:11:29

Bonjour la communauté,

trés bon travail Mr lucdr

moi je voudrais savoir plus d'informations sur "Select Distinct ..."

pour: "select distinct champ from table" ca marche trés bien
mais pour:
"
SELECT  Distinct Formation.N_CIN, Personnel.DOTI, Personnel.nom_prenom, Personnel.Service, Formation.Lieu_Formation FROM Formation INNER JOIN Personnel ON Formation.N_CIN=Personnel.cin;
"
ca donne du n'importe quoi!!!!!!!!!!!

Moi je voudrais qu'il me fasse le "distinct" seulement sur le champ "Formation.N_CIN"

Merci de votre aide.

Commentaire de lucdr le 28/03/2009 14:33:34

Bonjour,

Le distinct va supprimer les redondances de chaque colonnes -> le résultat est n'importe quoi, il ne peut pas être utilisé dans ce cas.
Je ne sais pas ce que tu veux faire mais essaye d'utiliser la sélection avec la fonction where ou alors fait une vue et une requête sur la vue avec le distinct dans cette ième requête.

Bon courage

Luc

Commentaire de hicham1965 le 28/03/2009 21:17:26

Bonjour luc,

where ne peut pas regler le pb au niveau de cette syntaxe.

pour avoir une idée claire, je t'explique ce que je veux faire:

dans un formulaire, je crée une liste déroulante qui affiche les données N_CIN de la table "formation". mais pour donner plus de détails à l'utilisateur, la table "Personnel" liée à "formation" affiche le nom_prénom, N_Doti ...etc

lorsque je déroule la liste, il ne doit pas m'afficher les N_CIN en double. j'espere que je me suis fait comprendre.

Salut

Commentaire de lucdr le 29/03/2009 10:07:33

Bonjour,

Essaye avec une fonction group by:

SELECT  Distinct Formation.N_CIN, Personnel.DOTI, Personnel.nom_prenom, Personnel.Service, Formation.Lieu_Formation FROM Formation INNER JOIN Personnel ON Formation.N_CIN=Personnel.cin group by Formation.N_CIN;

bon dimanche

Luc

Commentaire de hicham1965 le 29/03/2009 11:46:22

ca n'a pas marché,

je crois que je devrais faire une procédure qui elimine les doublons de la table Formation, créer une table temporaire et puis faire la requete sur cette table.

Merci luc pour ton intéret.

Bon dimanche

Commentaire de zavier666 le 17/04/2009 21:21:15

Comme tout le monde, je ne peux que te féliciter pour ce très bon tuto.

En revanche, j'aurais une "requête", c'est de sérieusement enrichir tout cela avec des exemples car souvent, la définition d'une fonction n'est pas facilement transposable en utilisation concrete.

merci d'avance!

Commentaire de lucdr le 18/04/2009 10:13:05

Bonjour,

Merci pour ton appréciation.
Pour les exemples c'est volontairement que je n'en ai presque pas mis, je pense qu'une fois que l'on a la façon de faire il n'y à plus qu'à !!

Luc

Commentaire de leilamahmoudi le 17/08/2009 08:44:25

SVP,
Je veux selectionner les champs from la table "confschap" telque
numschap commence par la chaine numero que j'ai déja défini.
Voici ma commande.Ca ne me tourne pas le résultat exacte.je crois que le syntaxe de like est faux,SVP de m'aider
Voici ma commande  
select * from confschap where numschap like '" + numero + "%'
            

Commentaire de lucdr le 17/08/2009 20:34:50

Bonjour,

Supprime les doubles cotes et les signes de concaténation
select * from confschap where numschap like 'numero%'
ormalement cela devrait fonctionner

Luc

Commentaire de ghezella le 23/12/2009 12:28:48

bojour;
je cherhe a associer une requete d'insertion (des valeurs aux champs de ma base)au clic d'un button je essayer cette structure mé ça na pa marché

/* Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/agent", user,password);
Statement stmt=con.createStatement();
ResultSet rs = stmt.executeUpdate("INSERT INTO apprenant (les champs de ma table apprenant) VALUES("les valeurs");*/
si qlq peu m'aidé


merçi d-avance

Commentaire de lucdr le 23/12/2009 15:55:30

Bonjour,

Champs de ta base doivent être séparés par des virgules et êtres entre simple cote pour les caractères et les dates ('champs', 'champs1') values ('valeur' , 'valeurs)
Les valeurs oubliées sont traitées comme NULL sauf si une colonne est autoincrémenté alors pour certaine BD (comme SQLite) il ne faut pas le spécifier.

J'espère avoir aidé

Luc

Commentaire de patbour le 12/01/2010 21:11:16

Bonjour
Merci, comme aide mémoire c'est super, pour l'avoir directement sous la main, j'ai fait un copier/Coller et coller dans OpenOffice ensuite exporter en fichier PDF.
Merci encore.

Commentaire de prady92 le 14/02/2010 01:39:16

Merci pour ce résumé simple et efficace.

Une petite question que je n'arrive pas à résoudre en SQL Server 2005:
ARRAY permettant de récupérer un élément d'un tableau, comment, si cela est possible, faire l'équivalent par exemple de :

DECLARE @résultat AS INTEGER
SET @résultat = 1
DECLARE @TEST AS varchar(10)
WHILE @résultat < 6
BEGIN
   SET @TEST =
     CASE  
When  @résultat = 1 Then  'un'
When  @résultat = 2 Then 'deux'
        When  @résultat = 3 Then 'trois'
Else  'plus de trois'
     END
   SELECT @TEST
   SET @résultat = @résultat + 1
END


du style (et c'est là que je ne sais pas si cela est possible) :

DECLARE @titi as VARCHAR(10) ['un','deux','trois','plus de trois']
SELECT @titi[4]    qui m'afficherait 'plus de trois'
ou
DECLARE @titi as ARRAY of VARCHAR(10) ['un','deux','trois','plus de trois']
SELECT @titi[4]    qui m'afficherait 'plus de trois'

j'ai bien pensé aussi à ROW mais est-ce valable pour une variable déclarée et si oui comment l'utiliser, quelle sunthaxe ?

D'avance merci

Commentaire de lucdr le 14/02/2010 10:00:34

Bonjour,

Il y à quelques temps que je n'ai pas utilisé le TSQL mais je me demande si ce ne serais pas plus facile de déclarer une table comme ceci
DECLARE @resultat TABLE (
titi int
)
et ensuite de l'utiliser comme une vrai table
INSERT INTO @resultat...
SELECT * FROM @resultat where titi like ....

Luc

Commentaire de prady92 le 14/02/2010 13:02:30

Merci pour la rapidité de la réponse,

je ne sais pas si de cette manière je ne ralentirais pas les traitements (et plus compliqué si quelqu'un doit reprendre le code derrière moi), moi je m'orientais plus vers un tableau indexé comme en vb ou C# afin de traiter dans une boucle par l'index numérique, en prenant un exemple simple qui n'a d'intérêt que pour le style :

DECLARE @titi as ARRAY of VARCHAR(10) ['un','deux','trois','plus de trois']         /* comment déclarer  ?????? */
DECLARE @résultat AS INTEGER
SET @résultat = 1

WHILE @résultat < 6
BEGIN
   SELECT @titi[@résultat]     /* et m'affiche le contenu du @titi correspondant à son index */
   SET @résultat = @résultat + 1
END

à moins d'écrire une fonction en vb ou C# extérieure (cela est possible depuis le SQL Server 2005) mais je ne sais pas comment on peut l'appeler depuis le SQL. Avez-vous une idée sur l'un ou/et l'autre ou un lien ?

D'avance merci

Commentaire de lucdr le 15/02/2010 09:29:31

Bonjour,

Pour la déclaration de variable voici une adresse qui peut aider :
http://msdn.microsoft.com/fr-fr/library/ms188927.aspx

Concernant l'exécution, pourquoi ne pas utiliser une procédure stockée qui pourra être modifiée en cas de besoin.
http://msdn.microsoft.com/fr-fr/library/ms190669.aspx

Bon courage

Luc

Commentaire de prady92 le 16/02/2010 12:01:09

Bonjour,

j'ai trouvé ceci qui est intéressant : http://msdn.microsoft.com/fr-fr/library/bb510489.aspx mais hélas qui ne fonctionne qu'avec SQL Server 2008 et non 2005.

Cordialement

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,248 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales