Ceci est une ancienne révision du document !
Table des matières
Langage SQL
Instructions
Types de données
- Données sous Oracle
- Données sous MySQL
CREATE
L'utilisation la plus commune de CREATE
est pour une table dans la base de données.
Syntaxe
CREATE TABLE nom_table ( nom_colonne1 type_colonne1 [DEFAULT expression1] [contrainte1], nom_colonne2 type_colonne2 [DEFAULT expression2] [contrainte2], ... nom_colonneN type_colonneN [DEFAULT expressionN] [contrainteN], [TABLESPACE nom_espace_tables] );
Exemple SQL Server
CREATE TABLE [dbo].[Client] ( [Id] [INT] IDENTITY(1,1) NOT NULL, [TIMESTAMP] [TIMESTAMP] NOT NULL, [Name] [VARCHAR](30) NOT NULL, [AddressId] [INT] NOT NULL, [CreationDate] [datetime] NOT NULL, )
Exemple de création
L'exemple suivant est donné avec des types pris en charge dans Oracle.
CREATE TABLE Etudiant ( etd_id NUMBER(10) PRIMARY KEY, etd_nom VARCHAR2(15), etd_prenom VARCHAR2(15), etd_adresse VARCHAR2(30), etd_naissance DATE );
Autre exemple avec des contraintes (SQL Oracle) :
CREATE TABLE Documents ( ISBN NUMBER(10) CONSTRAINT ISBN_PK_Documents PRIMARY KEY, Titre VARCHAR2(30), Auteur VARCHAR2(30), TYPE VARCHAR2(15) CONSTRAINT Type_CK_Documents CHECK (TYPE IN ('Livre', 'Video', 'CD', 'DVD', 'BD')), Editeur VARCHAR2(30), Annee DATE ); CREATE TABLE Exemplaire ( Numero NUMBER(10), Etat VARCHAR(5) CONSTRAINT Etat_CK_Exemplaire CHECK (Etat IN ('Neuf', 'Bon', 'Moyen', 'Mauvais')), ISBN NUMBER(10) CONSTRAINT ISBN_FK_Documents REFERENCES Documents(ISBN), CONSTRAINT ISBN_PK_Exemplaire PRIMARY KEY (ISBN, Numero) ); CREATE TABLE Membre ( Numero NUMBER(10) CONSTRAINT Numero_PK_Membre PRIMARY KEY, Nom VARCHAR2(30), Prenom VARCHAR2(30), Adresse VARCHAR2(30), Tel VARCHAR2(10), FinAbonnement DATE ); CREATE TABLE Emprunt ( Numero NUMBER(10) PRIMARY KEY, Membre NUMBER(10), ISBN NUMBER(10), Exemplaire NUMBER(10), RenduLe DATE, CONSTRAINT Exemplaire_FK_Emprunt FOREIGN KEY (Numero, Exemplaire) REFERENCES Exemplaire(ISBN, Numero), CONSTRAINT FK_Emprunt_Membre FOREIGN KEY (Membre) REFERENCES Membre(Numero) );
DESC
Syntaxe
Donne la description d'un objet, comme par exemple d'une table qui aura ses noms de champs et ses types affichés.
DESC nom_de_la_table[;]
INSERT
Syntaxe
INSERT [INTO] nom_de_la_table_cible [(liste_des_colonnes_visées)] {VALUES (liste_des_valeurs) | requête_select | DEFAULT VALUES }
Exemple
INSERT INTO Documents VALUES(1, 'Mobidick', 'Alain Thérieur', 'Livre', 'Vieille edition', 1906); INSERT INTO Documents VALUES(2, 'Alice aux pays des merveilles', 'Yvon Pascroire','DVD','Paramont', 2001); INSERT INTO Documents VALUES(3, 'La légende de Zoro', 'Emesse Dosse', 'BD', 'Couler', 1987);
Insertion avec les colonnes spécifiées
Lors d'une insertion, il est possible de déterminer les colonnes qui seront affectés.
INSERT INTO Clients (CNT_NOM, CNT_PRENOM) VALUES ('Jean', 'Jacques')
DELETE
Syntaxe
DELETE FROM nom_table WHERE nom_colonne=valeur
UPDATE
Syntaxe
ALTER
Syntaxe
ALTER TABLE nomTable {ADD COLUMN spécificationColonne| DROP COLUMN nomColonne [RESTRICT|CASCADE]| ADD spécificationContrainte| DROP nomContrainte [RESTRICT|CASCADE]| ALTER nomColonne SET DEFAULT valeurDéfaut| ALTER nomColonne DROP DEFAULT}
Session
Comme les insertions peuvent comprendre des dates et que les dates ont différents formats, il faut modifier ce format avant d'insérer d'autres enregistrements.
ALTER SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd';
NLS → Natural Language Support, permet d'adapter la présentation des données en fonction du pays et de la langue.
SELECT
Exemples
Voici quelques exemples concrets qui peuvent aider à comprendre le SELECT
.
Exemple 1
La liste contenant le titre et l'auteur de tous les documents de la bibliothèque.
SELECT Titre, Auteur FROM Documents;
Exemple 2
La liste des documents produits en 2007.
SELECT * FROM Documents WHERE EXTRACT (YEAR FROM Annee) = 2007;
Exemple 3
La liste des livres édités entre 2000 et 2005.
SELECT * FROM Documents WHERE EXTRACT (YEAR FROM Annee) BETWEEN 2000 AND 2007;
Exemple 4
La liste des documents dont le titre contient le mot « java », peu importe la casse.
SELECT * FROM Documents WHERE LOWER(Titre) LIKE '%java%';
Exemple 5
La liste de tous les documents dont la bibliothèque ne dispose que d'un seul exemplaire.
- Affiche seulement l'ISBN
SELECT ISBN FROM Exemplaire GROUP BY ISBN HAVING COUNT(*)=1; SELECT * FROM Document WHERE ( SELECT COUNT(*) FROM Exemplaire WHERE Exemplaire.ISBN=Document.ISBN ) = 1;
Exemple 6
La liste des exemplaires de documents dont l'état est « Mauvais ».
SELECT * FROM Exemplaires WHERE Etat = 'Mauvais';
Exemple 7
La liste des éditeurs différents présents dans la bibliothèque.
SELECT DISTINCT Editeur FROM Documents;
Exemple 8
Le nombre d'éditeurs différents présents dans la bibliothèque.
SELECT COUNT(DISTINCT Editeur) FROM Documents;
Exemple 9
Les nom, prénom et téléphone des membres dont l'abonnement a expiré.
SELECT Nom, Prenom, Tel FROM Membre WHERE SYSDATE > FinAbonnement;
Exemple 10
Les nom, prénom et téléphone des membres dont l'abonnement a expiré depuis au moins une année.
SELECT Nom, Prenom, Tel FROM Membre WHERE FinAbonnement < SYSDATE - 365;
Exemple 11
Les noms et prénom des membres qui ont emprunté plus de trois documents.
SELECT Nom, Prenom FROM Membre WHERE Numero IN ( SELECT Membre FROM Emprunt GROUP BY Membre HAVING COUNT(Membre) > 3; ) SELECT Nom, Prenom FROM Membre WHERE ( SELECT COUNT(*) FROM Emprunt WHERE Emprunt.Membre = Membre.Numero ) > 3;
Exemple 12
SELECT Nom, Prenom FROM Membre WHERE ( SELECT COUNT(*) FROM Emprunt WHERE Emprunt.Membre = Membre.Numero GROUP BY Emprunt.ISBN HAVING COUNT(ISBN) >= 2 ) > 0;
Exemple 13
SELECT DISTINCT Auteur FROM Document WHERE NOT EXISTS ( SELECT * FROM Exemplaire WHERE Exemplaire.ISBN = Document.ISBN AND Exemplaire.Etat <> 'Mauvais' );
LIKE
LIKE 'A%' | Commence par A |
LIKE '%C%' | Contient C |
LIKE '[LP]%' | Commence par L ou P |
LIKE '___' | Contient 3 caractères |
LIKE dans SQL Server : http://msdn.microsoft.com/en-us/library/aa933232(SQL.80).aspx
Drop
DROP TABLE Emprunt; DROP TABLE Membre; DROP TABLE Exemplaire; DROP TABLE Documents;
Contraintes
Contraintes d'intégrité référentielle
Contrainte CHECK sur une colonne
CREATE TABLE Client ( noCLIENT INTEGER NOT NULL CHECK(noClient >0 AND noClient < 100000), nomClient VARCHAR(15) NOT NULL, noTéléphone VARCHAR(15) NOT NULL )