Johdanto PHP PostgreSQL. PHP & PostgreSQL. Paul Tötterman 5. helmikuuta PHP & PostgreSQL.

Samankaltaiset tiedostot
TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

MySQL ja PostgreSQL Seminaarityö

SQL - STRUCTURED QUERY LANGUAGE

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

HELIA 1 (14) Outi Virkki Tiedonhallinta

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Maiju Mykkänen Susanna Sällinen

OSA I Aloitetaan. Oppitunti. 1. PHP: Kotisivusta portaaliin 2. PHP:n asentaminen 3. Ensimmäinen skriptisi. 17 Johdanto

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

CSE-A1200 Tietokannat

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

HELIA 1 (11) Outi Virkki Tiedonhallinta

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Kymenlaakson Ammattikorkeakoulu

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Firebird JAMK Labranet Wiki

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

3. Taulujen määrittely ja muuttaminen

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

SQL Buddy JAMK Labranet Wiki

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! ! Henri Nurmi! !

TIETOKANNAT JOHDANTO

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

LINUX-HARJOITUS, MYSQL

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

Ylläpitodokumentti. PLAYOFF Jari Anttila Sanna Fröblom Aarno Sandvik Tommi Paavilainen Miikka Kohijoki. Päivi Pääkkö, ohjaaja

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

2 3 LIITE 2. Index.php 1 (10) 4 5 <?php 6 7 /*! \mainpage Artikkelihallintaohjelma 8 * 9 * \section intro_sec Introduction 10 * 11 * Tämän on

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

T Testiraportti TR-3. ETL-työkalu

Tietokannat II -kurssin harjoitustyö

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Makrojen mystinen maailma lyhyt oppimäärä

Tietotekniikan laitos Käki-projekti TIETOKANTASUUNNITELMA. 1. Johdanto

Avointen ohjelmistojen käyttö ohjelmistokehityksessä

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Tietokantasovelluksen määrittelydokumentti

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

HELIA 1 (14) Outi Virkki Tiedonhallinta

Lohtu-projekti. Ylläpitäjän dokumentti. Versiohistoria: Ensimmäinen versio Andreas Asuja

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

HELIA 1 (14) Outi Virkki Tiedonhallinta

ICT1TN004. Lomakkeet. Heikki Hietala

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Tietokannan webbikytkentä. Janne Petäjä

Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Kuntokirjuri. Ohjelmistokuvaus. Miika Alonen. Jarkko Laine. Jesse Honkanen. Veli Matti Huovinen. Jani Jäntti. Versio

Tietokannat II -kurssin harjoitustyö

INSERT INTO koulutus VALUES ( Helsinki, 22.6, 4);

Tutkimusdatan keräys ja hallinta. Teemu Kuulasmaa Bioinformaatikko Itä-Suomen yliopisto Sisätaudit

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

Kanta PHR:n CapabilityStatement ja REST-API. Eeva Turkka

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

Tietohakemisto ja Transaktionkäsittely

OSI ja Protokollapino

SELVITYSRAPORTTI LABRA-VERKON MYSQL:n JA PHP:n KÄYTTÖÖNOTOSTA. Jarkko Kähkönen

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

DXL Library ja DXL-kielen olemus. Pekka Mäkinen SoftQA Oy http/

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

Action Request System

Ohjelmoin*kielet ja - paradigmat 5op. Markus Norrena

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Transkriptio:

Paul Tötterman paul.totterman@iki.fi 5. helmikuuta 2008

LAMP SQL

LAMP LAMP L = Linux tai *BSD, Solaris... A = Apache M = MySQL tai... P =, Perl, Python, Ruby... Flickr, Yahoo, Facebook...

: Hypertext Preprocessor Yleiskäyttöinen skriptikieli Avointa lähdekoodia (Open Source)

Sisältö Alkuperäinen kehittäjä Rasmus Lerdorf 1994: Personal Home Page Tools - v1.0 1995: Personal Home Page Tools / Form Interpreter - /FI tai v2.0 Israelilaiset Zeev Suraski and Andi Gutmans jatkoivat 1997: /FI 2 (nimi vaihtui - : Hypertext Preprocessor ) 1998: 3 - Ensimmäinen moderni 2000: 4 (Zend Engine 1.0) 2004: 5 (Zend Engine II) Tuorein versio 5.2.5 (marraskuu 2007)

Sisältö Esikäsittelijä - Preprocessor -lähdekoodi kirjoitetaan HTML:n sekaan.php-tiedoston sisältö: <p>hello <?php echo World!?></p> Selaimelle lähtevä data: <p>h e l l o World!</p> mod php

Sisältö Päiväys ja aika <?php echo d a t e ( r );? > Mon, 28 Jan 2008 14:36:50 +0200 Käyttäjän tietoja <?php echo $ SERVER [ HTTP USER AGENT ]. <br/>. $ SERVER [ REMOTE ADDR ]?> Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.8.1.9) Gecko/20071025 Camino/1.5.3 (MultiLang) 130.233.47.34

Lomake Sisältö <form method= post action= poorhandler. php > <p>nimi : <input name= name type= text s i z e= 40 /> <p>osasto : <s e l e c t name= dep > <o p t i o n v a l u e= t i e t o t e k n i i k k a >T i e t o t e k n i i k k a</ o p t i o n> <o p t i o n v a l u e= kemia >Kemia</ o p t i o n> <o p t i o n v a l u e= puu >Puu</ o p t i o n> <o p t i o n v a l u e= muu >Muu</ o p t i o n> </ s e l e c t> <input type= submit value= OK /> </p> </ form> Nimi: Osasto: Tietotekniikka OK

Lomakkeen käsittely Sisältö <?php $dep = $ POST [ dep ] ; $name = $ POST [ name ] ; echo Nimi :. $name. <br/>. Osasto :. $dep ;?> Nimi: Paul Tötterman Osasto: Tietotekniikka

Parempi lomakke Sisältö <form method= p o s t a c t i o n= b e t t e r h a n d l e r. php > <p>nimi : <input name= name type= text s i z e= 40 /> <p>osasto : <s e l e c t name= dep > <o p t i o n v a l u e= t >T i e t o t e k n i i k k a</ o p t i o n> <o p t i o n v a l u e= k >Kemia</ o p t i o n> <o p t i o n v a l u e= p >Puu</ o p t i o n> <o p t i o n v a l u e= m >Muu</ o p t i o n> </ s e l e c t> <input type= submit value= OK /> </p> </ form> Nimi: Osasto: Tietotekniikka OK

Parempi lomakkeen käsittely <?php $name = ( i s s e t ( $ POST [ name ] ) && ( t r i m ( $ POST [ name ]!= ) ) )? h t m l e n t i t i e s ( $ POST [ name ] ) : TUNTEMATON ; $dep = ( i s s e t ( $ POST [ dep ] ) && ( t r i m ( $ POST [ dep ]!= ) ) )? $ POST [ dep ] : m ; $deps = a r r a y ( t => T i e t o t e k n i i k k a, k => Kemia, p => Puu, m => Muu ) ; i f (! i s s e t ( $deps [ $dep ] ) ) { $dep = m ; } echo Nimi :. $name. <br/>. Osasto :. $deps [ $dep ] ;?>

Form method: POST vai GET <form method= p o s t a c t i o n= h a n d l e r. php > <form method= g e t a c t i o n= h a n d l e r. php > http://host/handler.php $ POST [ f o o ] http://host/handler.php?foo=bar&bah=baz $ GET [ f o o ] Pidemmälle datalle, lomakkeille, muutoksille Käyttäjä ei näe esim. hidden-fieldejä Lyhyemmälle datalle, kirjanmerkit, ei muutoksia Helpompi debugata

Sessiot Sisältö Jokainen sivulataus erillinen, sessio säilöö datan latausten välillä // J o k a i s e n s i v u n a l u s s a o l t a v a s e s s i o n s t a r t ( ) ; // M u u t t u j i e n varaaminen s e s s i o n r e g i s t e r ( name ) ; // M u u t t u j i e n t e s t a a m i n e n s e s s i o n i s r e g i s t e r e d ( name ) ; // M u u t t u j i e n a s e t t a m i n e n $ SESSION [ name ] = Teemu T e e k k a r i ; // M u u t t u j i e n p o i s t a m i n e n s e s s i o n u n r e g i s t e r ( name ) ; // S e s s i o n tuhoaminen s e s s i o n d e s t r o y ( ) ; Sessiot ovat rajoitettuja kooltaan ja heikkoja turvaltaan

Funktiot ja moduulit Sisältö Koodia kannattaa pilkkoa Usein kutsuttu koodi funktioihin Funktiot moduuleihin/kirjastoihin/includeihin MVC - Model, View, Controller Model - tietomalli Controller - logiikka View - näkymä, vain vähän :tä HTML:n sekaan

Model-View esimerkki Sisältö model.inc: <?php f u n c t i o n g e t c o u r s e s ( $dep ) { $data = a r r a y ( t => a r r a y ( T 111.4360, T 76.1143 ), s => a r r a y ( S 88.1110, S 87.3190 ) ) ; r e t u r n $data [ $dep ] ; }?> view.php: <?php r e q u i r e o n c e ( model. i n c ) ; $ c o u r s e s = g e t c o u r s e s ( t ) ;?> <ul> <?php f o r e a c h ( $ c o u r s e s as $ c o u r s e ) {?> <l i ><?php echo $course?></ l i > <?php }?> </ul>

PEAR Sisältö Extension and Application Repository Valmista koodia jaettuna luokkiin: Tietokantarajapinta Sähköposti Krypto jne. Koodausstandardi ja pakettien jakelujärjestelmä Ei kannata keksiä pyörää uudelleen Frameworkit Symfony, Cake...

Hyödyt ja haitat Sisältö Laajalti tuettu Helppo oppia Paljon dokumentaatiota Tutorial http://php.net/trim Paljon valmista koodia Paljon työvoimaa Monesti vain 4.x Vaikea hallita Työvoiman, dokumentaation ja koodin laatu Tietoturvahistoria Unicode-tuki

SQL Structured Query Language IBM:n 1970-luvulla kehittämä relaatiotietokantojen deklaratiivinen kyselykieli ANSI ja ISO -standardi Valmistajilla kuitenkin omat laajennuksensa Käytetyin tietokantastandardi T-76.1143 Tiedonhallintajärjestelmät

SQL Ingres - UC Berkeley 1970 ja -80 -luvuilla Post-Ingres 1985 POSTGRES 1988-93 Postgres95: Andrew Yu ja Jolly Chen lisäsivät SQL -tulkin 1997-8.3 julkaistu 4. helmikuuta 2008

SQL Hyvin standardinmukainen Open Sourcea, BSD Laadukas dokumentaatio ACID - Atomicity, Consistency, Isolation, Durability MVCC - Multi-Version Concurrency Control Funktiot (useilla kielillä), monipuoliset indeksit, triggerit, tietotyypit, periyttäminen... pgadmin

SQL Taulujen luonti CREATE TABLE o r g a n i z e r s ( i d SERIAL PRIMARY KEY, name TEXT NOT NULL, phone TEXT NOT NULL ) ; CREATE TABLE c o u r s e s ( i d SERIAL PRIMARY KEY, code TEXT NOT NULL UNIQUE, name TEXT NOT NULL, c r e d i t s INTEGER NOT NULL CHECK ( c r e d i t s > 0 ), o r g a n i z e r INTEGER REFERENCES o r g a n i z e r s ( i d ) ) ;

SQL Tiedon lisäys INSERT INTO o r g a n i z e r s ( name, phone ) VALUES ( Pia Ojanen, 555 123456 ) ; INSERT INTO o r g a n i z e r s ( name, phone ) VALUES ( P e t r i Vuorimaa, 555 654321 ) ; INSERT INTO o r g a n i z e r s ( name, phone ) VALUES ( Timo K i r a v u o, 555 123123 ) ; INSERT INTO c o u r s e s ( code, name, c r e d i t s, o r g a n i z e r ) VALUES ( T 111.4360, WWW p a l v e l u n s u u n n i t t e l u, 4, 1 ) ; INSERT INTO c o u r s e s ( code, name, c r e d i t s, o r g a n i z e r ) VALUES ( T 111.2350, M u l t i m e d i a t e k n i i k k a, 4, 2 ) ; INSERT INTO c o u r s e s ( code, name, c r e d i t s, o r g a n i z e r ) VALUES ( T 110.4200, T i e t o t u r v a l l i s u u s t e k n i i k k a, 3, 3 ) ; INSERT INTO c o u r s e s ( code, name, c r e d i t s, o r g a n i z e r ) VALUES ( T 110.5100, Johdatus t i e t o l i i k e n t e e s e e n, 5, 3 ) ;

SQL Haku - SELECT SELECT FROM o r g a n i z e r s ORDER BY i d ; id name phone 1 Pia Ojanen 555-123456 2 Petri Vuorimaa 555-654321 3 Timo Kiravuo 555-123123 SELECT FROM courses ORDER BY id ; id code name credits organizer 1 T-111.4360 WWW-palvelun suunnittelu 4 1 2 T-111.2350 Multimediatekniikka 4 2 3 T-110.4200 Tietoturvallisuustekniikka 3 3 4 T-110.5100 Johdatus tietoliikenteeseen 5 3

SQL Liittäminen - JOIN SELECT c. code, c. name, o. name, o. phone FROM c o u r s e s AS c, o r g a n i z e r s AS o WHERE c. o r g a n i z e r=o. i d ORDER BY c. code ; c.code c.name o.name o.phone T-110.4200 Tietoturvallisuustekniikka Timo Kiravuo 555-123123 T-110.5100 Johdatus tietoliikenteeseen Timo Kiravuo 555-123123 T-111.2350 Multimediatekniikka Petri Vuorimaa 555-654321 T-111.4360 WWW-palvelun suunnittelu Pia Ojanen 555-123456 SELECT code, phone FROM c o u r s e s JOIN o r g a n i z e r s ON c o u r s e s. o r g a n i z e r=o r g a n i z e r s. i d ORDER BY code ; code phone T-110.4200 555-123123 T-110.5100 555-123123 T-111.2350 555-654321 T-111.4360 555-123456

SQL Lisää kyselyjä SELECT SUM( c r e d i t s ) FROM c o u r s e s WHERE o r g a n i z e r IN (SELECT i d FROM o r g a n i z e r s WHERE name ILIKE %timo% ) ; 8 UPDATE o r g a n i z e r s SET phone= 555 555555 WHERE i d =2; DELETE FROM c o u r s e s WHERE o r g a n i z e r =3 LIMIT 1 ;

SQL pg * -funktiot Vaikea vaihtaa tietokantaa Vanha API MDB2 Tietokantariippumaton Oliopohjainen API

SQL Hakuesimerkki <?php r e q u i r e o n c e MDB2. php ; $mdb2 =& MDB2 : : c o n n e c t ( p g s q l : / / u s e r : passwd@dbhost /dbname ) ; i f (PEAR : : i s E r r o r ( $mdb2 ) ) { d i e ( $mdb2 >getmessage ( ) ) ; } $res =& $mdb2 >query ( SELECT code, name FROM courses ; ) ; i f (PEAR : : i s E r r o r ( $ r e s ) ) { d i e ( $ r e s >getmessage ( ) ) ; }?> <ul> <?php while ( $row = $res >fetchrow (MDB2 FETCHMODE ASSOC) ) {?> <l i ><a h r e f= /<?php echo $row [ code ]?>/ ><?php echo $row [ name ]?></a></l i > <?php }?> </ul> <?php $mdb2 >disconnect ( ) ;?>

SQL Muokkausesimerkki <form method= post action= dbhandler. php > <p>nimi : <input name= name type= text /></p> <p>puhelinnumero : <input name= phone type= text /></p> <p><input type= submit value= OK /></p> </ form> <?php r e q u i r e o n c e c o n n e c t. i n c ; i f (! ( ( i s s e t ( $ POST [ name ] ) && ( t r i m ( $ POST [ name ] )!= ) ) && ( i s s e t ( $ POST [ phone ] ) && ( t r i m ( $ POST [ phone ] )!= ) ) ) ) { d i e ( I n v a l i d i n p u t ) ; } $ s t h = $mdb2 >p r e p a r e ( INSERT INTO o r g a n i z e r s ( name, phone ) VALUES ( : name, : phone ), a r r a y ( t e x t, t e x t ), MDB2 PREPARE MANIP ) ; $sth >e x e c u t e ( a r r a y ( name => $ POST [ name ], phone => $ POST [ phone ] ) ) ; $mdb2 >disconnect ( ) ;?>

SQL Miksei näin? Why not like this? $mdb2 >e x e c ( INSERT INTO o r g a n i z e r s ( name, phone ) VALUES (. $ POST [ name ].,. $ POST [ phone ]. ) ; ; Mitä jos käyttäjältä tuleva data on:, ); DELETE FROM organizers; -- SQL-kysely kokonaisuudessaan: INSERT INTO o r g a n i z e r s ( name, phone ) VALUES (, ) ; DELETE FROM o r g a n i z e r s ;, ) ;