Posts

Posts uit maart, 2016 tonen

MS Sql 70-461: Chapter 10

Les 1 INSERT VALUES Met het volgende stament kan een rij worden aangemaakt in de MyOrders tabel INSERT INTO Sales.MyOrders(custid, empid, orderdate, shipcountry, freight) VALUES(2, 19, '20120620', N'USA', 30.00); Het opgeven van de kolomnamen na de tabel is optioneel, maar wel een best practice. De naam van het identity veld (id) is niet opgegeven omdat deze automatisch wordt gevuld door Sql. Als toch een id moet worden opgegeven, dan moet gebruik gemaakt worden van de IDENTITY_INSERT optie: SET IDENTITY_INSERT ON; Na de INSERT moet de identity weer worden uitgezet: SET IDENTITY_INSERT OFF; Om deze optie te gebruiken moet de gebruiker eigenaar van de tabel zijn of ALTER permissies hebben op de tabel. Als bij het toevoegen van een rij geen waarde wordt opgegeven voor een kolom, dan wordt gebruik gemaakt van de DEFAULT constraint, indien aanwezig. Een andere manier is door gebruik te maken van de DEFAULT keyword: INSERT INTO Sales

MS Sql 70-461: Chapter 9

Les 1 Met views en  inline functions kan content worden gepresenteerd van één of meerdere base tables en kan hiervan de onderliggende complexe logica (zoals bijv joins) worden verborgen.  In Sql Server kunnen views gebruikt worden om queries op te slaan en zodoende te herbruiken. Views gedragen zich bijna hetzelfde als tabellen. Het is ook mogelijk om insert, update en delete statements te gebruiken, maar wel met restricties. Elke view is gedefinieerd door een SELECT statement, welke weer kan refereren naar meerdere base tables en andere views. Views Onderstaand een voorbeeld hoe een view gemaakt kan worden: CREATE VIEW Sales.OrderTotalsByYear  WITH SCHEMABINDING AS SELECT  YEAR(o.orderdate) AS orderyear,  SUM(od.qty) AS qty FROM Sales.Orders AS o  JOIN Sales.OrderDetails AS od  ON od.orderid = o.orderid GROUP BY YEAR(orderdate); GO Opmerking over views: - Het is een best practice om de naam van het schema te noemen; - SCHEMABINDING garand

MS Sql 70-461: Chapter 8

Les 1 In system tables slaat Sql Server zijn systeem data op.  Tabellen die data bevatten worden vaak ook wel base tables genoemd. Dit om onderscheid aan te brengen met andere objecten of expressies die afgeleiden zijn van een tabel, zoals views of queries. Variaties van tabellen zijn: - Temporary tables: base tables die enkel bestaan in tempdb tijdens de huidige sessie - Table variables: variabelen die data opslaan voor de duur van een batch - Views: samengesteld op basis van een query. Een view is geen base table. - Indexed views: Opgeslagen data die gedefinieerd is als een view en bijgewerkt worden alsde base tables worden bijgewerkt - Derived tables en table expressions: subqueries waarnaar wordt gerefereerd binnen queries. Een tabel maken Er zijn twee manieren om een tabel aan te maken: CREATE TABLE statement en het INSERT INTO statement.  Bij CREATE TABLE: moet je:    - de naam van de tabel opgeven en    - de kolommen specificeren.     * de lengte van d

MS Sql 70-461: Chapter 7

Les 1 XML is hoofdlettergevoelige tekst in unicode. Speciale tekens in XML kunnen als volgt worden escaped: &    & "     " <    < >    > '      ' Ook kan er gebruik gemaakt worden van Als een gedeelte van XML geen root node heeft, dan wordt gesproken over een XML fragment.  Als elementen attributen hebben, dan wordt gesproken over attribute-centric presentatie. Als er geen attributen in de XML zitten, dan heet dit element-centric presentation. Met XML Scheme Descrition (XSD) kan de metadata van het XML document worden beschreven. In een XSD worden de structuur en de data types vastgelegd per element (tag). Als een XSD document bestaat voor een XML document, dan wordt gesproken over een typed XML document. FOR XML RAW De eerse manier om van het resultaat van een query XML te maken is door de RAW optie. In RAW mode wordt elke rij in de resultaatset geconverteerd naar een element met de naam row en de kolommen van de

MS Sql 70-461: Chapter 6

Les 1 Full Text Search (FTS) maakt het mogelijk om benaderend zoekopdrachten uit te voeren. Voordat gebruik gemaakt kan worden van FTS moeten full text indexes worden aangemaak in een ful text catalog. Vervolgens kan er gezocht worden op: - simple terms: een of meerdere specifieke woorden of zinnen - prefix terms: termen waarmee een woord of zin begint - generation terms: inflectionele vormen van woorden - proximity terms: woorden of zinnen die dicht bij een andere zin of woord liggen - thesaurus terms: synoniemen voor een woord - weighted terms: woorden of zinnen die gebruik maken van een zelf ingevoerd gewicht - statistical semantic: zoeken op sleutelzinnen in een document - similar documents: where gelijkwaardighed is bepaald door sematische sleutel zinnen. Full-Text search components Om te zien of FTS is gesintalleerd kan de query SELECT SERVERPROPERTY('IsFullTextInstalled') worden uitgevoerd. Full-text indexes kunnen worden toegepast op kolommen va

MS Sql 70-461: Chapter 5

Les 1 Een data analysis function is een functie die wordt toegepast op een set van rijen en één waarde teruggeeft. Een voorbeeld hiervan is SUM. Single grouping set Een query wordt een grouped query als een group function wordt gebruikt of als de GROUP BYclause wordt toegepast. Voorbeeld: SELECT COUNT(*) as total FROM orders. Omdat er geen GROUP BY clause wordt gebruikt worden alle rijen in de tabel beschouwd als één grote groep en COUNT telt het aantal rijen per groep, dus is het restultaat van de query het aantal rijen dat in de tabel orders zit. Grouped queries geven enkel één rij per groep terug. Met de GROUP BY kan opgegeven waorden waarop gegroepeerd moet worden: SELECT customerId, COUNT(*) as total  FROM orders GROUP BY customerId Nu wordt per customerId het aantal rijen getoond. Met HAVING kunnen groepen gefilterd worden. HAVING is net als WHERE. Waar WHERE wordt toegepast op rijen, wordt HAVING toegepast op groepen. Met HAVING kunnen ook functies zoals C

MS Sql 70-461: Chapter 4

Afbeelding
Les 1 Cross Joins Een cross join envoudigste join en heeft als uitkomst een cartesisch product van de twee tabellen. Dit betekent dat elke rij van de ene tabel wordt gecombineerd met alle rijen van de andere tabel. SELECT x.name AS foo, y.n AS bar FROM T1 AS x CROSS JOIN T2 AS y Een oudere schrijfwijze voor een CROSS JOIN isdoor de tabelnamen te scheiden met een comma: SELECT username FROM T1, T2. Inner Joins Met een INNER JOIN kunnen rijen gematched worden tussen twee tabellen op basis van een predicate, wat vaak een primary key(PK) in de ene tabel is en een foreign key (FK) in de andere. Een equjoin is een join waarbij een predicate wordt gebruikt met een equality operator, zoals T1.kolom = T2.kolom. De inner join geeft enkel de rijen terug waarvoor de predicate true oplevert. SELECT y.name, p.product FROM T1 as y INNER JOIN T2 products as p ON y.productId = p.Id WHERE y.country = 'nl' Als een PK wordt aangemaakt, dan wordt er door Sql Server ook e

MS Sql 70-461: Chapter 3

Les 1 Predicates, three-values logic en zoek argumenten In Sql kent drie clauses om te filteren: WHERE, ON en HAVING. Een predicate is een logische expressie. Als NULL niet mogelijk is (kolom is NOT NULL) kan een predicate true of false opleveren. Dit noemt men two-valued logic. Als een kolom wel NULL toestaat, dan spreekt men van three-valued logic. Als een WHERE cluase wordt toegepast worden enkel de records geretourneert waarvoor de predicate true is. Als een WHERE geen rekening houdt met NULL dan worden deze rijen ook nooit geretourneert. NULL betekent immers 'geen informatie'. Op basis van query filters kan Sql bepalen om indexes te gebruiken om de data efficient op te halen zonder een volledige scan van een tabel uit te voeren. Belangrijk is wel dat de predicate in de vorm van een search argument (SARG) moet zijn om efficient indexes toe te kunnen passen. Een predicate in de vorm kolom operator waarde  of waarde operator kolom  kan een SARG zijn. Voorbeeld: