CodeS-SourceS
Rechercher un code, un tuto, une réponse

Synthese des instruction sql

Octobre 2017

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 = 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



Adresse d'origine

A voir également

Publié par lucdr.
Ce document intitulé «  Synthese des instruction sql  » issu de CodeS-SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Case et when
[sql server 2005] log shipping pour déporter les intérrogation de reporting