MySQL markøreksempler

MySQL markøreksempler
I MySQL returnerer SELECT -spørringen en liste over matchende poster etter utførelsen som ble kalt resultatsettet. Markøren er en nyttig funksjon i MySQL for å krysse hver post separat fra resultatsettet. Noen ganger krever det å utføre tilleggsbehandling for alle de spesifikke postene til resultatsettet før du returnerer spørringsutgangen. Dette kan gjøres enkelt ved å bruke markøren. Funksjonene, fordelene, ulempene og bruken av MySQL -markøren er beskrevet i denne opplæringen.

Funksjoner av MySQL Markør:

  1. MySQL Markør er ensensitiv for MySQL versjon 8+. Det betyr at databaseserveren kanskje ikke lager en kopi av resultatsettet.
  2. Mysql markør er skrivebeskyttet. Så det kan ikke brukes til å oppdatere posten.
  3. MySQL -markøren er ikke rullbar. Det betyr at den bare kan komme videre og ikke kan hoppe over noen plate.

Trinn for å bruke en markør:

De viktigste trinnene ved å bruke markøren i MySQL for å lese hvert resultatsettoppføring vises nedenfor.

Erklære en markør:

Erklære cursor_name markør for select_statement;

Markørvariabelen krever å definere for å iterere resultatsettet som er returnert av SELECT -setningen.

Åpne markøren

Åpen Cursor_name;

Markøren må åpne for å peke på utgangspunktet for resultatsettet.

Hente markøren

Hente cursor_name til variabel_list;

Fetch -kommandoen brukes til å lese feltene som er definert i SELECT -spørringen som er brukt på tidspunktet for å erklære markøren.

Lukk markøren

Lukk markørnavn;

Markøren er pålagt å lukke for å tilbakestille resultatsettet og fjerne referansen til resultatsettet.

Forutsetninger:

Du må lage de nødvendige tabellene med data for å vite bruken av en markør i MySQL. Åpne terminalen og kjør følgende kommando for å koble til MySQL -serveren hvis det ikke er noe passord for rotbrukeren.

$ sudo mysql -u root

Kjør følgende kommando for å velge databasen.

Bruk test_db;

Kjør følgende kommando for å opprette en database som heter test_db.

Opprette databasetest_db;

Kjør følgende spørsmål for å opprette en tabell som heter Sales_persons med fire felt.

Lag tabell Sales_persons (
id int auto_increment primærnøkkel,
Navn varchar (30) ikke null,
E -post varchar (50),
Kontakt_no varchar (30));

Kjør følgende spørsmål for å sette inn tre poster i selger bord.

Sett inn 'Sales_persons' ('id', 'Navn', 'E -post', 'Contact_no') verdier (null, 'Kamal Hasan', '[email protected] ',' 0191275634 '),
(Null, 'Nila Hossain', '[email protected] ',' 01855342357 '),
(Null, 'Abir Hossain', '[email protected] ',' 01634235698 ');

Kjør følgende spørsmål for å opprette en tabell som heter Salg med fire felt som inneholder en fremmed nøkkel som vil skape det en-til-mange-forholdet fra Sales_persons bord til Salg bord.

Lag bordsalg (
id int ikke null primærnøkkel,
Sales_date date ikke null,
beløp int,
sp_id int,
Begrensning FK_SP Foreign Key (SP_ID)
Referanser Sales_persons (ID)
På slett kaskade på oppdatering kaskade);

Kjør følgende spørsmål for å sette inn fire poster i Salg bord.

Sett inn 'Sales' ('ID', 'Sales_date', 'Beløp', 'SP_ID') verdier
('90', '2021-11-09', '800000', '1'),
('34', '2020-12-15', '5634555', '3'),
('67', '2021-12-23', '900000', '1'),
('56', '2020-12-31', '6700000', '1');

Bruk av MySQL Markør:

Markøren brukes hovedsakelig i MySQL -prosedyre eller funksjon som inneholder en eller flere Select Query, og den deklarerte markøren itererer hver post av resultatsettet som er returnert av spørringen. Lag en MySQL -funksjon som heter Beregne_bonus Med følgende uttalelse som vil ta et heltallsargument og returnere en flyteverdi. SELECT -spørringen som er brukt i funksjonen, vil beregne det totale salgsbeløpet til hver selger og returnere navnet på selgeren og totalsalget i resultatsettet. Markørens funksjon er å beregne 15% av det totale salget som en bonus hvis det totale salgsbeløpet er mer enn 10000; Ellers vil bonusen være 10% av det totale salget. Funksjonen vil returnere bonusbeløpet basert på selgerens ID -verdi. Kjør følgende uttalelse fra MySQL -ledeteksten etter valg av databasen for å opprette funksjonen.

Avgrensning //
Opprett funksjon 'Calculate_bonus' ('Spid' int)
Returnerer varchar (200)
Leser SQL -data
Deterministisk
BEGYNNE
Erklære gjort int standard falsk;
Erklære total int standard 0;
Erklære personen varchar (50) standard "";
Erklære bonus int standard 0;
Erklære output varchar (200);
Erklære cur markør for
Velg navn, sum (beløp)
Fra salg, Sales_persons
Hvor Sales_persons.ID = salg.sp_id og sp_id = spid
Gruppe av sp_id;
Erklære fortsette behandler for ikke funnet sett gjort = sant;
Åpen cur;
Hente cur til person, totalt;
Hvis totalt> 10000 da
Sett bonus = Totalt*0.15;
ELLERS
Sett bonus = Totalt*0.10;
SLUTT OM;
Sett output = concat ("Bonusen til", person, "er tk.", Bonus,".");
Lukk cur;
Returutgang;
SLUTT;
//

Kjør følgende spørsmål for å lese alle poster av Sales_persons bord.

Velg * fra Sales_Persons;

Kjør følgende spørsmål for å lese alle poster av Salg bord.

Velg * fra salg;

Kjør følgende spørsmål for å ringe Beregne_bonus () funksjon av mysql med argumentverdien, 1. I følge salgstabellen er det tre poster for selgeren hvis ID er 1. Så vil bonusen være 15% avslag (6700000+900000+800000).

Velg Calculate_Bonus (1);

Kjør følgende spørsmål for å ringe Beregne_bonus () funksjon av mysql med argumentverdien, 2. I følge salgstabellen er det ingen registrering for selgeren hvis ID er 2. Så vil bonusen være 0.

Velg Calculate_Bonus (2);

Kjør følgende spørsmål for å ringe Beregne_bonus () funksjon av mysql med argumentverdien, 3. I følge salgstabellen er det en post for selgeren hvis ID er 3. Så vil bonusen være 15% av 5634555.

Velg Calculate_Bonus (3);

Konklusjon:

MySQL Markør gjør den spesifikke oppgaven enklere ved å iterere hver tabellrekke. MySQL Markør er vist i denne opplæringen ved å bruke en MySQL -funksjon. MySQL -markøren kan også brukes i MySQL -prosedyren. Jeg håper MySQL -markørens konsept vil bli klarert for brukeren, og brukeren vil kunne bruke markøren etter å ha lest denne opplæringen.