Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

2009NOEA/IT - Databaser/SQL1 Realisering af den relationelle model i SQL-baserede DBMS’er SQL er mere end forespørgsler - det omfatter bl.a. –DDL Data.

Lignende præsentationer


Præsentationer af emnet: "2009NOEA/IT - Databaser/SQL1 Realisering af den relationelle model i SQL-baserede DBMS’er SQL er mere end forespørgsler - det omfatter bl.a. –DDL Data."— Præsentationens transcript:

1 2009NOEA/IT - Databaser/SQL1 Realisering af den relationelle model i SQL-baserede DBMS’er SQL er mere end forespørgsler - det omfatter bl.a. –DDL Data Definition Language –DML Data Manipulation Language

2 2009NOEA/IT - Databaser/SQL2 SQL-versioner SQL er implementeret af mange forskellige DBMS- leverandører. SQL er for langt den største dels vedkommende ens fra DBMS til DBMS - tæt på en standard. Standarder: SQL86 (SQL1), SQL89 (SQL1½), SQL92 (SQL2), SQL3 (SQL:99) SQL2 er den mest udbredte standard i dag Mange leverandører har deres egne udvidelser til standarden

3 2009NOEA/IT - Databaser/SQL3 SQL2 - DDL Understøttelse af domænebegrebet: –Simple typer, INT, CHAR, strenge etc. –Dato og tid –programmørdefinerede typer: CREATE DOMAIN cprType AS CHAR(10); CREATE DOMAIN postnrType AS CHAR(4); Typer sætter compileren i stand til at finde logiske fejl

4 2009NOEA/IT - Databaser/SQL4 SQL2 - DDL CREATE TABLE Kunde ( cprnrcprTypeNOT NULL, …. PostnrpostnrType, …, CONSTRAINT KundePK PRIMARY KEY(cprnr), CONSTRAINT PNrByFK FOREIGN KEY(postnr) REFERENCES pNrBy(pnr) ON UPDATE CASCADE ON DELETE SET NULL); CREATE TABLE pNrBy ( pnrpostnrTypeNOT NULL, ByVARCHAR(30)NOT NULL, CONSTRAINT pNrByPK PRIMARY KEY(pnr));

5 2009NOEA/IT - Databaser/SQL5 Problemspecifik integritet CREATE ASSERTION saldoConstraint CHECK (NOT EXISTS (SELECT * FROM Konto WHERE saldo<0); Operationer, som bryder denne regel afvises af DBMS’et Nogle DBMS’er arbejder endvidere med TRIGGER-procedurer, som kaldes, hvis et constraint overtrædes

6 2009NOEA/IT - Databaser/SQL6 SQL2 - DML Forespørgsler: SELECT FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] [...]:WHERE, GROUP BY, HAVING og ORDER BY kan undlades.

7 2009NOEA/IT - Databaser/SQL7 Company-databasen - anvendes i følgende eksempler

8 2009NOEA/IT - Databaser/SQL8 SQL2 - DML (Q0): Række- og søjleudvælgelse: SELECTBDATE, ADDRESS FROMEMPLOYEE WHEREFNAME = ’John’ AND MINIT = ’B’ AND LNAME = ’Smith’ Ønskes alle attributter, så anvendes: SELECT * ----

9 2009NOEA/IT - Databaser/SQL9 SQL2 - DML (Q1): JOIN: SELECTFNAME, LNAME, ADDRESS FROMEMPLOYEE, DEPARTMENT WHEREDNAME = ’Research’ AND DNUMBER = DNO Sidste del af WHERE-betingelsen er join-betingelsen.

10 2009NOEA/IT - Databaser/SQL10 SQL2 - DML (Q2): JOIN over flere tabeller: SELECTPNUMBER, DNUM, LNAME, ADDRESS FROMPROJECT, DEPARTMENT, EMPLOYEE WHEREPLOCATION = ’Stafford’ AND DNUM = DNUMBER AND MGRSSN = SSN Bemærk, der skal være to join-betingelser.

11 2009NOEA/IT - Databaser/SQL11 SQL2 - DML Tvetydige attributnavne Det samme attibut-navn kan bruges så længe, de er defineret i forskellige tabeller En søgning der involverer flere attributter med samme navn skal gennem prefix definere relationenen – eks: EMPLOYEE.LNAME, DEPARTMENT.DNAME

12 2009NOEA/IT - Databaser/SQL12 SQL2 - DML (Q8): Aliaser: I visse tilfælde kan det være nødvendigt at referere til den samme relation flere gange SELECTE.FNAMA, E.LNAME, S.FNAME, S.LNAME FROMEMPLOYEE E, EMPLOYEE S WHEREE.SUPERSNN = S.SSN EMPLOYEE joines med sig selv vha. aliaserne E og S (også kaldet tupel-variable.

13 2009NOEA/IT - Databaser/SQL13 SQL2 - DML Brug DISTINCT for at eliminere gengangere i søgninger (Q11):SELECTSALARY FROMEMPLOYEE (Q11A):SELECT DISTINCTSALARY FROMEMPLOYEE

14 2009NOEA/IT - Databaser/SQL14 SQL2 - DML (Q4): Mængdeoperationer: Find alle projektnumre der involverer medarbejdere med efternavnet “Smith” som medarbejder eller som en afdelingsleder der administeret projektet: (SELECTPNUMBER FROMPROJECT, DEPARTMENT, EMPLOYEE WHERELNAME = ’Smith’ AND DNUM = DNUMBER AND MGRSSN = SSN ) UNION (SELECTPNUMBER FROMPROJECT, WORKS_ON, EMPLOYEE WHERELNAME = ’Smith’ AND PNO = PNUMBER AND ESSN = SSN)

15 2009NOEA/IT - Databaser/SQL15 SQL2 - DML Opdateringer: –indsætte rækker: INSERT –slette rækker: DELETE –ændre værdier i rækker: UPDATE Arbejder som SELECT på hele tabeller.

16 2009NOEA/IT - Databaser/SQL16 SQL2 - DML Indsættelse af enkelte rækker: INSERT INTOEMPLOYEE VALUES(’Richard’,’K’,’Marini’,’653298653’, ’30-DEC-52’,’98 Oak Forest, Katy, ’TX’,’M’,37000,’987654321’,4) Indsættelse af række, kun specifikke attributter: INSERT INTOEMPLOYEE(FNAME,LNAME,SSN) VALUES(’Richard’,’Marini’,’653298653’) Afvises, hvis nogle af de øvrige attributter er defineret NOT NULL

17 2009NOEA/IT - Databaser/SQL17 SQL2 - DML Sletning af rækker: DELETE FROMEMPLOYEE WHERELNAME =’Brown’ DELETE FROMEMPLOYEE WHEREDNO IN(SELECTDNUMBER FROMDEPARTMENT WHEREDNAME = ’Research’) DELETE FROMEMPLOYEE (Ikke det samme som: ´DROP TABLE EMPLOYEE’. Hvorfor ikke?)

18 2009NOEA/IT - Databaser/SQL18 SQL2 - DML Opdatering af rækker: UPDATEPROJECT SETPLOCATION = ’Bellaire’, DNUM = 5 WHEREPNUMBER = 10 UPDATEEMPLOYEE SETSALARY = SALARY*1.1 WHEREDNO IN(SELECTDNUMBER FROMDEPARTMENT WHEREDNAME = ’Research’)

19 2009NOEA/IT - Databaser/SQL19 Og SQL kan meget mere

20 2009NOEA/IT - Databaser/SQL20 Embedded SQL Tillader et program (en applikation) i fx C# at hente data fra en SQL-database SQL arbejder med hele tabeller – udbredte programmeringssprog med enkelte objekter (svarende til en række)

21 2009NOEA/IT - Databaser/SQL21 Embedded SQL I.NET Connection: –Open Connection –Udfør db-operationer –Luk Connection –Data bearbejdes

22 2009NOEA/IT - Databaser/SQL22 Overblik: connected databaseadgang Tre skridt: 1.åbn connection til databasen 2.eksekver SQL for at opdatere/læse DB 3.luk connection

23 2009NOEA/IT - Databaser/SQL23 using System.Data; using System.Data.SqlClient; using System.Data.Common; //--- static void Main(string[] args) { // Create and open a connection. SqlConnection cn = new SqlConnection(); cn.ConnectionString = @"Server=PCM06073\SQLEXPRESS;” +”Initial Catalog=vwEng;” +”Integrated Security=True;"; cn.Open(); //--- Forbindelse til DBMS og database Hvor er databasen? Vi skal bruge nogle biblioteksklasser

24 2009NOEA/IT - Databaser/SQL24 // Create a SQL command object. string strSQL = "SELECT * FROM Bil"; SqlCommand myCommand = new SqlCommand(strSQL, cn); // Obtain a data reader ala ExecuteReader(). SqlDataReader myDataReader; myDataReader = myCommand.ExecuteReader(); Indkapsler SQL- sætninger og sender dem til DBMS Resultattabel fra SQL returneres i et DataReader-objekt, som er en Collection der kan behandles i programmet

25 2009NOEA/IT - Databaser/SQL25 // Loop over the results. while (myDataReader.Read())//while(more rows) { //Display each attribute in current row for (int i = 0; i < myDataReader.FieldCount; i++) { Console.Write("{0} = {1} ", myDataReader.GetName(i), myDataReader.GetValue(i).ToString().Trim()); } Console.WriteLine(); Console.ReadLine(); }

26 2009NOEA/IT - Databaser/SQL26 Output

27 2009NOEA/IT - Databaser/SQL27 Hvad sker der? Tre objekter: –Connection –Command –DataReader Forbindelse til DBMS og database Indkapsler SQL- sætninger og sender dem til DBMS Resultattabel fra SQL returneres i et DataReader- objekt, som er Collection der kan behandles i programmet


Download ppt "2009NOEA/IT - Databaser/SQL1 Realisering af den relationelle model i SQL-baserede DBMS’er SQL er mere end forespørgsler - det omfatter bl.a. –DDL Data."

Lignende præsentationer


Annoncer fra Google