Home » Articole » Articole » Calculatoare » Baze de date » SQL: Exemplu de date din baza de date

SQL: Exemplu de date din baza de date

postat în: Baze de date, SQL 0

rDBMS oferă diferite modalități de a introduce date în stocarea lor: de la fișiere CSV, fișiere Excel, fișiere binare specifice produsului, prin mai multe API-uri sau porți speciale de la alte baze de date, respectiv sisteme de baze de date și alte tehnici. Deci, există o gamă largă de posibilități – nestandardizate – de a aduce date în sistemul nostru. Pentru că vorbim despre SQL, folosim comanda standardizată INSERT pentru a face treaba. Este disponibil[ pe toate sistemele.

Folosim doar o cantitate mică de date pentru că dorim să menținem lucrurile simple. Uneori este nevoie de un număr mare de rânduri pentru a face teste de performanță. În acest scop, arătăm o comandă specială INSERT la sfârșitul acestui articol, care crește exponențial tabelul.

person

--
-- After we have done a lot of tests we may want to reset the data to its original version.
-- To do so, use the DELETE command. But be aware of Foreign Keys: you may be forced to delete
-- persons at the very end - with DELETE it's just the opposite sequence of tables in comparison to INSERTs.
-- Be careful and don't confuse DELETE with DROP !!
--
-- DELETE FROM person_hobby;
-- DELETE FROM hobby;
-- DELETE FROM contact;
-- DELETE FROM person;
-- COMMIT;

INSERT INTO person VALUES (1,  'Larry',  'Goldstein', DATE'1970-11-20', 'Dallas',        '078-05-1120', 95);
INSERT INTO person VALUES (2,  'Tom',    'Burton',    DATE'1977-01-22', 'Birmingham',    '078-05-1121', 75);
INSERT INTO person VALUES (3,  'Lisa',   'Hamilton',  DATE'1975-12-23', 'Richland',      '078-05-1122', 56);
INSERT INTO person VALUES (4,  'Kim',    'Goldstein', DATE'2011-06-01', 'Shanghai',      '078-05-1123', 11);
INSERT INTO person VALUES (5,  'James',  'de Winter', DATE'1975-12-23', 'San Francisco', '078-05-1124', 75);
INSERT INTO person VALUES (6,  'Elias',  'Baker',     DATE'1939-10-03', 'San Francisco', '078-05-1125', 55);
INSERT INTO person VALUES (7,  'Yorgos', 'Stefanos',  DATE'1975-12-23', 'Athens',        '078-05-1126', 64);
INSERT INTO person VALUES (8,  'John',   'de Winter', DATE'1977-01-22', 'San Francisco', '078-05-1127', 77);
INSERT INTO person VALUES (9,  'Richie', 'Rich',      DATE'1975-12-23', 'Richland',      '078-05-1128', 90);
INSERT INTO person VALUES (10, 'Victor', 'de Winter', DATE'1979-02-28', 'San Francisco', '078-05-1129', 78);
COMMIT;

Vă rugăm să rețineți că formatul DATE poate depinde de mediul dvs. local. Mai mult, SQLite folosește o sintaxă diferită pentru conversia implicită din șir în DATE.

-- SQLite syntax
INSERT INTO person VALUES (1,  'Larry',  'Goldstein', DATE('1970-11-20'), 'Dallas',      '078-05-1120', 95);
...

contact

-- DELETE FROM contact;
-- COMMIT;

INSERT INTO contact VALUES (1,  1,  'fixed line', '555-0100');
INSERT INTO contact VALUES (2,  1,  'email',      'larry.goldstein@acme.xx');
INSERT INTO contact VALUES (3,  1,  'email',      'lg@my_company.xx');
INSERT INTO contact VALUES (4,  1,  'icq',        '12111');
INSERT INTO contact VALUES (5,  4,  'fixed line', '5550101');
INSERT INTO contact VALUES (6,  4,  'mobile',     '10123444444');
INSERT INTO contact VALUES (7,  5,  'email',      'james.dewinter@acme.xx');
INSERT INTO contact VALUES (8,  7,  'fixed line', '+30000000000000');
INSERT INTO contact VALUES (9,  7,  'mobile',     '+30695100000000');
COMMIT;

hobby

-- DELETE FROM hobby;
-- COMMIT;

INSERT INTO hobby VALUES (1,  'Painting',
                              'Applying paint, pigment, color or other medium to a surface.');
INSERT INTO hobby VALUES (2,  'Fishing',
                              'Catching fishes.');
INSERT INTO hobby VALUES (3,  'Underwater Diving',
                              'Going underwater with or without breathing apparatus (scuba diving / breath-holding).');
INSERT INTO hobby VALUES (4,  'Chess',
                              'Two players have 16 figures each. They move them on an eight-by-eight grid according to special rules.');
INSERT INTO hobby VALUES (5,  'Literature', 'Reading books.');
INSERT INTO hobby VALUES (6,  'Yoga',
                              'A physical, mental, and spiritual practices which originated in ancient India.');
INSERT INTO hobby VALUES (7,  'Stamp collecting',
                              'Collecting of post stamps and related objects.');
INSERT INTO hobby VALUES (8,  'Astronomy',
                              'Observing astronomical objects such as moons, planets, stars, nebulae, and galaxies.');
INSERT INTO hobby VALUES (9,  'Microscopy',
                              'Observing very small objects using a microscope.');
COMMIT;

person_hobby

-- DELETE FROM person_hobby;
-- COMMIT;

INSERT INTO person_hobby VALUES (1, 1, 1);
INSERT INTO person_hobby VALUES (2, 1, 4);
INSERT INTO person_hobby VALUES (3, 1, 5);
INSERT INTO person_hobby VALUES (4, 5, 2);
INSERT INTO person_hobby VALUES (5, 5, 3);
INSERT INTO person_hobby VALUES (6, 7, 8);
INSERT INTO person_hobby VALUES (7, 4, 4);
INSERT INTO person_hobby VALUES (8, 9, 8);
INSERT INTO person_hobby VALUES (9, 9, 9);
COMMIT;

Creştere

Pentru teste de performanță realiste, avem nevoie de o cantitate mare de date. Numărul mic de rânduri din baza noastră de date din exemplu nu îndeplinește acest criteriu. Cum putem genera date de testare și să le stocăm într-un tabel? Există diferite posibilități: bucle FOR într-o procedură, apeluri (pseudo-) recursive, importarea datelor externe într-un mod specific sistemului și altele.

Deoarece avem de-a face cu SQL, introducem o comandă INSERT, care este portabilă în toate rDBMS. Deși are o sintaxă simplă, este foarte puternică. Cu fiecare execuție, se va dubla numărul de rânduri. Să presupunem că există 1 rând într-un tabel. După prima execuție, va exista un al doilea rând în tabel. La prima vedere, acest lucru sună plictisitor. Dar după 10 execuții sunt mai mult de o mie de rânduri, după 20 de execuții sunt mai mult de un milion și bănuim că doar câteva instalații îl pot executa de peste 30 de ori.

INSERT INTO person (id,                                firstname, lastname, weight)
SELECT              id + (select max(id) from person), firstname, lastname, weight
FROM        person;
COMMIT;

Comanda este o INSERT în combinație cu o (Sub-)SELECT. SELECT preia toate rândurile tabelului deoarece nu există nicio clauză WHERE. Acesta este motivul dublării. Coloanele obligatorii firstname și lastname rămân neschimbate. Ignorăm coloanele opționale. Numai cheia primară id este calculată. Noua valoare este suma vechii valori plus cel mai mare id disponibil la pornirea comenzii.

Alte observații:

  • max(id) este determinat o singură dată pe execuție! Aceasta ilustrează un aspect esențial al rDBMS: la nivel conceptual, baza de date are o stare anume înainte de executarea unei comenzi și o stare nouă după executarea acesteia. Comenzile sunt operațiuni atomice care mută baza de date dintr-o stare în alta – rulează în întregime sau deloc! Atât SELECT, cât și SELECT interior cu max(id) acționează asupra stării inițiale. Ele nu văd niciodată rezultatul sau un rezultat intermediar al INSERT. Altfel, INSERT nu s-ar termina niciodată.
  • Dacă dorim să observăm procesul de creștere, putem adăuga o coloană la tabel pentru a stoca max(id) cu fiecare iterație.
  • Calculul noului id poate fi omis dacă DBMS acceptă coloane AUTOINCREMENT.
  • Pentru testele de performanță, poate fi util să stocați unele date aleatorii într-una sau mai multe coloane.

(Include texte din Wikibooks traduse și adaptate de Nicolae Sfetcu)

Analitica rețelelor sociale
Analitica rețelelor sociale

Analitica rețelelor sociale este un domeniu nou și emergent, pregătit pentru a permite companiilor să își îmbunătățească inițiativele de gestionare a performanței în diferite funcții de afaceri. Indiferent dacă este vorba de măsurarea eficienței campaniilor promoționale, colectarea de informații despre … Citeşte mai mult

Nu a fost votat $3,99$9,61 Selectează opțiunile
Adobe Photoshop pentru începători
Adobe Photoshop pentru începători

”Adobe Photoshop pentru începători” este un ghid pentru crearea, editarea și îmbunătățirea imaginilor și a proiectelor, cu informații despre noțiunile de bază în Adobe Photoshop. Adobe Photoshop este un program cu puterea unui studio de fotografie profesionist, cu o multitudine … Citeşte mai mult

Nu a fost votat $1,99$3,59 Selectează opțiunile
Marketing ecologic în Uniunea Europeană
Marketing ecologic în Uniunea Europeană

Într-o economie globalizată, nivelurile medii de consum sunt în creştere ca urmare: a populaţiei mondiale în creştere; sporirii numărului de consumatori cu venituri medii şi mici şi extinderii unei culturi generale a consumului; sistemelor economice din societăţile industrializate bazate pe … Citeşte mai mult

Nu a fost votat $0,00 Selectează opțiunile

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *