AMVA50,php ja mysql |
1. Yleistä | 2. Web toimintaympäristönä | 3. Yleistä tietokannoista | 4. SQL-kielen perusteet | 5. PHP ja MySQL |
6. Esimerkkisovellus | 7. Käyttäjien hallinta | 8. SQL-lauseiden turvallisuus | 9. Oppimistehtävät |
4.2 Tietokannan rakenteen määrittely
4.2.1.
Tietotyypit 4.3 Taulujen tietojen ylläpito
3.1. Rivin lisääminen
|
4. SQL-KIELEN PERUSTEET
4.1 YleistäSQL eli Structured Query Languaqe Standardoitu ja laajimmin käytetty kieli relaatiotietokantojen yhteydessä. SQL-kieli sisältää mm. seuraavat ominaisuudet:
SQL:ää voidaan käyttää monin eri tavoin :
SQL-kielestä on olemassa eri versioita ja tietokannan hallintajärjestelmien käyttämissä SQL-kielen versioissa on pieniä eroavaisuuksia. Peruslauseet toimivat samalla tavoin lähes kaikissa järjestelmissä. Tällä kurssilla SQL-kielen lauseet esitetään MySQL:n mukaisessa muodossa. SQL-lauseissa kirjainkoolla ei ole muuten merkitystä kuin kenttien ja taulujen nimissä. Selkeyden vuoksi kieleen kuuluvat sanat kirjoitetaan usein isoilla kirjaimilla. Myöskään rivinvaihdoilla ei ole merkitystä. Kenttien nimissä isoilla ja pienillä kirjoitettu kenttä tarkoittavat eri kenttää, joten niiden suhteen tulee olla tarkkana. 4.2. Tietokannan rakenteen määrittelyJokaisen taulun sarakkeelle (kentälle) voidaan määritellä:
4.2.1. MySQL:n tärkeimmät tietotyypit:
4.2.2. Taulun luominen: CREATE TABLEPerussyntaksi: CREATE TABLE Osasto( OsastoID INTEGER AUTO_INCREMENT PRIMARY KEY, OsastoNimi VARCHAR(64) NOT NULL) TYPE = InnoDB; Selityksiä koodille:
Viiteyhteydet määritellään foreign key-rajoitteen avulla. Esimerkki. Luodaan työntekijä-taulu, jossa on viiteavaimena edellisen osasto-taulun OsastoID. CREATE TABLE Tyontekija( TyontekijaID INT PRIMARY KEY, Sukunimi VARCHAR(30) Etunimi VARCHAR(30), OsastoID INTEGER, INDEX(OsastoID), FOREIGN KEY(OsastoID)REFERENCES Osasto(OsastoID)) type=innodb; Selityksiä koodille:
4.2.3. Taulun rakenteen tutkiminen, muuttaminen ja poistaminenTietokannan kaikki taulut saadaan näkyviin lauseella: SHOW TABLES; Taulun rakennetta voi muuttaa ALTER TABLE -lauseella. Katso sen tarkempi syntaksi muutostarpeen mukaan MySQL:n dokumentaatiosta osoitteesta www.mysql.com. Taulun voi poistaa kokonaan lauseella: DROP TABLE taulun_nimi; 4.3. Taulujen tietojen ylläpito
4.3.1. Rivin lisääminen: INSERT INTOPerussyntaksi: Jos kaikille kentille annetaan arvot, ei niiden nimiä ole pakko luetella. Esimerkki. Lisätään Osasto-tauluun Myynti-osasto ja Työntekijä-tauluun osastolla työskentelevä Terttu Testaaja. INSERT INTO Osasto (OsastoNimi) VALUES ('Myynti'); INSERT INTO Tyontekija (TyontekijaID, Sukunimi, Etunimi, OsastoID) VALUES (1,'Testaaja','Teemu', 1); Selityksiä koodille:
Esimerkki. Rivien lisäämisen onnistuminen voidaan tarkistaa hakemalla kaikki tietueet tauluista SELECT-lauseilla. SELECT * FROM Osasto; SELECT * FROM Tyontekija;
4.3.2. Tietueiden päivitys: UPDATEPerussyntaksi: WHERE-ehtoja käsitellään tarkemmin SELECT-lauseen yhteydessä. Esimerkki. Muutetaan Terttu Testaajan sukunimeksi Esimerkkilä. UPDATE Tyontekija SET sukunimi='Esimerkkilä' WHERE TyontekijaID=1;
3.3. Rivin poistaminen: DELETEPerussyntaksi: Esimerkki. Poistetaan Teemu Esimerkkilän tiedot Työntekijä-taulusta. DELETE FROM Tyontekija WHERE TyontekijaID=1; 4.4. Tietueiden haku: SELECTTietokantaan voidaan tehdä hyvin monenlaisia hakuja erilaisilla SELECT-lauseilla. Tällä kurssilla käsitellään vain yksinkertaisia perushakuja. Perussyntaksi: Antamalla FROM-määreeseen * -merkki, saadaan kaikki sarakkeet tulosjoukkoon. Esimerkki. Haetaan kaikki kaikki Työtekijä-taulun kentät nimen mukaisessa aakkosjärjestyksessä. SELECT * FROM Tyontekija ORDER BY Sukunimi, Etunimi; Esimerkki. Haetaan kaikki kaikkien osasto 1:n työntekijöiden nimet. SELECT Sukunimi, Etunimi FROM Tyontekija WHERE OsastoID=1 ORDER BY Sukunimi, Etunimi; Merkkijonohakuja osittaisilla ehdoilla käyttämällä LIKE -operaattoria:
Esimerkki. Haetaan kaikki A:lla alkavat sukunimet. SELECT * FROM henkilo WHERE Sukunimi LIKE 'A%'; Liitoksen avulla yhdistetään kahden tai useamman taulun sarakkeita samaan
tulosjoukkoon.
Esimerkki. Haetaan molemmilla tavoilla kaikkien Työntekijöiden nimet ja osastot. SELECT Osasto.OsastoNImi, Tyontekija.Sukunimi, Tyontekija.Etunimi FROM Osasto, Tyontekija WHERE Osasto.OsastoID=Tyontekija.OsastoID; SELECT Osasto.OsastoNImi, Tyontekija.Sukunimi, Tyontekija.Etunimi FROM Osasto JOIN Tyontekija ON Osasto.OsastoID=Tyontekija.OsastoID; Selityksiä koodille:
|