Outils pour utilisateurs

Outils du site


bases_de_donnees:sql:toc

Ceci est une ancienne révision du document !


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

UPDATE table_name
SET column1=VALUE, column2=value2,...
WHERE some_column=some_value

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.

  1. 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
)

Exemples

bases_de_donnees/sql/toc.1438386138.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)