Komma igång med MS SQL Server. Vilka procedurer kan utföras med detta språk? Varför lära sig detta språk


Det finns miljontals webbapplikationer utspridda över hela internetvärlden. Det finns några som är ganska enkla, och det finns de som "matrisens arkitekt själv skulle bryta benet." Men de har en sak gemensamt - MVC.

Den mest populära arkitektoniskt mönster i världen bland webbapplikationer - model-view-controller (Model Visa Controller eller bara MVC). För första gången användes det i slutet av 70-talet av 1900-talet, i applikationer i språket Småprat. Och sedan tog programmerarna in honom Java och delade det med hela världen och alla programmeringsspråk. PHP var inget undantag. Idag är det bara en liten del av programmerare som samlar in sällsynt PHP-kod som har råd att inte se mot MVC.

Det blev så populärt av en anledning. Det föddes helt enkelt för att skapa flexibla och skalbara applikationer som är lätta att underhålla och utöka.
Syftet med vår handledning är att visa enkelt exempel hur MVC-mönstret fungerar.

För att slutföra uppgifterna behöver du följande program:

Anmärkningar:

MVC-mönster

Låt oss nu prata om allt i ordning. Låt oss först avslöja den stora hemligheten med förkortningen, som uppenbarligen återspeglar det faktum att applikationen kommer att bestå av tre interagerande delar:

  • Modellär ansvarig för datahantering, den lagrar och hämtar enheter som används av applikationen, vanligtvis från en databas och innehåller logiken implementerad i applikationen.
  • Prestanda ansvarar för att visa de uppgifter som den registeransvarige tillhandahåller. Nära relaterat till presentationen är konceptet med en mall, som låter dig ändra utseende information som visas. I en webbapplikation implementeras vyn ofta som en HTML-sida.
  • Kontroller kopplar ihop modellen och utsikten. Den tar emot en begäran från en klient, analyserar dess parametrar och får åtkomst till modellen för att utföra operationer på förfrågningsdata. Redan sammansatta föremål kommer från modellen. De omdirigeras sedan till vyn, som skickar den genererade sidan till styrenheten, som i sin tur skickar den till klienten.

Dataflöden i denna modell kan schematiskt representeras enligt följande:

Går in i verkligheten

Låt oss äntligen formulera det verkliga problemet. Låt oss bli beordrade att bygga en hemsida socialt nätverk. Denna gigantiska uppgift har en liten deluppgift: använd den befintliga databasen med vänner, se till att de ses full lista, samt detaljerad information för varje vän.

Vi kommer nu inte att överväga arkitekturen för hela det sociala nätverket. Vi tar bara en liten deluppgift, föreställer oss dess allvar och tillämpar MVC-mönstret på den.

Så fort vi börjar använda det tänker vi direkt - hur kan vi ordna skripten för vår lösning så att allt finns till hands? För att göra detta kommer vi att placera var och en av de tre sektionerna av vårt MVC-system enligt separata mappar och därmed får vi enkel struktur kataloger där det är lätt att hitta det vi behöver. Dessutom kommer vi att placera dessa tre mappar i lib-katalogen och flytta den över rotwebbkatalogen www:

/lib --/controller ---- FrendCnt.php --/model ---- Frend.php ---- FrendList.php --/view ---- frendlist.php ---- frendone.php / www -- index.php -- .htaccess

Laddar upp katalogen lib(som innehåller motorn för vår webbplats) från webbkatalogen ger oss större säkerhet, vilket gör vårt system otillgängligt för hackares lekfulla händer.

Kontroller

Låt oss nu prata om allt i ordning. Låt oss börja med kontroller, eftersom det är den första av de tre komponenterna i mönstret som stöter på en klientförfrågan, analyserar den i element och initierar modellobjekt. Efter att modellen har bearbetat datan, accepterar den dess svar och skickar den till presentationslagret.

I vårt enkla exempel kommer kontrollern att vara koncentrerad i en enda FrendCnt-klass. Vi kommer att beskriva det mer detaljerat senare. Och nu lite om ingångspunkten till webbapplikationen - detta kommer naturligtvis att vara en fil index.php. I den kommer vi att bestämma utgångspunkten för att ansluta våra skript. Låt oss skapa en instans av kontrollern och anropa en metod på den som kommer att börja bearbeta HTTP-förfrågan och avgöra vad som ska göras härnäst.

Lista nr 1 (fil index.php):

$baseDir = dirname(__FILE__) . "/.."; include_once($baseDir . "/lib/controller/FriendCnt.php"); $controller = new FriendCnt(); $controller->invoke();

Nu om kontrollern. För oss är detta FriendCnt-klassen. Du har redan märkt att en instans av den här klassen skapas i index.php. Den har bara en invoke()-metod, som anropas direkt efter att instansen har skapats. I kontrollerkonstruktorn skapas ett objekt baserat på modellklassen - FrendList (lista över vänner) för att arbeta med data.

I invoke()-funktionen, baserat på den inkommande HTTP-förfrågan, fattas ett beslut: vilken data som krävs från modellen. Sedan anropas metoden som hämtar datan. Därefter ansluts mallar för visning, till vilka data överförs från regulatorn. Observera att kontrollern inte vet något om databasen eller hur sidan renderas.

Lista nr 2 (kontrollerfil FriendCnt.php):

Require_once($baseDir . "/lib/model/FriendList.php"); class FriendCnt ( public $oFriendList; public function __construct() ( $this->oFriendList = new FriendList(); ) public function invoke() ( global $baseDir; $oFriendList = $this->oFriendList; if(isset($_GET ["nyckel"])) ( $oFriendList->setKey($_GET["nyckel"]); $oFriend = $oFriendList->fetch(); inkludera $baseDir . "/lib/view/friendone.php"; ) annat ( $aFriend = $oFriendList->fetch(); inkludera $baseDir . "/lib/view/friendlist.php"; ) ) )

Modell och enheter

Modell– det här är en bild av verkligheten, från vilken man bara tar det som behövs för att lösa problemet. Modellen fokuserar på logiken för att lösa huvudproblemet. Många kallar denna affärslogik det bär ett stort ansvar:

  • Spara, ta bort, uppdatera applikationsdata. Detta implementeras genom databasoperationer eller genom anrop till externa webbtjänster.
  • Inkapsling av all applikationslogik. Absolut all applikationslogik, utan undantag, måste koncentreras i modellen. Det finns inget behov av att flytta någon del av affärslogiken till en kontroller eller vy.

Vår modell innehåller två skript, som vart och ett har sin egen klass definierad. Den centrala FriendList-klassen och Friend-enhetsklassen. I den centrala klassen sker datamanipulation: ta emot data från den registeransvarige och bearbeta den. Entitetsklassen fungerar som en behållare för överföring av data mellan modellen och vyn, och definierar även dess format. Med bra genomförande MVC-mönster, entitetsklasser bör inte refereras till i kontrollern, och de bör inte innehålla någon affärslogik. Deras syfte är endast att lagra data.
I klassen FriendList, som fungerar med en lista över vänner, skapade vi en funktion som modellerar interaktionen mellan denna klass och databasen. Metoden getFriendList() returnerar en array av objekt skapade från Friend-klassen. För att underlätta arbetet med data skapades också en funktion som indexerar en rad objekt. Endast två metoder var tillgängliga för styrenheten: setKey() - ställer in nyckelfältet med vilket detaljerad data om vännen returneras; fetch() - returnerar antingen ett specifikt objekt eller hela listan med vänner.

Lista nr 3 (modellfil FriendList.php):

Require_once($baseDir . "/lib/model/Friend.php"); class FriendList ( privat $oneKey; privat funktion getFriendList() ( return array(new Friend("Alexander", "1985", " [e-postskyddad]"), ny vän("Yuri", "1987", " [e-postskyddad]"), ny vän("Alexey", "1989", " [e-postskyddad]"),); ) privat funktion getIndexedList() ( $list = array(); foreach($this->getFriendList() som $val) ( $list[$val->getKey()] = $val; ) returnera $list;) public function setKey($key) ( $this->oneKey = $key;) public function fetch() ( $aFriend = $this->getIndexedList(); return ($this->oneKey) ? $aFriend [$this->oneKey] : $aFriend;

Beroende på implementeringen av Entity-objekt kan data om det formateras som ett XML-dokument eller ett JSON-objekt.

Lista #4 (Friend.php-entitetsfil):

Klassvän ( privat $nyckel; privat $namn; privat $yearOfBirth; privat $email; offentlig funktion __construct($name, $yearOfBirth, $email) ( $this->key = md5($name . $yearOfBirth . $email) $this->name = $this->yearOfBirth = $e-post) public function getKey() (retur $this->key;) public function getName() >name; ) public function getYearOfBirth() ( return $this->yearOfBirth; ) public function getEmail() ( return $this->email; ) )

Prestanda

Nu måste vi presentera data i bästa möjliga ljus för användaren.

Det är dags att prata om presentationen. Beroende på uppgiften kan data skickas till vyn i olika format: enkla objekt, XML-dokument, JSON-objekt, etc. I vårt fall passeras ett objekt eller en array av objekt. Samtidigt oroade vi oss inte för utdata från baslagret - vad som gäller för sidfoten och sidhuvudet på den genererade sidan, denna kod upprepas i båda vyfilerna. Men för vårt lilla exempel är detta inte viktigt.

Huvudpoängen här är att visa att vyn är skild från styrenheten och modellen. I detta fall är den registeransvarige ansvarig för att överföra data från modellen till vyn.

I vårt exempel innehåller vyn bara två filer: för visning detaljerad information om en vän och för att visa en lista över vänner.

Lista nr 5 (fil för att visa en lista över vänner friendlist.php):

Mina vänner

namn Födelseår
getKey() ?>">getName() ?> getYearOfBirth() ?>

Lista nr. 6 (fil för att visa listan över vänner friendone.php):

<?php echo $oFriend->getName() ?> : Min vän hämta namn() . "
"; echo "Födelseår: " . $oFriend->getYearOfBirth() . "
"; echo "E-post: " . $oFriend->getEmail() . "
"; ?> Lista

Om du överför all denna kod till en webbserver kommer du som ett resultat att få en mikrosajt på inte två sidor (att döma av antalet presentationsfiler), utan på fyra. Den första kommer att visa en lista över vänner, och de andra tre kommer att visa detaljerad information för varje vän.

Vi skulle kunna implementera detaljbläddring med AJAX, då skulle vi bara ha en sida och vi skulle rendera en del av vyn via JSON-objekt direkt på klienternas datorer. Det finns många alternativ i detta avseende.

Detta är ett förenklat exempel på en webbapplikation baserad på MVC-mönstret. Men redan på den kan du se många möjligheter. Vi har redan inkluderat flexibilitet och skalbarhet som fördelar. Ytterligare fördelar kommer att vara möjligheten att standardisera kodning, lätthet att upptäcka och korrigera fel och det snabba inträdet av nya utvecklare i projektet. Dessutom kan du ändra hur enheter lagras i din applikation med hjälp av webbtjänster från tredje part och molndatabaser. Den enda nackdelen är en liten ökning av skriptvolymen. Och så, kontinuerliga fördelar. Så använd det för din hälsa.

Här är projektfilerna, ladda ner och jämför:

Så hur? Vilka tankar? Låt oss kommentera, var inte blyg.

    Vilket fält i tabellen Kunder är den primära nyckeln?

    Vad är kolumn 4 i tabellen Kunder?

    Vad är ett annat namn för en linje? Kolumn?

    Varför kan du inte fråga de första fem raderna i en tabell för visning?

(Se bilaga A för svar.)

SQL: översikt

Det här kapitlet kommer att introducera dig till strukturen för SQL-språket, såväl som vissa allmänna implikationer, såsom vilken typ av data dessa fält kan innehålla och vissa områden med oklarheter som finns i SQL. Det är tänkt att ge en länk till mer specifik information i efterföljande kapitel. Du behöver inte komma ihåg alla detaljer som nämns i det här kapitlet. En kort översikt presenteras här på ett ställe, många av detaljerna kan du hänvisa till senare när du behärskar språket. Vi lägger allt detta i början av boken för att orientera dig i SQL-världen utan att ta ett förenklat förhållningssätt till dess problem, samtidigt som du får en välbekant plats att referera till det i framtiden när du har frågor. Detta material kan bli tydligare när vi går vidare till specifika SQL-kommandon, med början i kapitel 3.

Hur fungerar sql?

SQL är ett språk som riktar sig specifikt till relationsdatabaser. Det eliminerar mycket arbete som du skulle behöva göra om du använde ett allmänt programmeringsspråk, t.ex. C. Att skapa en relationsdatabas på C, skulle du behöva börja från början. Du måste definiera ett objekt som kallas tabell , som kan växa till att ha hur många rader som helst, och sedan gradvis skapa procedurer för att lägga in värden i och hämta från dem. Om du vill hitta några specifika strängar måste du följa en steg-för-steg-procedur som följande:

1. Överväg en tabellrad.

2. Kontrollera om den här strängen är en av strängarna du behöver.

3. Om så är fallet, spara det någonstans tills hela tabellen har kontrollerats.

4. Kontrollera om det finns andra rader i tabellen.

5. Om ja, gå tillbaka till steg 1.

6. Om det inte finns fler rader, skriv ut alla värden som lagrats i steg 3.

(Naturligtvis är detta inte en faktisk uppsättning C kommandon, men bara logiken i steg som skulle inkluderas i ett riktigt program.)

SQL kommer att spara dig den tid det tar att göra allt detta. Kommandon i SQL kan fungera på alla grupper av tabeller som en enda enhet och kan behandla vilken mängd information som helst som extraheras eller härleds från dem som en enda enhet.

Vad gör ansi?

Som vi diskuterade i introduktionen definieras SQL-standarden med ANSI-kod ( American National Standards Institute). SQL uppfanns inte av ANSI. Detta är i grunden en IBM-uppfinning. Men andra företag hoppade på SQL-tåget, med minst ett företag (Oracle) som tog rätten från IBM att marknadsföra SQL-produkter.

Efter att ett antal konkurrerande SQL-program dök upp på marknaden, definierade ANSI den standard som de skulle överensstämma med (att definiera sådana standarder är ANSIs funktion). Men efter detta uppstod några problem. De uppstod som ett resultat av ANSI-standardisering i form av vissa restriktioner. Eftersom ANSI inte alltid definierar vad som är mest användbart, försöker program anpassa sig till ANSI-standarden utan att tillåta den att begränsa dem för mycket. Detta leder i sin tur till slumpmässiga inkonsekvenser. Databasprogram ger vanligtvis ANSI SQL ytterligare funktioner och lättar ofta på många av begränsningarna för de flesta av dem. Därför kommer även de vanliga ANSI-variationerna att täckas. Även om vi uppenbarligen inte kan täcka varje undantag eller variation, tenderar bra idéer att antas och användas i olika program även när de inte definieras av ANSI-standarden. ANSI är en typ av minimistandard och du kan göra mer än den tillåter, även om du måste följa dess riktlinjer när du utför de uppgifter som den specificerar.

Senaste uppdatering: 2017-06-26

En databas identifieras ofta som en uppsättning tabeller som lagrar data. Men det är inte så. Det är bättre att säga att en databas representerar ett lager av objekt. De viktigaste:

    Tabeller: lagra de faktiska uppgifterna

    Visningar: SQL-uttryck som returnerar en uppsättning data som en tabell

    Lagrade procedurer: exekvera SQL-kod i relation till data i databasen (till exempel hämta data eller ändra den)

    Funktioner: även SQL-kod som utför en specifik uppgift

SQL Server använder två typer av databaser: system och användare. Systemdatabaser krävs för att SQL-servern ska fungera korrekt. Och användardatabaser skapas av serveranvändare och kan lagra vilken godtycklig information som helst. De kan ändras och tas bort, eller skapas igen. Egentligen är det dessa databaser som vi kommer att skapa och som vi kommer att arbeta med.

Systemdatabaser

I MS SQL Server skapas fyra systemdatabaser som standard:

    master: Detta är serverns huvuddatabas, om den saknas eller är skadad kommer servern inte att kunna fungera. Den lagrar alla använda serveranvändarinloggningar, deras roller, olika konfigurationsinställningar, namn och information om databaser lagrade på servern, samt en rad annan information.

    modell: Denna databas representerar mallen från vilken andra databaser skapas. Det vill säga när vi skapar vår egen databas genom SSMS skapas den som en kopia av modelldatabasen.

    msdb: lagrar information om det arbete som utförs av en komponent som SQL-schemaläggaren. Den lagrar också information om säkerhetskopiering av databas.

    tempdb: Denna databas används som lagring för temporära objekt. Den återskapas varje gång servern startar.

Alla dessa databaser kan ses genom SQL Server Management Studio i noden Databaser -> System Databases:

Dessa databaser bör inte modifieras, med undantag för modelldatabasen.

Om PolyBase-komponenten valdes och installerades under serverinstallationsstadiet, kommer standardservern också att innehålla ytterligare tre databaser som används av denna komponent: DWConfiguration, DWDiagnostics, DWQueue.

Skapa en databas i SQL Management Studio

Låt oss nu skapa vår databas. För att göra detta kan vi använda ett skript i SQL-språk, eller göra allt med hjälp av grafiska verktyg i SQL Management Studio. I det här fallet kommer vi att välja den andra metoden. För att göra detta, öppna SQL Server Management Studio och högerklicka på databasnoden. Välj sedan Ny databas i snabbmenyn som visas:

Efter detta öppnas ett fönster där vi kan skapa en databas:

I fältet Databas måste du ange namnet på den nya databasen. Låt vår databas heta universitet.

Nästa fält, Ägare, anger ägaren till databasen. Som standard har den värdet , det vill säga ägaren kommer att vara den som skapar denna databas. Låt oss lämna detta fält oförändrat.

Följande är en tabell för inställning av allmänna databasinställningar. Den innehåller två rader - den första för att ställa in inställningarna för huvudfilen där data kommer att lagras, och den andra raden för att konfigurera loggfilen. I synnerhet kan vi ställa in följande inställningar:

    Logiskt namn: Det logiska namnet som tilldelas databasfilen.

    Filtyp: Det finns flera typer av filer, men som regel görs huvudarbetet med datafiler (ROWS Data) och en loggfil (LOG)

    Filgrupp: Betecknar en grupp filer. En filgrupp kan lagra många filer och kan användas för att dela upp en databas i bitar för att placeras på olika platser.

    Initial storlek (MB): Anger den ursprungliga storleken på filer när de skapas (verklig storlek kan skilja sig från detta värde).

    Autogrowth/Maxsize: När databasen når sin ursprungliga storlek, använder SQL Server detta värde för att utöka filen.

    Sökväg: Katalogen där databaserna kommer att lagras.

    Filnamn : Det omedelbara namnet på den fysiska filen. Om det inte anges används det logiska namnet.

Efter att ha angett namnet på databasen, klicka på OK-knappen och databasen kommer att skapas.

Efter det kommer den att dyka upp bland serverdatabaserna. Om denna databas inte behövs senare kan den raderas genom att högerklicka på den och välja Ta bort i snabbmenyn.

Idag blir SQL-kurser "för dummies" alltmer populära. Detta kan förklaras mycket enkelt, eftersom man i den moderna världen i allt högre grad kan hitta så kallade "dynamiska" webbtjänster. De kännetecknas av ett ganska flexibelt skal och är baserade på Alla nybörjare som bestämmer sig för att dedikera webbplatser, först och främst anmäla sig till SQL-kurser "för dummies".

Varför lära sig detta språk?

Först och främst lärs ut SQL för att ytterligare skapa ett brett utbud av applikationer för en av de mest populära bloggmotorerna idag - WordPress. Efter att ha slutfört några enkla lektioner kommer du att kunna skapa frågor av vilken komplexitet som helst, vilket bara bekräftar enkelheten i detta språk.

Vad är SQL?

Eller ett strukturerat frågespråk, skapades för ett enda syfte: att fastställa, ge tillgång till och bearbeta dem på ganska korta tidsperioder. Om du känner till SQL-betydelsen kommer du att förstå att denna server klassificeras som ett så kallat "icke-procedurspråk". Det vill säga, dess möjligheter inkluderar endast en beskrivning av komponenter eller resultat som du vill se i framtiden på webbplatsen. Men när anger inte exakt vilka resultat som kommer att uppnås. Varje ny begäran på detta språk är som en extra "överbyggnad". Det är i den ordning som de förs in i databasen som frågorna kommer att exekveras.

Vilka procedurer kan utföras med detta språk?

Trots sin enkelhet låter SQL-databasen dig skapa en mängd olika frågor. Så vad kan du göra om du lär dig detta viktiga programmeringsspråk?

  • skapa ett brett utbud av bord;
  • ta emot, lagra och ändra mottagen data;
  • ändra tabellstrukturer efter eget gottfinnande;
  • kombinera den mottagna informationen till enkla block;
  • beräkna mottagen data;
  • säkerställa fullständigt skydd av information.

Vilka kommandon är mest populära på detta språk?

Om du bestämmer dig för att ta en SQL for Dummies-kurs kommer du att få detaljerad information om de kommandon som används för att skapa frågor med den. De vanligaste idag är:

  1. DDL är ett kommando som definierar data. Den används för att skapa, ändra och ta bort en mängd olika objekt i databasen.
  2. DCL är ett kommando som manipulerar data. Den används för att ge olika användare tillgång till information i databasen, samt för att använda tabeller eller vyer.
  3. TCL är ett team som hanterar en mängd olika transaktioner. Dess huvudsakliga syfte är att fastställa hur en transaktion fortskrider.
  4. DML - manipulerar mottagna data. Dess uppgift är att låta användaren flytta olika information från databasen eller skriva in den där.

Typer av privilegier som finns på den här servern

Privilegier hänvisar till de åtgärder som en viss användare kan utföra i enlighet med sin status. Det mest minimala är förstås en vanlig inloggning. Naturligtvis kan privilegier ändras med tiden. Gamla kommer att raderas och nya kommer att läggas till. Idag vet alla som går kurser i SQL Server "för dummies" att det finns flera typer av tillåtna åtgärder:

  1. Objekttyp - användaren får utföra vilket kommando som helst endast i relation till ett specifikt objekt som finns i databasen. Samtidigt skiljer sig behörigheterna för olika objekt. De är också knutna inte bara till en viss användare utan också till tabeller. Om någon, med hjälp av sina möjligheter, skapade en tabell, anses han vara dess ägare. Därför har han rätt att tilldela nya privilegier till andra användare relaterade till informationen i den.
  2. Systemtypen är den så kallade dataupphovsrätten. Användare som har fått sådana privilegier kan skapa olika objekt i databasen.

SQL historia

Detta språk skapades av IBM Research Laboratory 1970. På den tiden var namnet något annorlunda (SEQUEL), men efter några års användning ändrades det, vilket förkortade det lite. Trots detta uttalar fortfarande många världsberömda programmeringsexperter namnet på gammaldags vis. SQL skapades med ett enda syfte - att uppfinna ett språk som skulle vara så enkelt att även vanliga internetanvändare kunde lära sig det utan problem. Ett intressant faktum är att SQL vid den tiden inte var det enda sådana språket. I Kalifornien utvecklade en annan grupp specialister en liknande Ingres, men den blev aldrig utbredd. Före 1980 fanns det flera varianter av SQL som bara skilde sig något från varandra. För att förhindra förvirring skapades en standardversion 1983, som fortfarande är populär idag. SQL-kurser "för dummies" låter dig lära dig mycket mer om tjänsten och studera den fullt ut på några veckor.







2024 gtavrl.ru.