23 - 10 - 2017
Main Menu
Development
Old stories

Kjøre en ikke-spørring

User Rating:  / 0
PoorBest 

"Execute non query" brukes for komandoer til databasen som ikke returnerer et utvalg. Dette kan f.eks være å slette en rad i en tabell eller legge til en ny rad... man kan også lage en ny tabell eller slette en tabell, det er mulig å gjøre dette i SQL Command Builder også, og den finnes på File/Execute non query. Bare å skrive først en komando og så velge den. Men for all del....ikke slett tabellene som brukes av agetoagesqlite, gjør man det er nok databasen ødelagt og man må begynne med en ny blank database. (hvis man ikke har tatt en kopi av databasen først da) Jeg fant en veldig fin og ikke minst effektiv måte å lage en ny tabell som fylles med resultatet av en spørring på eksisterende tabeller og man benytter "AS" som faktisk er mye mer hurtig enn å bruke INTO (som er vanlig). La oss si man vil lage en ny tabell med navn ata_temp som man vil fylle med data fra en eksisterende tabell, man skriver da f.eks

CREATE TABLE ata_temp AS SELECT * from ata_persons;

og på brøkdelen av et sekund lages den nye tabellen og er en kopi av tabellen ata_persons. Men det interessante er at man kan gjøre utvalg og legge til nye kolonner som f.eks

CREATE TABLE ata_temp as SELECT PID, Firstname, Lastname, Birthdate, Birthplace, Country FROM ata_persons JOIN ata_locations ON(Birthplace = Name) WHERE Country = 'Norway'

En ny tabell ata_temp vil da bli laget og som har kolonnene PID, Firstname, Lastname, Birthdate, Birthplace, Country og denne siste kolonnen er en kolonne fra tabellen ata_locations. Jeg testet hastigheten på å lage en ny tabell med spørring på at persontabell med 8600 personer og på min gamle pc tar det bare ca 80 millisekunder.

Den nye tabellen vil være permanent og blir lagret i databasen men hvis man bare trenger en midlertidig tabell som bare vil eksistere i hukommelsen mens man kjører kan man skrive:

CREATE TEMPORARY TABLE tmp AS SELECT * FROM Persons

Denne komandoen er meget hurtig fordi databasen trenger ikke å klargjøre for å rulle tilbake hvis noe går galt og samme spørring som nevnt tidligere (80 millisekunder kjøretid) går på 10 millisekunder med temporary tabell.

For å vise alle dataene (med de orginale kolonnenavnene (overskrift på kolonnen)) i den nye tabellen man laget skriver man bare:

SELECT * from ata_temp;

 

Add comment


Security code
Refresh