Welkom bij les negen ‘Manipulating your Data’ van de SQL Tutorial, die deel uitmaakt van de SQL Training Cursus. In deze les zullen we het hebben over de INSERT, UPDATE, en DELETE statements van SQL.
Doelstellingen
Aan het einde van deze les, zult u in staat zijn om:
-
de INSERT-opdracht kunnen uitleggen en kunnen uitleggen hoe deze kan worden gebruikt
-
de UPDATE-opdracht kunnen beschrijven met voorbeelden
-
de DELETE-opdracht kunnen uitleggen met voorbeelden
De INSERT-opdracht
De INSERT-opdracht is een van de drie opdrachten die behoren tot het zogehetenzogenaamde “data manipulatie taal” deel van de SQL – dat is de INSERT, UPDATE, en DELETE.
Met deze drie statements kunt u gegevens in de database veranderen, niet de structuur veranderen maar de inhoud. Zij verschillen van het SELECT statement, waarmee u alleen de gegevens uit de database kunt lezen.
Dus met het INSERT statement kunt u nieuwe records aan uw database tabel toevoegen. In het algemeen wordt het gebruikt om records toe te voegen aan het einde van de tabel. Een ding dat belangrijk is wanneer u INSERT doet, is dat uw gegevens moeten voldoen aan alle regels in uw database.
Kijk eens naar de afbeelding hieronder:
Eerst kijken we naar de tabel Persoon als voorbeeld. Hier hebben we de primaire sleutel. De primaire sleutels in die database zijn vooraf ingesteld op auto increments in onze SQL.
We voegen de primaire sleutel nooit zelf in, we laten dat over aan de database. Dan hebben we een firstname en lastname, die een NOT NULL vlag hebben. De doorlopende ruit geeft aan dat deze velden verplicht zijn, we kunnen ze niet overslaan.
Last is de timestamp, die NIET NULL is, maar tegelijkertijd is de standaardwaarde de huidige timestamp. Dus nogmaals, dat zou automatisch een huidige tijdstempel instellen als we er geen datum in zetten.
Als we records in een andere tabel moeten invoegen, moeten we ervoor zorgen dat de gegevens echt bestaan. Dus in dit soort van de end to end tabellen of op een soort van vreemde sleutel situatie, moet je altijd ervoor zorgen dat de gegevens die u daar invoegt daadwerkelijk vertegenwoordigen geldige waarden in de tabellen waarnaar wordt verwezen.
Laten we onze Person tabel weer als uitgangspunt.
Person tabel aan het begin is zoals afgebeeld.
Zie hieronder een voorbeeld:
select * from person
insert into person
values (7, ‘Martin’, ‘Holzke’, ‘1980-05-05’, ‘xxx’, now());
We kunnen slechts in één tabel tegelijk invoegen. Je kunt gegevens samenvoegen met behulp van de SELECT-functie, maar traditioneel gesproken kun je gegevensmanipulatie op één tabel tegelijk uitvoeren.
Wat we in bovenstaand voorbeeld hebben overwogen, is de ‘impliciete invoeging’. Het betekent dat we de kolommen die we willen vullen niet noemen, we moeten ze allemaal in precies de volgorde zetten waarin de tabel bestaat.
De insert zal de nieuwe waarden automatisch aan de tabelkolommen koppelen.
Note: Voor het insert-, update- en delete-statement moeten we in gedachten houden dat de databases geen undo-knop hebben. Dus als je eenmaal een waarde hebt verzonden, wordt deze opgeslagen in de database.
Omdat we leren over de impliciete insert, moeten we de waarden voor elke kolom opgeven. Het helpt dus enorm om de database tabel in hetzelfde scherm te zien.
Nu, als we de bovenstaande code uitvoeren, kun je zien dat de tabel is bijgewerkt en het ingevoegde record is te zien op positie 7.
Ook geeft het insert statement niets terug, in tegenstelling tot het SELECT statement. Daarom is het scherm na afloop leeg.
Volgende. Laten we eens kijken naar de expliciete versie, die sterk wordt aanbevolen om te gebruiken.
select * from person
insert into person (firstname, lastname, managerid, dob)
values (‘Martin’, ‘Holzke’, 5, ‘1980-05-05’);
In het bovenstaande voorbeeld hebben we slechts 4 waarden van de tabel genoemd. De rest wordt standaard ingevuld. Wanneer we de query uitvoeren, zien we dat de nieuwe waarden aan de tabel zijn toegevoegd.
De primaire-sleutelwaarde is 9 en niet 8, omdat die waarde al eens in de database is gebruikt.
Dit is gunstig voor de veiligheid, omdat de primaire sleutel niet kan worden hergebruikt en fouten kunnen worden opgespoord.
We zien ook dat de waarde van de kolom ‘created’ wordt ingesteld met de huidige tijdstempel, terwijl we dat expliciet niet vermelden.
Volgende, om meerdere invoegingen te doen, kunnen we de bovenstaande query uitvoeren, opnieuw en opnieuw, met verschillende waarden.
De meerdere invoegingen kunnen worden uitgevoerd met slechts één insert statement. We voegen de nieuwe reeks waarden toe die door komma’s gescheiden zijn.
select * from person
insert into person (firstname, lastname, managerid, dob)
values (‘Martin’, ‘Holzke’, 5, ‘1980-05-05’),
(‘Fred’, ‘Flintstone’, 5, ‘1987-06-02’);
De volgende afbeelding toont de bijgewerkte tabel wanneer meerdere invoegingen zijn gedaan.
Nogmaals willen we een insert doen door gegevens uit dezelfde tabel te selecteren, zodat u gegevens kunt kopiëren, wat erg handig is voor het vullen van een database. Bij datamigratie bijvoorbeeld, wil je eigenlijk gegevens kopiëren binnen een database of tussen verschillende databases/tabellen.
De volgende code laat zien hoe je gegevens kopieert.
select * from person
insert into person (firstname, lastname, managerid, dob)
select concat(‘kopie van’, firstname), lastname, managerid, dob
from person
where id>=10
De volgende afbeelding toont de waarden van de tabel wanneer we alleen het select statement uitvoeren.
Nu voeren we de query uit samen met het insert statement. Dit kan eenvoudig worden gedaan door de verklaringen te selecteren die we willen uitvoeren en die query uit te voeren.
De volgende afbeelding laat zien hoe de tabel is gewijzigd na het uitvoeren van de bovenstaande query.
Hiermee hebben we gezien hoe het kopiëren van waarden met behulp van het insert statement de database kan bevolken. Over het algemeen vullen we de database wanneer we de query’s in een testomgeving uitvoeren.
SQL – Update Query
De update query of statement is de tweede van de drie data manipulatie taal statements, die zijn INSERT, UPDATE en DELETE. Met de UPDATE query kunt u dus bestaande records in een tabel wijzigen.
Omdat we het over SQL hebben als een set-gebaseerde taal, zal de UPDATE query werken op een set records en niet op één record (afhankelijk van hoe u uw UPDATE uitvoert).
Dus hoe doen we al onze updates?
Overweeg de onderstaande query:
select * from person
where id = 10
update person
set dob = ‘1990-01-01’
where id = 10
In de bovenstaande query selecteren we eerst de records uit de tabel Person waarvan id gelijk is aan 10. De volgende afbeelding toont de waarde die wordt geselecteerd.
Dan gebruiken we de Update query om de DOB in te stellen voor het record waarvan id 10 is. Als we het where statement niet gebruiken, wordt elk record in onze tabel bijgewerkt naar de ingestelde waarde.
Bij het uitvoeren van de bovenstaande query zien we dat de dob-waarde voor het 10e record in de tabel is bijgewerkt.
Nu, om meerdere dingen in een record bij te werken, kunnen we de door komma’s gescheiden lijst gebruiken.
Overweeg de hieronder getoonde query:
select * from person
where id = 10
update person
set dob = ‘1990-01-01’, firstname = ‘Mike’
where id = 10
Bij het uitvoeren van de bovenstaande query krijgen we de bijgewerkte tabel zoals afgebeeld:
Wanneer we nu meer dan één record willen wijzigen, kunnen we het volgende doen:
select * from person
where firstname = ‘Martin’
update person
set firstname = ‘Mike’
where firstname = ‘Martin’
In de bovenstaande query hebben we de waarde van de voornaam gewijzigd van Martin in Mike, waar deze voorheen ook in de personentabel stond.
Laten we eens een ander voorbeeld bekijken:
In de persoonstabel was geen ruimte om wat meer numeriek werk te doen, dus laten we de projecttabel eens bekijken.
Hier proberen we een scenario te nemen waarbij een behandeling van de hele tabel wenselijk zou kunnen zijn.
De projecttabel heeft op dit moment drie records, zoals afgebeeld.
Elk record heeft een budgetwaarde. Laten we zeggen dat we ze allemaal met ongeveer 20% willen opwaarderen. We kunnen dit doen met de onderstaande query:
select * from project
update project
set budget = budget*1.2
Dus de bovenstaande query zou nu alle records in de projecttabel met twintig procent verhogen.
De bijgewerkte records zien er als volgt uit:
Hiermee kunnen vele wiskundige bewerkingen worden uitgevoerd op de waarden zoals in het voorbeeld hierboven.
Eén ding om te onthouden bij het gebruik van het UPDATE statement is om de ‘where’-clausule te gebruiken waar dat van toepassing is. Anders worden de waarden van alle entries in de tabel bijgewerkt.
SQL DELETE Statement
Laten we nu het DELETE statement bestuderen, dat het laatste statement is van de drie data manipulatie taal statements. Het DELETE statement heeft de mogelijkheid om een of meer records in hun geheel te verwijderen. We hebben het niet over het verwijderen van de inhoud van individuele kolommen, omdat we dat niet kunnen doen.
Als je dat wilt doen, moet je het UPDATE statement gebruiken om de inhoud van de individuele kolommen te wijzigen. Dus DELETE is het verwijderen van een volledig record of meerdere volledige records.
Zoals van toepassing met INSERT en UPDATE statement, zodra je een reeks records verwijdert, zijn ze weg en er is geen manier om ze terug te krijgen.
We moeten er ook voor zorgen dat wanneer we een record uit de tabel verwijderen, die vermelding (of de waarde ervan) niet door een andere tabel wordt gebruikt.
De persoonstabel heeft de volgende beginvermeldingen.
Het DELETE statement kan worden gebruikt zoals in de volgende query wordt getoond:
select * from person
where id = 10
delete from person
where id = 10
In de hierboven getoonde query hebben we het record verwijderd waarvan de id-waarde 10 was.
Note: Vergeet niet om de ‘where’-clausule te gebruiken bij het DELETE statement. Anders zal het statement je personentabel snel leegmaken zonder de ‘where’-clausule.
Wanneer we de bovenstaande query uitvoeren, zien we dat record met id-waarde 10 is verwijderd en de bijgewerkte tabel is zoals afgebeeld. Al het andere blijft, behalve die met een primaire sleutel tien.
Er zijn situaties waarin we van een heel blok af willen. Bijvoorbeeld, we willen alle kopie entries uit de persoonstabel verwijderen, zoals weergegeven.
De query om alle kopieerrecords uit de personentabel te verwijderen, ziet er als volgt uit:
select * from person
where firstname like ‘copy%’
delete from person
where firstname like ‘copy%’
In de bovenstaande query geeft ‘copy%’ de vermeldingen aan die beginnen met ‘copy’ en verder gaan met een willekeurig woord.
Bij het uitvoeren van de bovenstaande query kunnen we zien dat alle records die met ‘Copy’ zijn begonnen, uit de persoonstabel zijn verwijderd.
Note: Het wordt altijd aanbevolen om het DELETE statement voor één tabel tegelijk te gebruiken. Het wordt afgeraden om het statement te gebruiken in het geval van gezamenlijke tabellen.
Conclusie
Hiermee zijn we aan het einde gekomen van deze les over ‘Data Manipulation in SQL.’De volgende les richt zich op Transaction Control.
{{lectureCoursePreviewTitle}} Bekijk Transcript Bekijk Video
Om meer te leren, volg de Cursus
SQL Training Certification Training
Ga naar Cursus
Om meer te leren, volg de Cursus
SQL Training Certification Training
Om meer te leren, volg de Cursus
SQL Opleiding Certificering Ga naar Cursus