Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2877 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [DB2] Plusieurs questions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[DB2] Plusieurs questions

n°1352474
Dost67
Posté le 24-04-2006 à 01:10:06  profilanswer
 

Bonjour.
 
A l'école on bosse sous DB2. J'ai pas mal de questions. J'ai essayé de chercher des réponses dans la doc mais c un véritable bordel. Donc j'aimerais bcp que vous m'aidiez.
 
1. Quand je fais un UNIQUE(nom, prenom, date_naissance) DB2 créé-t-il un index pour faut-il que je rajoute qqch comme INDEX(nom(3)) en plus pour que l'insertion soit plus rapide ?
 
2. Même question avec FOREIGN KEY : créé-t-il un index ou faut-il le créer en plus ?
 
3. En MySQL pour avoir des entiers positifs je mets des INTEGER UNSIGNED. Avec DB2 je n'ai pas trouvé d'autre solution que de rajouter un CHECK(VALUE >= 0)... Y'a-t-il une autre possibilité ?
 
4. J'ai la description de mes tables (les CREATE TABLE) dans un fichier texte (.sql). Comment les importer depuis la ligne de commande ?
 
5. En MySQL je fais un EXPLAIN MAREQUETE pour analyser l'utilisation des index. Comment faire avec DB2 ?
 
6. Le type ENUM n'a pas l'air d'exister. Comment simuler un ENUM('1','2','3') autrement qu'avec un CHECK ?
 
Merci d'avance.

mood
Publicité
Posté le 24-04-2006 à 01:10:06  profilanswer
 

n°1352505
anapajari
s/travail/glanding on hfr/gs;
Posté le 24-04-2006 à 09:46:56  profilanswer
 

Dost67 a écrit :

Bonjour.
 
A l'école on bosse sous DB2. J'ai pas mal de questions. J'ai essayé de chercher des réponses dans la doc mais c un véritable bordel. Donc j'aimerais bcp que vous m'aidiez.


On s'y fait vite mais c'est vrai que c'est un peu le bronx :o
 

Dost67 a écrit :

1. Quand je fais un UNIQUE(nom, prenom, date_naissance) DB2 créé-t-il un index pour faut-il que je rajoute qqch comme INDEX(nom(3)) en plus pour que l'insertion soit plus rapide ?


J'étais pas sur donc un coup de doc et oui, il semble le créer:

Citation :

Once established, the unique constraint is enforced automatically by the database manager when an INSERT or UPDATE statement modifies the data in the table. The unique constraint is enforced through a unique index.


le reste ici: http://publib.boulder.ibm.com/info [...] 004979.htm
 
 

Dost67 a écrit :

2. Même question avec FOREIGN KEY : créé-t-il un index ou faut-il le créer en plus ?


non
 

Dost67 a écrit :

3. En MySQL pour avoir des entiers positifs je mets des INTEGER UNSIGNED. Avec DB2 je n'ai pas trouvé d'autre solution que de rajouter un CHECK(VALUE >= 0)... Y'a-t-il une autre possibilité ?[/quote]
pourquoi as-tu besoin qu'il soit "unsigned"?
 
[quotemsg=1352474,1,13719]4. J'ai la description de mes tables (les CREATE TABLE) dans un fichier texte (.sql). Comment les importer depuis la ligne de commande ?[/quote]
Après un connect:

Code :
  1. db2 -tf tonfichier.sql


 
[quotemsg=1352474,1,13719]5. En MySQL je fais un EXPLAIN MAREQUETE pour analyser l'utilisation des index. Comment faire avec DB2 ?


Code :
  1. db2expln -d db -u user -p pass -q 'ta requete' -t


Sinon tu as un super truc dans le module d'administration client ( qui te dessine les arbres toussa c'est très bo)
 

Dost67 a écrit :

6. Le type ENUM n'a pas l'air d'exister. Comment simuler un ENUM('1','2','3') autrement qu'avec un CHECK ?
Merci d'avance.

moi pas connaître
 

n°1352667
Dost67
Posté le 24-04-2006 à 13:50:22  profilanswer
 

Merci c cool pour les réponses. Je vais regarder tout ça de plus près.

n°1352817
Dost67
Posté le 24-04-2006 à 16:06:20  profilanswer
 

Je voulais déclarer des UNSIGNED pour n'avoir que des entiers positifs. Mais j'ai utilisé un CHECK à la place.
 
Il reste toujours un flou sur les UNIQUE.
 
En fait je vais mettre un exemple :

Code :
  1. CREATE TABLE Personnels (
  2.      Id_Personnel              INTEGER            NOT NULL
  3.            GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1),
  4.      Nom_Personnel             VARCHAR(255)       NOT NULL,
  5.      Prenom_Personnel          VARCHAR(255)       NOT NULL,
  6.      Date_Naissance_Personnel  DATE               NOT NULL,
  7.      Adresse_Personnel         CLOB(1000)         NOT NULL,
  8.      Telephone_Personnel       CHAR(10),
  9.      Email_Personnel           VARCHAR(255),
  10.      Numero_INSEE              CHAR(13),
  11.      Situation_Maritale        VARCHAR(11)        NOT NULL
  12.            CHECK (Situation_Maritale IN
  13.                  ('Célibataire', 'Marié', 'Divorcé', 'Veuf')),
  14.      PRIMARY KEY (Id_Personnel) ,
  15.      UNIQUE      (Nom_Personnel, Prenom_Personnel, Date_Naissance_Personnel)
  16. );


 
Le prof veut que les clés candidates soient déclarées UNIQUE. Le problème c'est que je veux que Nom, Prénom, Date_Naissance soit unique mais je voudrais en fait créer un index que sur Nom(3) car sinon bonjour l'utilisation inutile de l'espace disque.
 
Et aussi : j'ai lu que CLOB c'est pas bon de l'utiliser car DB2 le gère mal, que dois-je utiliser à la place ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [DB2] Plusieurs questions

 

Sujets relatifs
Projet a plusieurs (fps)?Se connecter à partir de plusieurs pcs sur une BD access
GetParameter: récupérer plusieurs valeurs venant de la meme variableUn seul jeu de script pour plusieurs sites
Image qui comporte plusieurs liensRequête SQL sur plusieurs champs en même temps
Affectation de plusieurs variables dans une seule.[VBA Excel] Sélectionner plusieurs onglets par une macro
Questions d'un débutant en C...xml a plusieurs niveaux
Plus de sujets relatifs à : [DB2] Plusieurs questions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR