Databaser

**Databaser** \ För den praktiska delen av kursen kommer främst MySQL Workbench användas, hittills har jag installerat det. \ **Lista av kommandon samt vad de gör:** **USE** = *Används för att markera ett visst objekt t.ex schemas eller tables.* **SELECT** = *Används för att få fram viss data ur ett en kolumn i ett table.* **FROM** =  *Markera vilket table som skall hämtas* **--** = *Använd för att kommentera bort kod i query* **WHERE**(=,LIKE) = Används för att peka på data i databasen som matchar något. **GROUP BY** = Grupperar ett visst resultat. Används ofta i kombination med as. **HAVING** **INSERT INTO** = Används när vi vill lägga till data i en databas. **VALUES()** = Insert into följs av values. Mellan paranteserna skriver vi in den indata vi vill applicera i databasen. **UPDATE** = Används för att uppdatera data i en databas. **SET (WHERE)** = Bestäm vad och var datan ska uppdateras. **DESCRIBE** = Används för att se en beskrivning av datan i tabellen. **ORDER BY** (Asc / Desc) = *Sortera något i en viss ordning.* **as** = Används för att ge namn till kolumner ( SELECT name **as** Namn FROM Employee ) **LIKE** = Används för att hitta en matchning som inte är exakt lika men i närheten. **JOIN** = Används för att kombinera flera tabeller vid ett urval. T.ex titeln på en film och kategorin. **INNER JOIN** = En inre join, t.ex två tabeller **OUTER JOIN** = En utomstående join. Joina två olika databasers information i en sökning. \ **Aggregat funktioner:** *Består av ett antal färdiga metoder som vi kan använda i SQL, används för statistik. T.ex försäljning.* **Count()** - *Antal* **Avg()** - *Medelvärde* **Min()** - *Minimum* **Max()** - *Maximum* **Sum()** - *Summa* \ \ \ \ \ **Faktaruta** \ När vi hanterar och samlar data finns något som kallas **DBMS** (***Database management system****)*. Dessa delas in i 2 kategorier, **Relationella** (***Relational***) och **Icke-Relationella** (***NoSQL***). \ **Relational:** *I relationella databaser sorterar vi data i tabeller som sedan länkas samman (får relationer) mot varandra. I varje tabell sparas data av en viss typ. Språket som används för att sortera/modifiera datan kallas **SQL** (**Structured Query Language**). En Query används för att modifiera data. Det finns flertalet **RDBMS** (**Relational Database Management Systems**) Några av de vanligaste är* \ * *MySQL* * *SQL Server* * *Oracle* \ *Varje RDBMS har sin egen kryddning eller "Flavour" men det mesta är gemensamt dem sinsemellan.* \ **NoSQL:** *I Icke-Relationella databaser har vi varken tabeller eller relationer, därav namnet. De skiljer sig väldigt mycket från de relationella databaserna då de inte alls förstår SQL språket.* \ I MySQL är en databas uppbyggd på följande vis. Varje databas existerar som "**Schemas"** till vänster i menyn. I varje *Schema* finns "**Tables**", "**Views**", "**Stored Procedures**" och "**Functions**".   **Tables** = *Här får vi en överblick av våra tabeller.* **Views** = *Virituella tabeller, här kan vi kombinera data från flera tabeller för att få en överblick.* **Stored Procedures** = *Färdiga metoder för att sortera objekt i tabellerna från givna kommandon* **Functions** = *Även detta en färdig metod.*   \ **Maven** \ Maven är ett verktyg i Java som skapats av Apache, det används för att Automatisera byggandet av programfiler till en distribuerbar enhet. Den använder sig av XML kod. * **P**roject  **O**bject  **M**odel Genereras när man skapar en databas. Den är dock tom i början. Den innehåller : \ **Referenser:**  (Grönt,namespace) *som Maven använder* **** (gult, under namespace) *Dylikt som paket mot Java Projektet.* **** (gult,under groupId) *vårt projektnamn* **** (gult, under artifactId) *vilken version vi använder. (OBS ENDAST STORA PROJEKT)* **SNAPSHOT** : *Används vid ofärdiga projekt* **RELEASE** : *Används när projektet är färdigt* **** *Beror på vilken version av java vi kö* **** *Kodord för att öppna ett dependency.* **Org.hibernate** : *samling av filer* \ **Xmlns** ( E**x**tensible **M**arkup **L**anguage **N**ame **S**pace) \ **JDBC** (*Java DataBase Connectivity) -* En samling filer som sköter om kommunikationen mellan vår applikation och databasen. Den är byggd så att den kan kommunicera med flera databaser samtidigt. Interface \ Det finns fyra olika kategorier av drivers till en JDBC \ ________________________________________________ \ **CRUD:** Create, read, Update, delete. \ ***Create -*** *Insert values and columns in table* ***Read -*** *Retrieve data from the table* ***Update*** *- Modifies data in the table* ***Delete*** *- Delete data from table* \ \ \ \   **Hibernate:** \ Hibernate är ett ***ORM ***verktyg (***Object-Relational Mapping***). Detta innebär att du kan kartlägga java klasser till databasens tabeller och konvertera java datatyperna till SQL datatyper. \ **JPA** (***Java Persistence API***) är en Java specifikation som tillhandahåller en viss funktionalitet och standard till ***ORM*** verktyget. **javax.persistence** paketet innehåller JPA klasserna och dess interface \ **@Kommandon:** \ @Entity = en typ av variabel, objekt osv. \ @OneToOne = en typ av relation. En person kan bara ha en address. Eller, en katt kan bara ha en ägare. \ @OneToMany = En ägare kan ha flera katter. \ @ManyToMany = Flera relationer som går flera vägar. T.ex en bilfirma som har flera kunder som hyr från ett stort sortiment bilar. \ \ \ ![](https://lh3.googleusercontent.com/RiYLDMOWMiHsN8cQyHLDIpKTRTsZF9Fcdladt_QZb1AWXEOMfzJRbvAOTeHEQ-yjuk77kX_QQ_TkHHLR48Fv7h-6ruBsxHcTGVM-fB7ws90hGZOS2NcoKQdYk21VSLFy9bJ9x0IiBhL8uIbpC37cajF3i_7uvFKfEoj4NM3c_xCivQV9IjCICqML) ![](https://lh4.googleusercontent.com/N41UMUr6u5YHyRr0ab-6HA6rYVzHNers3bNXkJSbnd5Jc8tkXGsput1xsJBTYYFWA3ydt2GnkLjgOEBgW3a9Di103TQgstKUF9yPBtaeeIBGwuWPGKyuhxYBFLs4XnnBcHNzvZG0RAdz7ZlHYttLbC_BpAeQqB3coWlxgA8RxLqWHWQvuqXQJwcM) ![](https://lh5.googleusercontent.com/Pi1Is7q2RIZzzEKZwXJPXyaTa5mrwsvTPI9IFvDwk2mDuVvBYcWZOtEdiQabLU4Uc83Ps9E8gunifotgotwYTbDf_-tN8fo0wfMTLo0CwKCp9gxeir2C-gLxIM1W0qj4ibGR8GJky7crQ5FtgIW3eXfj5Cf_bDapYFgxWWbbTw-pOoO3DlZwRev3) ![](https://lh6.googleusercontent.com/fDhqXLC1oWcV_waNwVS81RemOtiVc7z4HHtLfTRdu1dqJoxLY7LSQydjiR42J6RrGEtk1yzWx87moejvZv0-8fvlVxFye8q8NrrUo7Z_pX73IOddFMF3QihTiC2hO_5VGf1w1DfmGAiHFLGjGiVrHW1IQPyityqPuI3ozWmSBdPSmYAiG7w2pgdH)