Andmebaasi tabeli mitme veeru värskendamine on andmebaasi administraatorite jaoks tavaline nähtus. Näiteks peate võib-olla määrama veerule uue väärtuse teise veeru väärtuse põhjal. Näiteks võite värskendada palga väärtust vastavalt oskuste tasemele. Kuna oskuste tase võib aja jooksul mitu korda muutuda, võite leida end sellist veergu värskendamas.
Õppime, kuidas saame Oracle'is kasutada UPDATE-klauslit, et määrata antud tabeli veergudele uued väärtused.
Oracle UPDATE avaldus
Olemasolevas tabelis oleva väärtuse värskendamiseks kasutame käsku UPDATE, nagu on näidatud järgmises süntaksis:
VÄRSKENDA tabeli_nime
SET veerg1 = uus_väärtus1,
veerg2 = uus_väärtus2,
...
veergN = uus_väärtusN
KUS tingimus;
Kus:
- Tabeli_nimi tähistab tabeli nime, mida soovite värskendada.
- Veerg_1, veerg_2,…, veergN määravad veergude nimed, mida soovite värskendada.
- Uus_väärtus1, uus_väärtus2,…uus_väärtusN võimaldavad teil määrata iga veeru jaoks uue väärtuse.
- Tingimus on valikuline klausel, mis võimaldab värskendatud ridu piirata. Kui jätate tingimuslause vahele, värskendab avaldus kõiki tabeli ridu.
Oracle'i värskenduse näide
Vaatame reaalset näidet selle kohta, kuidas saaksime Oracle'is UPDATE avaldust kasutada:
CREATE TABLE andmebaasid (
nimi VARCHAR2 ( viiskümmend ) MITTE NULL,
default_port NUMBER,
uusim_versioon VARCHAR2 ( kakskümmend ) MITTE NULL,
tüüp VARCHAR2 ( kakskümmend ) MITTE NULL,
keel VARCHAR2 ( kakskümmend ) MITTE NULL
) ;
Esitatud avaldus loob tabeli, kuhu salvestatakse uusimad andmebaasid, vaikeport, uusim andmebaasi versioon, andmebaasi tüüp ja programmeerimiskeel, mida andmebaasi koostamiseks kasutatakse.
Saame lisada mõned näidiskirjed, nagu on näidatud järgmises:
INSERT INTO andmebaasidesse ( nimi, vaikimisi_port, uusim_versioon, tüüp , keel )
VÄÄRTUSED ( 'Oraakel' , 1521 , '19c' , 'suhteline' , 'SQL' ) ;
INSERT INTO andmebaasidesse ( nimi, vaikimisi_port, uusim_versioon, tüüp , keel )
VÄÄRTUSED ( 'MySQL' , 3306 , '8.0' , 'suhteline' , 'SQL' ) ;
INSERT INTO andmebaasidesse ( nimi, vaikimisi_port, uusim_versioon, tüüp , keel )
VÄÄRTUSED ( 'PostgreSQL' , 5432 , '13' , 'suhteline' , 'SQL' ) ;
INSERT INTO andmebaasidesse ( nimi, vaikimisi_port, uusim_versioon, tüüp , keel )
VÄÄRTUSED ( 'MongoDB' , 27017 , '4,4' , 'mittesuhteline' , 'JavaScript' ) ;
INSERT INTO andmebaasidesse ( nimi, vaikimisi_port, uusim_versioon, tüüp , keel )
VÄÄRTUSED ( 'Microsoft SQL Server' , 1433 , '2017' , 'suhteline' , 'T-SQL' ) ;
INSERT INTO andmebaasidesse ( nimi, vaikimisi_port, uusim_versioon, tüüp , keel )
VÄÄRTUSED ( 'Apatš Cassandra' , 9042 , '4.0' , 'mittesuhteline' , 'Java' ) ;
INSERT INTO andmebaasidesse ( nimi, vaikimisi_port, uusim_versioon, tüüp , keel )
VÄÄRTUSED ( 'Redis' , 6379 , '6.0' , 'mittesuhteline' , 'C++' ) ;
INSERT INTO andmebaasidesse ( nimi, vaikimisi_port, uusim_versioon, tüüp , keel )
VÄÄRTUSED ( 'MariaDB' , 3306 , '10,5' , 'suhteline' , 'SQL' ) ;
INSERT INTO andmebaasidesse ( nimi, vaikimisi_port, uusim_versioon, tüüp , keel )
VÄÄRTUSED ( 'SQLite' , null, '3.34' , 'suhteline' , 'C' ) ;
INSERT INTO andmebaasidesse ( nimi, vaikimisi_port, uusim_versioon, tüüp , keel )
VÄÄRTUSED ( 'neo4j' , 7474 , '4,1' , 'mittesuhteline' , 'Java' ) ;
MÄRKUS. SQLite'i andmebaasi default_port on seatud väärtusele NULL, kuna SQLite'il ei ole vaikepordi numbrit.
Tulemustabel:
Oracle'i värskenduste tabel
Oletame, et soovime värskendada Microsoft SQL Serveri uusimat_versiooni, nime ja vaikeporti. Saame käivitada värskenduspäringu, nagu on näidatud järgmiselt:
uuendada andmebaaseseatud nimi = 'MS SQL Server' ,
default_port = 1400 ,
uusim_versioon = '2022'
kus nimi meeldib 'Microsoft SQL Server' ;
Päring peaks leidma rea, mille nimi on NAGU “Microsoft SQL Server”, ning muutma nime, vaikeporti ja uusima versiooni uuteks väärtusteks.
MÄRKUS. Eelnevad andmed on demonstreerimise eesmärgil. See ei pruugi täpselt kajastada ajakohast teavet andmebaaside kohta.
Pärast värskendamist saame uut andmete muudatuste tabelit vaadata järgmiselt.
Nagu näeme, kajastab tabel uuendatud muudatusi.
Järeldus
Selles õpetuses puutusite kokku lausega UPDATE, mis võimaldab värskendada andmebaasitabelis ühte või mitut veergu.
Kuid nagu enamiku andmebaasi tavade puhul, on sellel võimalikud puudused. Näiteks:
- Toimivus – mitme veeru värskendamine on aeganõudvam ja ressursimahukam kui ühe veeru värskendamine. See muutub olulisemaks, eriti kui korrutada suur hulk ridu keeruliste andmetega.
- Andmete terviklikkus – mitme veeru värskendamisel on veel üks probleem andmete terviklikkus. Kui seda kasutatakse valesti, võib mitme veeru värskendamine põhjustada andmete rikkumist või kadumist. Selle leevendamiseks võite sukelduda erinevatesse andmete normaliseerimise tehnikatesse, kuid alati on hea olla tähelepanelik. Samuti saate oma värskenduspäringuid testida arenduses enne nende tootmisse viimist.
- Päringu keerukus – samamoodi võib värskenduslausete käitamine suurendada teie päringute keerukust, muutes nende lugemise, hooldamise või silumise raskemaks.
Lõpuks võib Oracle'i andmebaasis mitme veeru värskendamine mõnes olukorras kasulik olla. Siiski on oluline kaaluda parimate tavade kasutamist riskide minimeerimiseks.