3. Taulujen määrittely ja muuttaminen



Samankaltaiset tiedostot
3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

SQL - STRUCTURED QUERY LANGUAGE

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

CSE-A1200 Tietokannat

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki

HELIA 1 (12) Outi Virkki Tiedonhallinta

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

Jouni Huotari & Tapani Äijänen Kalvot perustuvat pääosin Ari Hovin SQL-oppaaseen (Docendo 2004)

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

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

SQL-KIELEN PERUSTEET

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

SQL-KIELEN PERUSTEET

Tietokantojen perusteet, s 1999 SQL- osa Harri Laine 1. SQL -ohjelmistojen markkinaosuuksia SQL. SQL - historiaa. SQL - standardointi

Lohdutus - tietokantadokumentti

SQL-KIELEN PERUSTEET

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

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

HAAGA-HELIA TIKO - Heti09 1 (22) ICT05 Tiedonhallinta ja Tietokannat E.Räty, O.Virkki, M.Laiho

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

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

4.3.1 SQL tietokanta SQL:n kirjoitusasu SQL määrittelykielenä... 36

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

Harjoitustehtävä 1. Harjoitustehtävän 1 ratkaisu. Harjoitustehtävä 1. Relaatioalgebra -liitokset (join) Liitos

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

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

HELIA 1 (11) Outi Virkki Tiedonhallinta

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

SQL-kielen perusteet. Tietokantojen perusteet

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

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

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

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

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

Tietokantakurssit / TKTL

SQL-KIELEN PERUSTEET JOUNI HUOTARI KALVOT PERUSTUVAT PÄÄOSIN ARI HOVIN SQL-OPPAASEEN (DOCENDO 2004) 1. VERSIO: TAPANI ÄIJÄNEN

2. Käsiteanalyysi ja relaatiomalli

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

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

OpenOffice.org Base 3.1.0

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

Tietokannat II -kurssin harjoitustyö

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

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

Relaatiomalli ja -tietokanta

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri

TIETOKANTOJEN PERUSTEET OSIO 8 MARKKU SUNI

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

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

5 SQL TIETOKANTAKIELI...33

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

Yleinen SQL. Yleinen SQL. SQL:n kehitys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

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

Tietokantojen suunnittelu, relaatiokantojen perusteita

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

HELIA 1 (15) Outi Virkki Tiedonhallinta

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

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

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

4.1 Yleistä SQL:stä 4.2 SQL-lauseet 4.3 DML: datan hallinta 4.4 DDL: rakenteen määrittäminen 4.5 DCL: valtuuttaminen 4.6 TxCL: tapahtumanhallinta

HAAGA-HELIA Heti-09 1 (17) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Suorituskyky

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC;

Toad Data Modeler Lari Hoppula Annika Koppelomäki Johanna Pietilä Esko-Pekka Tähti

Toteutusdokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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);

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

Firebird JAMK Labranet Wiki

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

KOOSTEFUNKTIOT. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

Ohjelmistojen mallintaminen, olioja relaatiomallinnuksen suhteesta

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

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

SELECT-lauseen perusmuoto

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet

HELIA TIKO-05 1 ( 12) ICT03D Tieto ja tiedon varastointi Martti Laiho

HELIA 1 (17) Outi Virkki Tiedonhallinta

Treenitietokannan suunnitteludokumentti

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

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

Näkymät ja tiedon suojaus

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto.

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki Relaatiomalli

Luento 2: Tiedostot ja tiedon varastointi

Suunnitteludokumentti

Transkriptio:

3. Taulujen määrittely ja muuttaminen DDL: Taulujen luonti, muutos ja poisto DML: taulujen tietojen ylläpito Tapahtumien (transaktioiden) hallinta Näkymät, synonyymit ja muut tietokantaobjektit

Taulujen perustaminen Taulun perustajalla täytyy olla valtuudet (GRANT) tietokantaan Kullekin taulun sarakkeelle annetaan nimi ja tietotyyppi (+ maksimipituus ja mahdolliset desimaalit) Tarvittaessa määritetään rajoitteita (NOT NULL, PRIMARY KEY, FOREIGN KEY, UNIQUE, DEFAULT ja CHECK) K2008 43

SQL-esimerkki: taulun luonti Taulu luodaan CREATE TABLE käskyllä: CREATE TABLE YRITYS ( YritysID YritysNimi Toimialakoodi YrLisaysPvm smallint NOT NULL, varchar(80), char(10), date DEFAULT Current_date, CONSTRAINT pk_yritysid PRIMARY KEY (YritysID)) Viite-eheys REFERENCES-määreellä, ks. Rajoitteet CONSTRAINT fk_toimialakoodi FOREIGN KEY (Toimialakoodi) REFERENCES TOIMIALA (Toimialakoodi) K2008 44

Muutamia SQL-92-standardin tietotyyppejä CHAR [(pit.), kiinteä, oletuspit. 1] VARCHAR [(pit.), vaihtuvanmitt. merkkijono] VARCHAR on sama kuin CHAR VARYING NUMERIC [(koko pituus [,desimaaliosa])] NUMERIC on sama kuin DECIMAL INTEGER [kokonaisluku, pit. tuotekoht.] Voidaan lyhentää INT DATE [vuosi (0001-9999), kk ja päivä] TIME [(pit.), tunti, minuutti ja sekuntti] BLOB [SQL-99, binary large object] K2008 45

Ocelot-tietokantatuote sis. SQL2:n ja osan SQL3:n tietotyypeistä K2008 46

SQL:2003 muutokset aikaisempaan standardiin Uudet tietotyypit: BIGINT (tarkkuus tuotekohtainen, kuitenkin aina BIGINT >= INTEGER >= SMALLINT) MULTISET (voidaan luoda ARRAY-tyyppinen kokoelma) Kaksi tietotyyppiä poistettu: BIT BIT VARYING Sequence CREATE TABLE LIKE Ym. K2008 47

Oraclen tietotyyppejä CHAR [255 tavua, kiinteäpituuksinen] VARCHAR2 [2 kt (4 kt Oracle 8:ssa)] NUMBER [numeerinen 1x10-130 9,99x10 125 ] LONG [2 Gt] RAW [255 tavua, binaarinen] LONG RAW [2 Gt, binaarinen] DATE [pvm ja aika, kiinteäpituuksinen] ROWID [rivin ID:n muuttujatyyppi] NCHAR ja NVARCHAR2: kansallisen kielen tietotyyppi CLOB: yksitavuinen, NCLOB: yksi- tai monitavuinen, 4 Gt BFILE: osoitin tallennettuun ulkoiseen bin.tiedostoon Oraclen oma (esim. SDO_GEOMETRY for Oracle Spatial) K2008 48

SQL Serverin (Transact-SQL) tietotyyppejä char [ ( n ) ] vakiomittainen merkkitieto, n = 1 255 varchar [ ( n ) ] vaihtuvamittainen merkkitieto, n = 1 255 binary [ ( n ) ], varbinary [ ( n ) ] datetime, smalldatetime pvm-typit text, image suuret tietomäärät (maks 2 Gtavua) bit timestamp muuttuu riviä päivitettäessa Kokonaisluvut: int (32 bitin) smallint (16 bittiä) tiny (0 255) Desimaaliluvut: decimal [ ( p, [, s ] ) ] tai numeric [ ( p, [, s ] ) ] p = tarkkuus ( 1 38), s = skaala, desimaaliosien määrä float [ ( n ) ] liukuluku, tarkkuus 15 numeroa real liukuluku, tarkkuus 7 numeroa Raha: money, smallmoney Tuotekohtaisista eroista: http://troels.arvin.dk/db/rdbms/#data_types K2008 49

SQL-esimerkki: taulun muutos Taulu muutetaan ALTER TABLE käskyllä, esim. sarakkeen lisäys (loppuun) ALTER TABLE yritys ADD COLUMN maa char (20) ALTER TABLE tuli osaksi SQL-standardia vasta SQL3:ssa Katso tuotekohtaisesti, voidaanko lisätä kerralla useita sarakkeita tai sarake johonkin väliin Sarakkeen muutos: ALTER COLUMN ja poisto: DROP COLUMN, ks. oma tuotteesi, esim. ALTER TABLE yritys DROP COLUMN maa CASCADE K2008 50

Eheysvaatimukset Tietokantaan kohdistuu kolmen tyyppisiä eheysvaatimuksia: Avaineheys: taululla tulee olla perus- eli pääavain (PK) Viite-eheys: viiteavaimelle tulee löytyä arvo viitattavan taulun pääavaimesta Attribuuttieheys: attribuuttien tulee kuulua sallittuun joukkoon Määritetään nk. rajoitteella (ks. seur. kalvo) Palvelin tarkistaa eheysvaatimusten toteutumisen K2008 51

Rajoitteet eli pakotteet (constraints) Määritellään CREATE TABLE tai ALTER TABLE -komennoissa Rajoitteita voidaan määritellä sarakkeille tai tauluille Rajoitteita ovat: avaimet: PRIMARY KEY, FOREIGN KEY ja UNIQUE oletusarvot ja raja-arvotarkistukset: DEFAULT ja CHECK esimerkkejä: ALTER TABLE dept ADD CONSTRAINT pk_deptno PRIMARY KEY (deptno), ADD priority SMALLINT DEFAULT 1, ADD CONSTRAINT chk_sukup CHECK (sukupuoli IN ( M, N )) K2008 52

Primary Key, Unique ja Foreign key Primary Key (CONSTRAINT pk_sarake PRIMARY KEY (sarakenimi1 [,sarakenimi2]) Yksiköi taulun rivit Sarakkeiden tulee olla Not Null -tyyppisiä Käytetään hyväksi viite-eheyttä luotaessa Unique (CONSTRAINT sarakenimi UNIQUE) Luo yksilöivän indeksin (oletus on ei klusteroitu) Sarakkeet voivat sisältää Null-arvoja Voi olla useita / taulu Foreign Key (CONSTRAINT fk_sarake FOREIGN KEY (sarakenimi) REFERENCES vanhempi (perusvain) ) Luo viite-eheyden taulujen välille Voi sisältää useita sarakkeita K2008 53

Viiteavaimen lisäys ja poistojen/päivitysten vyörytys Viite-eheys voidaan määritellä taulua luotaessa tai jälkeenpäin ALTER TABLE -käskyllä Esim. Puhelin-taulu, jonka vanhempi on Henkilo; jos henkilö poistetaan niin myös henkilön puhelimet poistetaan (ON DELETE CASCADE) ALTER TABLE Puhelin ADD CONSTRAINT fk_henkiloid FOREIGN KEY (HenkiloID) REFERENCES Henkilo (HenkiloID) ON DELETE CASCADE Viisi vaihtoehtoa: CASCADE, SET DEFAULT, SET NULL, NO ACTION, RESTRICT, joista kaksi viimeistä estävät poiston, jos vanhemmalla on lapsia Myös päivitykset voidaan vyöryttää: ON UPDATE CASCADE K2008 54

Laskuri: automaattisesti kasvava sarake Taululle voidaan määritellä sarake, joka on automaattisesti kasvava numero Määrittelyssä annetaan alkuarvo ja lisäys Standardin mukaan laskuri luodaan joko IDENTITY-määreellä tai SEQUENCE-käskyllä (MySQL:ssä AUTO_INCREMENT-määreellä) Ominaisuus voidaan luoda myös CREATE TABLE, ALTER TABLE tai SELECT INTO komennon yhteydessä Laskuri toimii usein perusavaimena K2008 55

Laskurin luonti, 2 vaihtoehtoa Esimerkki 1: CREATE TABLE tuote ( tuoteid INTEGER GENERATED ALWAYS AS IDENTITY -- ja lisäksi esim. START WITH 100 INCREMENT 1 MINVALUE 100 NO MAXVALUE NO CYCLE,... ) Esimerkki 2: CREATE SEQUENCE tuoteid AS INTEGER START WITH 1 INCREMENT BY 1 MAXVALUE 100000 MINVALUE 1 K2008 56

SQL:2003 - GENERATED ALWAYS Esimerkki: CREATE TABLE employees ( EMP_ID INTEGER, SALARY DECIMAL(7,2), BONUS DECIMAL(7,2), TOTAL_COMP GENERATED ALWAYS AS ( SALARY + BONUS ), HR_CLERK GENERATED ALWAYS AS ( CURRENT_USER ) ) K2008 57

Taulun poisto Taulun poisto tapahtuu DROP TABLE -käskyllä, esim. DROP TABLE temp; Tällöin vyörytetään poistot, jos CASCADE DELETE on lapsitauluun määritetty, muutoin poisto estetään (jos viite-eheys on asetettu) Samalla poistuu taulussa olevat tiedot (olihan siis backup tallessa tai ROLLBACK-käsky hanskassa?) K2008 58