mysql windows kommandorad. Grunderna för MySQL-administration med hjälp av kommandoraden. Starta och stoppa MySQL Server med MySQL Administrator

Starta och stoppa MySQL Server från kommandoraden

Du kan starta MySQL-servern manuellt på ett av två sätt:

Dubbelklicka på filen mysqld-nt.exe som finns i underkatalogen bin i MySQL-installationskatalogen.

Öppna ett Windows-kommandotolkfönster. För att göra detta, klicka på Start-knappen, välj alternativet Kör i menyn, i fönstret Kör programmet som visas, i fältet Öppna, skriv cmd och klicka på OK-knappen. Ett kommandoradsfönster visas på skärmen (Fig. 1.25).

Ris. 1,25. kommandoradsfönster


Ange kommandot vid kommandotolken

mysqld-nt

och tryck på Enter-tangenten. MySQL-servern kommer att startas.

Om sökvägen till underkatalogen bin inte lades till värdet för systemvariabeln Path när du konfigurerar servern, måste du för att starta servern ange inte bara filnamnet utan även hela sökvägen till den, till exempel :

C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt

Om du vill visa serverdiagnostikmeddelanden från ett kommandotolksfönster, istället för mysqld-nt, skriv

mysqld-nt --console

Uppmärksamhet!

Om du inte angav ett root-lösenord när du satte upp MySQL-servern måste du ställa in ett lösenord första gången du startar servern (annars kan vem som helst hantera servern som root utan lösenord).

För att ställa in root-lösenordet, öppna ett nytt kommandotolksfönster och skriv in följande kommando:

mysqladmin -u root-lösenord<пароль>

(eller C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin -u root-lösenord<пароль>om sökvägen till underkatalogen bin inte lades till i systemvariabeln Path när servern konfigurerades) och tryck på Enter.

Senare, om du behöver ändra lösenordet för root-användaren, kör samma kommando, bara med -p-alternativet:

mysqladmin -u root -p lösenord<новый пароль>

När uppmaningen Ange lösenord visas anger du det gamla lösenordet och trycker på Enter.

Slutligen, om du behöver stoppa MySQL-servern, kör kommandot

mysqladmin -u root -p avstängning

och vid uppmaningen Ange lösenord anger du lösenordet för rootanvändaren. Tryck på Enter-tangenten. MySQL-servern kommer att stoppas.

Du kan också använda det grafiska MySQL-administratörsverktyget för att starta och stoppa MySQL-servern.

Starta och stoppa MySQL Server med MySQL Administrator

För att starta MySQL-servern med det grafiska MySQL-administratörsverktyget, följ dessa steg.

1. Starta programmet MySQL Administrator (Start → Alla program → MySQL → MySQL Administrator). Serveranslutningsfönstret visas på skärmen (Fig. 1.26).

Ris. 1,26.


2. Håll ned Ctrl-tangenten och klicka på knappen Hoppa över som visas i det nedre högra hörnet av fönstret istället för knappen Avbryt. MySQL-administratörens huvudfönster visas på skärmen (fig. 1.27).

Ris. 1,27. MySQL Administrator huvudfönster


4. Om MySQL-servern inte har konfigurerats som en Windows-tjänst, är knappen Starta tjänst i den högra rutan i fönstret inte tillgänglig. Du måste göra följande preliminära steg:

1) gå till fliken Konfigurera tjänst. Hitta knappen Installera ny tjänst längst ned på fliken och klicka på den;

2) i dialogrutan som visas, ange namnet på tjänsten och klicka på OK-knappen;

3) i fältet Config Filename anger du sökvägen till my.ini-konfigurationsfilen (Fig. 1.28), till exempel C: \ Program Files \ MySQL \ MySQL Server 5.0 \ my.ini. Röd teckenfärg betyder att filen inte hittades; om färgen har ändrats till normal, är sökvägen korrekt;

4) i fältet Sökväg till binär anger du sökvägen till filen mysqld-nt.exe, till exempel C: \Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt;

6) återgå till fliken Start/Stopp Service.

Ris. 1,28. Fliken Konfigurera tjänst 5. Klicka på knappen Starta tjänst. MySQL-servern kommer att startas.


Uppmärksamhet!

Om du inte angav ett root-lösenord när du konfigurerade MySQL-servern måste du ställa in det första gången du startar servern (annars kan vem som helst hantera servern som root utan lösenord). I den nuvarande versionen av MySQL Administrator är det inte tillgängligt att ställa in ett root-lösenord, och du måste använda kommandoradsverktyget mysqladmin för att utföra denna operation (se underavsnittet Starta och stoppa MySQL-servern från kommandoraden).

För att stoppa MySQL-servern med MySQL Administrator, följ dessa steg.

1. Starta programmet MySQL Administrator (Start → Alla program → MySQL → MySQL Administrator). Serveranslutningsfönstret visas på skärmen (se Fig. 1.26).

Server Host (värdnamn) - värdet på localhost (lokal dator);

Port (Port) - portnumret som valts när servern konfigurerades (standard - 3306);

Usename (Användarnamn) - värdet på root;

Lösenord - lösenordet för rootanvändaren. Klicka på OK-knappen.

3. I huvudfönstret för MySQL Administrator, i den vänstra rutan, klicka på Service Control.

4. Klicka på knappen Stoppa tjänst i den högra rutan i fönstret. MySQL-servern kommer att stoppas.

I nästa underavsnitt kommer du att lära dig hur du startar MySQL-servern med hjälp av Windows administrationsverktyg.

Starta och stoppa MySQL-servern från kontrollpanelen

Om MySQL-servern konfigurerades som en Windows-tjänst med hjälp av konfigurationsguiden (se underavsnittet "Konfigurera MySQL-server") eller med hjälp av MySQL-administratörsverktyget (se underavsnittet "Starta och stoppa MySQL-server med MySQL-administratör"), starta och stoppa det. kan använda komponenten Tjänster i Kontrollpanelen.

För att anropa komponenten Tjänster, klicka på Start-knappen, välj Kontrollpanelen från menyn, dubbelklicka sedan på ikonen Administrationsverktyg på kontrollpanelen och dubbelklicka slutligen på ikonen Tjänster i fönstret Administrationsverktyg. Fönstret Tjänster visas på skärmen (Fig. 1.29) med en lista över alla lokala tjänster.

Ris. 1,29. MySQL-tjänst i Kontrollpanelen


I fönstret Tjänster klickar du på namnet på MySQL-tjänsten (namnet definieras när tjänsten skapades i konfigurationsguiden eller i MySQL-administratören). Klicka sedan på lämplig länk under tjänstens namn: Starta tjänst, Stoppa tjänst eller Starta om tjänst.

När MySQL-servern är igång kan du ansluta till den. Följande underavsnitt visar hur du gör detta.

Ansluter till servern från kommandoraden

Följ dessa steg för att ansluta till MySQL-servern från kommandoraden.

1. Öppna ett Windows-kommandotolkfönster. För att göra detta, klicka på Start-knappen, välj alternativet Kör i menyn, i fönstret Kör programmet som visas, skriv cmd i fältet Öppna och klicka på OK-knappen.

2. Ange kommandot på kommandoraden (se figur 1.25).

mysql -h<Имя компьютера>-u<Имя пользователя>-s

(var<Имя компьютера>är namnet på den dator som servern körs på) och tryck på Enter. När uppmaningen Ange lösenord visas anger du användarens lösenord.

Om du vill ansluta till en MySQL-server som körs på samma dator kan du utelämna datornamnet (localhost), till exempel

mysql -u root -s

Efter anslutning till servern kommer kommandotolken att ändras till mysql> (Figur 1.30). Nu kan du börja arbeta med databasen: lägg till tabeller, ange och fråga data, registrera nya användare, etc.

Ris. 1.30. Ansluter till MySQL Server från kommandoraden


För att koppla från servern, skriv helt enkelt kommandot på kommandoraden

och tryck på Enter.

Ett alternativt sätt att ansluta till MySQL-servern tillhandahålls av det grafiska verktyget MySQL Query Browser.

Ansluter till en server med MySQL Query Browser

Verktyget MySQL Query Browser är ett gränssnitt för att skapa, redigera och exekvera SQL-satser. Det är bekvämare än kommandoraden. Om du bestämmer dig för att använda MySQL Query Browser för att arbeta med databasen, följ dessa steg för att ansluta till servern.

1. Starta programmet MySQL Query Browser (Start → Alla program → MySQL → MySQL Query Browser). Serveranslutningsfönstret visas på skärmen (fig. 1.31).

Ris. 1,31. MySQL-serveranslutningsfönster


2. I fälten i serveranslutningsfönstret anger du anslutningsparametrarna:

Servervärd (värdnamn) - namnet på den dator som MySQL-servern körs på;

Port (Port) - portnumret som valts vid konfiguration av servern (standard - 330 6);

Användarnamn - användarnamn;

Lösenord - användarlösenord;

Default Schema - Namnet på databasen du kommer att arbeta med (detta kan vara antingen en befintlig eller en ny databas).

3. Tryck på OK-knappen. Om du angav ett namn för den nya databasen klickar du på knappen Ja i dialogrutan som visas för att skapa den här databasen.

Efter anslutning till servern visas huvudfönstret för MySQL Query Browser på skärmen (Fig. 1.32). I den kan du utföra alla operationer med databasen: lägga till tabeller, ange och fråga data, registrera nya användare, etc.

Ris. 1,32. Huvudfönster i MySQL Query Browser


Uppmärksamhet!

Standardteckensnittet som används av MySQL Query Browser för att visa SQL-frågor stöder inte ryska tecken. För att skriva in ryska bokstäver i frågetexter måste du välja ett annat teckensnitt (till exempel Arial eller Book Antiqua). För att göra detta, i huvudfönstret för MySQL Query Browser, öppna Verktyg-menyn och välj Alternativ. I fönstret Alternativ som visas, i den vänstra rutan, klicka på Allmänna alternativ, och i den högra rutan, i fältet Kodfont, välj önskat teckensnitt i listan. Klicka på knappen Använd.

För att koppla från servern stänger du helt enkelt MySQL Query Browser-fönstret.

Det är här vi avslutar vår bekantskap med MySQL och går vidare till att sammanfatta.

1.6. Sammanfattning

Det här kapitlet täckte MySQL DBMS och de grafiska verktygen MySQL Administrator och MySQL Query Browser. Du har bemästrat den ganska komplicerade proceduren för att installera och konfigurera MySQL-servern, lärt dig hur du hanterar servern och ansluter till den. Du lärde dig också hur en relationsdatabas fungerar och hur du designar din egen databas.

Så nästa steg är att bygga en databas i MySQL. Detta är ämnet för det andra kapitlet. Den kommer att berätta hur du skapar tabeller, anger information i dem och hittar den information du behöver i databasen.

kapitel 2
Databashantering med SQL

I det här kapitlet kommer du att lära dig hur du arbetar med data i MySQL, hur du definierar dess struktur och hur du lägger till, ändrar och tar bort data. Dessa operationer utförs av SQL, Universal Structured Query Language, som är standardåtkomstverktyget för relationsdatabaser.

Du kan använda vilken som helst av de många MySQL-serverklientapplikationerna för att köra SQL-kommandon. Det här kapitlet täcker inte tredjepartsapplikationer. Du kommer endast att introduceras till applikationer skapade av MySQL AB: kommandoradsverktyget mysql och det grafiska verktyget MySQL Query Browser.

Alla operationer med data är tillgängliga i båda verktygen. Det är bekvämt att arbeta med databasen i MySQL Query Browser: dess komponenter presenteras tydligt, du kan direkt redigera data (utan att använda SQL UPDATE-satsen), arbeta med frågor, till exempel, bygga dem med ett speciellt verktyg (du gör det behöver inte ange namnen på tabeller och kolumner manuellt ), spara frågor i en fil, exportera frågeresultat och mer. Du kan lära dig om alla funktioner i MySQL Query Browser genom att hänvisa till dokumentationen på ryska, som finns på http://dev.mysql.com/doc/query-browser/en/index.html.

Först kommer du att lära dig hur du kör SQL-kommandon i MySQL Query Browser och på kommandoraden, och i det följande kommer endast syntaxen för SQL-kommandon att täckas.

2.1. Utföra SQL-kommandon

Innan du kör SQL-kommandon måste du ansluta till en körande MySQL-server (se kapitel 1 för hur du gör detta). I det här avsnittet kommer du att lära dig hur du skapar SQL-kommandon och skickar dem till servern för exekvering.

Om du använder kommandoraden kommer vi att skriva in dess text i kommandoradsfönstret för att utföra SQL-kommandot och trycka på Enter för att skicka kommandot till servern. För att undvika problem med att koda ryskspråkiga data, kör kommandot innan du arbetar med data

SETNAMN cp866;

Resultatet av att utföra detta kommando visas i fig. 2.1.

Ris. 2.1. Ställa in kodningen på kommandoraden


Kommandot SET NAMES måste upprepas när alla ansluta till servern med kommandoraden. Detta kommando talar om för servern att denna klientapplikation (mysql-verktyget) använder CP-866-kodningen (detta är Windows kommandoradskodning) och servern kommer automatiskt att utföra kodningskonvertering när den kommunicerar med klientapplikationen.

Efter att ha ändrat kodningen kan du ange alla SQL-kommandon på kommandoraden. Meddelandet om resultatet av kommandots exekvering, såväl som de begärda uppgifterna, visas direkt i kommandoradsfönstret (Fig. 2.2).

Ris. 2.2. Köra en SQL-fråga på kommandoraden


Mysql-verktyget låter dig också ange flerradskommandon (i figur 2.3 skrivs kommandot SHOW DATABASES in på detta sätt). Om ett semikolon inte skrivs in - ett tecken på slutet av kommandot, när du trycker på Enter-tangenten skickar inte verktyget kommandot till servern, utan erbjuder att fortsätta ange kommandot. Om du vill avbryta ett flerradskommando, skriv \c (Figur 2.3).

Ris. 2.3. Flerradskommando


Om du använder MySQL Query Browser behöver du inte ställa in kodningen - det här programmet fungerar i UTF-8-kodning och själv rapporterar detta till servern. I MySQL Query Browser finns det dock problem med att visa ryska bokstäver i frågeområdet (området där texten för SQL-kommandon skrivs in, fig. 2.4). Lösningen på detta problem är att ändra typsnittet som används i frågeområdet (se hur du gör detta i slutet av föregående kapitel). Det räcker att ändra typsnittet en gång.

Ris. 2.4. Köra en SQL-fråga i MySQL Query Browser


I frågeområdet kan du ange flera SQL-kommandon samtidigt, som visas i fig. 2.4. Det aktuella kommandot (markören är på en av dess rader) är markerat med en vit bakgrundsfärg, resten av kommandona visas på en ljusgrå bakgrund. För att utföra det aktuella kommandot kan du antingen trycka på knappen Execute till höger om frågeområdet eller trycka på tangentkombinationen Ctrl+Enter. Efter att kommandot har utförts visas den begärda informationen i resultatområdet och ett meddelande om resultatet av kommandot visas längst ner i detta område.

Nu när du har lärt dig hur du anger SQL-kommandon, låt oss börja hantera data med dessa kommandon. Först och främst kommer vi att titta på kommandon utformade för att fungera med databasen som helhet.

2.2. Skapande av databas

I det här avsnittet kommer du att lära dig hur du skapar och tar bort en databas, ändrar dess standardkodning, väljer den aktuella databasen och visar en lista över alla databaser på en given MySQL-server.

För att skapa en databas, kör kommandot

SKAPA DATABAS<Имя базы данных>;

Till exempel kommandot

SKAPA DATABAS Försäljningsavdelning;

skapar en databas med namnet SalesDept.

Om du av någon anledning behöver ställa in en standardkodning för en ny databas som skiljer sig från den kodning som anges när du konfigurerar MySQL, då kan du när du skapar databasen ange önskad kodning (teckenuppsättning) och/eller regeln för jämförelse ( sortering) teckenvärden :

SKAPA DATABAS<Имя базы данных>

KARAKTERSETT<Имя кодировки>

KOLLATIONERA<Имя правила сравнения>;

Till exempel, om du importerar data till en ny databas som finns i CP-1251-kodningen, kommer vi att ange denna kodning när vi skapar databasen på det här sättet:

SKAPA DATABAS Försäljningsavd

CHARACTER SET cp1251 SAMMANSTÄLL cp1251_general_ci;

Råd

För att se listan över kodningar som används i MySQL, kör kommandot SHOW CHARACTER SET; och för att se en lista med regler för att jämföra teckenvärden, använd kommandot SHOW COLLATION;. I det här fallet kan du använda operatorn LIKE: för att till exempel se alla jämförelseregler för CP-1251-kodningen, kör kommandot SHOW COLLATION LIKE %1251%;. Endelsen "_ci" (skiftlägeskänslig) i jämförelsereglernas namn betyder att jämförelsen och sorteringen är skiftlägesokänslig, ändelsen "_cs" (skiftlägeskänslig) - skiftlägeskänslig, ändelsen "_bin" (binär) - jämförelse och sortering utförs med numeriska teckenkoder. För de flesta sorteringsregler kan du hitta en beskrivning (det vill säga teckenordningen i vilken textvärden kommer att ordnas) på http://www.collation-charts.org/mysql60/ .

Den kodning som angavs när databasen skapades kommer att användas som standard för tabellerna i den databasen, men du kan också ange en annan kodning.

Du kan ändra kodningen och/eller regeln för att jämföra teckenvärden för databasen med kommandot

ÄNDRA DATABAS<Имя базы данных>

KARAKTERSETT<Имя кодировки>

KOLLATIONERA<Имя правила сравнения>;

Samtidigt förblir kodningen som används i redan befintliga databastabeller densamma; endast standardkodningen för nyskapade tabeller ändras.

För att ta bort en onödig eller felaktigt skapad databas, kör kommandot

SLIP DATABAS<Имя базы данных>;

Uppmärksamhet!

Att ta bort en databas är en mycket känslig operation eftersom den raderar alla tabeller i den databasen och data som lagras i tabellerna. Det rekommenderas att säkerhetskopiera databasen innan du tar bort.

Du kan välja en av databaserna som skapats på denna MySQL-server som aktuell databas med kommandot

ANVÄNDA SIG AV<Имя базы данных>;

Till exempel,:

USA:s försäljningsavdelning;

Du kan sedan utföra operationer på tabeller i den databasen utan att prefixet tabellnamnet med databasnamnet. Till exempel, för att komma åt tabellen Kunder i SalesDept-databasen kan du helt enkelt skriva Customers istället för SalesDept.Customers. Genom att ange den aktuella databasen kan du även komma åt tabeller i andra databaser, men användningen av databasnamnet som prefix krävs. Valet av den aktuella databasen behålls tills den kopplas från servern eller tills en annan aktuell databas väljs.

För att se en lista över alla databaser som finns på en given MySQL-server, kör kommandot

VISA DATABASER;

Även om du inte har skapat några databaser än, kommer du att se tre systemdatabaser i den resulterande listan.

INFORMATION_SCHEMA - en informationsdatabas från vilken du kan få information om alla andra databaser, om datastrukturen i dem och om alla typer av objekt: tabeller, kolumner, primära och främmande nycklar, åtkomsträttigheter, lagrade procedurer, kodningar, etc. Denna databas är tillgänglig skrivskyddad och virtuell, vilket betyder att den inte lagras som en katalog på disken: all information som begärs från denna databas tillhandahålls dynamiskt av MySQL-servern.

Mysql är en back-end-databas som används av MySQL-servern. Den lagrar information om registrerade användare och deras åtkomsträttigheter, referensinformation etc.

Test är en tom databas som kan användas för att "testa pennan" eller helt enkelt raderas.

Så du har bemästrat de grundläggande operationerna som utförs med databasen som helhet: SKAPA DATABAS (skapa), ÄNDRA DATABAS (ändra), SLÄPP DATABAS (ta bort), ANVÄND (välj aktuell databas) och VISA DATABASER (se listan över databaser ) kommandon. Därefter ska vi titta på tabelloperationer. I det här fallet kommer vi att anta att du har valt en databas som den aktuella och arbetar med dess tabeller.

2.3. Arbeta med tabeller

I det här avsnittet kommer du att lära dig hur du skapar, ändrar och tar bort en tabell, och hur du visar information om den och en lista över alla tabeller i den aktuella databasen. Låt oss börja med det mest komplexa kommandot - skapa en tabell.

Skapa en tabell

För att skapa en tabell, kör kommandot som visas i lista 2.1.

Lista 2.1. Kommando för att skapa tabell

SKAPA BORD<Имя таблицы>

(<Имя столбца 1> <Тип столбца 1> [<Свойства столбца 1>],

<Имя столбца 2> <Тип столбца 2> [<Свойства столбца 2>],

[<Информация о ключевых столбцах и индексах>])

[<Опциональные свойства таблицы>];


Som du kan se kan kommandot för att skapa tabeller inkludera många alternativ, men många av dem är valfria (i Listing 2.1 är dessa alternativ omgivna av hakparenteser). Faktum är att för att skapa en tabell räcker det att ange dess namn, såväl som namn och typer av alla kolumner; resten av parametrarna används vid behov.

Låt oss först titta på några exempel som hjälper dig att bemästra kommandot CREATE TABLE och omedelbart, utan att studera dess många parametrar, börja skapa dina egna (enkla i strukturen) tabeller.

Låt oss säga att vi bygger databasen vi designade i kapitel 1. Med hjälp av kommandona i föregående avsnitt har vi skapat en tom SalesDept-databas och valt den som vår nuvarande databas. Låt oss nu skapa tre tabeller: Kunder (Kunder), Produkter (Varor) och Beställningar (Beställningar). Lista 2.2 visar kommandot för att skapa tabellen Kunder.

Lista 2.2. Kommandot för att skapa tabeller för kunder

SKAPA BORD-kunder

(id SERIE,

namn VARCHAR(100),

telefonVARCHAR(20),

adress VARCHAR(150),

betyg INT,

PRIMÄRNYCKEL (id))


Detta kommando använde parametrar: för det första namnet på tabellen och för det andra namnen och typerna av kolumner som tabellen kommer att bestå av (se även Tabell 1.1 i kapitel 1).

Id – postidentifierare. Du tilldelade SERIAL-typen till denna kolumn, vilket gör att du automatiskt kan numrera tabellraderna. Nyckelordet SERIAL står för BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE. Detta innebär att du kan ange stora heltals (STORA) positiva (UNSIGNED) tal i kolumnen, samtidigt som du automatiskt kontrollerar frånvaron av null och upprepade värden (INTE NULL UNIQUE). Om du, när du lägger till en rad i en tabell, inte anger ett värde för denna kolumn, kommer MySQL-programmet att lägga till nästa serienummer (AUTO_INCREMENT) till denna kolumn.

Notera

NULL är en konstant som indikerar frånvaron av ett värde. Om kolumnen innehåller ett NULL-värde, anses det inte finnas något definierat värde för den kolumnen (vilket är anledningen till att vi även refererar till NULL som ett odefinierat värde). NULL ska inte förväxlas med den tomma strängen ("") eller siffran 0. NULL-värden hanteras på ett speciellt sätt: de flesta funktioner och operatorer returnerar NULL om ett av argumenten är NULL. Till exempel är resultatet av en jämförelse 1 = 1 ett sant värde (TRUE), och resultatet av en jämförelse NULL = NULL är ett odefinierat värde (NULL), det vill säga två odefinierade värden anses inte vara lika.

Nam är kundens namn, telefon är telefonnumret och adress är adressen. Du har gett dessa kolumner en VARCHAR-typ eftersom de kommer att innehålla teckenvärden. Hakparenteserna anger det högsta tillåtna antalet tecken i kolumnvärdet.

För det tredje angav du att id-kolumnen skulle vara tabellens primärnyckel genom att inkludera en PRIMARY KEY (id) definition i kommandot för att skapa tabeller.

För det fjärde har du angett två valfria parametrar till denna tabell. ENGINE-parametern anger tabelltypen. Du tilldelade typen InnoDB till tabellen Kunder, eftersom endast denna typ säkerställer integriteten för relationer mellan tabeller (för mer information om tabelltyper, se avsnittet "Valfria tabellegenskaper"). Parametern CHARACTER SET anger standardkodningen för data i tabellen. Eftersom du inte har ställt in kodningen separat för kolumnerna namn, telefon och adress, kommer data i dessa kolumner att lagras i UTF-8-kodning, som är standardkodningen för tabellen Kunder.

Nästa exempel vi ska titta på är kommandot Produkttabell skapande som visas i Listing 2.3.

Lista 2.3. Kommando för att skapa produkttabeller

SKAPA BORD Produkter

(id SERIE,

beskrivning VARCHAR(100),

detaljer TEXT,

pris DECIMAL(8,2),

PRIMÄRNYCKEL (id))

MOTOR InnoDB KARAKTERSETT utf8;


Detta kommando är mycket likt kommandot för att skapa tabellen Kunder och skiljer sig från det endast i namnet på tabellen och uppsättningen kolumner. Kolumnerna id (produktnummer) och beskrivning (produktnamn) i tabellen Produkter har typer som vi redan känner till. Informationskolumnen (beskrivning) är av typen TEXT. Den här typen är bekväm att använda istället för VARCHAR-typen om kolumnen kommer att innehålla långa värden: den totala längden på värdena för alla VARCHAR-kolumner är begränsad till 65 535 byte för varje tabell, och det finns ingen gräns för den totala längden på TEXT kolumner. Nackdelen med TEXT-typen är omöjligheten att inkludera sådana kolumner i tabellens främmande nyckel, det vill säga att skapa en relation mellan tabeller baserat på dessa kolumner.

Priskolumnen är av typen DECIMAL, avsedd att lagra penningbelopp och andra värden för vilka det är viktigt att undvika avrundningsfel. Inom parentes angav vi två siffror: det första av dem bestämmer det maximala antalet siffror i kolumnvärdet, det andra - det maximala antalet siffror efter decimalavgränsaren. Med andra ord kan priset på en produkt innehålla upp till sex siffror i heltalsdelen (6 = 8–2) och upp till två siffror i bråkdelen.

Och slutligen, det sista exemplet är kommandot för att skapa ordertabellen, som visas i Listing 2.4.

Lista 2.4. Kommandot för att skapa tabeller för order

SKAPA BORDsbeställningar

(id SERIE,

datum DATE,

product_id BIGINT UNSIGNED NOT NULL,

antal INT OSIGNERAD,

belopp DECIMAL(10;2),

customer_id BIGINT OSIGNED,

PRIMÄRNYCKEL (id),

UTLÄNDSK NYCKEL (product_id) REFERENSER Produkter (id)

PÅ DELETE BEGRÄNSNING PÅ UPPDATERING CASCADE,

UTLÄNDSK NYCKEL (customer_id) REFERENSER Kunder (id)

PÅ DELETE BEGRÄNSNING PÅ UPPDATERING CASCADE)

MOTOR InnoDB KARAKTERSETT utf8;


En funktion i tabellen Order är förekomsten av främmande nycklar: kolumnen product_id (product) innehåller produktnumren från tabellen Products, och kolumnen customer_id (customer) innehåller kundnumren från tabellen Customers (se även tabell 1.2 i kapitel 1). Eftersom produkt- och kundnumren är stora positiva heltal har vi tilldelat kolumnerna product_id och customer_id typen BIGINT UNSIGNED.

Därefter, för att säkerställa att integriteten hos relationer bibehålls automatiskt (vi pratade om integritet i kapitel 1), berättade vi för MySQL-programmet vilken primärnyckel varje främmande nyckel motsvarar. Till exempel betyder konstruktionen FOREIGN KEY (customer_id) REFERENCES Customers (id) att kolumnen kund_id endast kan innehålla värden från kolumnen id i tabellen Customers och NULL-värden, och andra värden är förbjudna. För kolumnen product_id satte vi en liknande begränsning och tilldelade egenskapen NOT NULL till den här kolumnen för att förhindra registrering av beställningar med en ospecificerad produkt. Dessutom specificerade vi regler för att upprätthålla integritet för var och en av länkarna (vi tog också hänsyn till dem i kapitel 1). Regeln ON DELETE RESTRICT innebär att du inte kan radera en kundpost om den kunden har en registrerad beställning, och du kan inte radera en produktpost om den produkten beställts av någon. ON UPDATE CASCADE-regeln innebär att när kundnumret i tabellen Kunder eller artikelnumret i tabellen Produkter ändras, görs motsvarande ändringar i tabellen Order.

Notera

Observera att vi skapade ordertabellen sist, eftersom primärnycklarna i tabellerna Kunder och Produkter måste skapas före de främmande nycklar som refererar till dem i tabellen Order. Det skulle dock vara möjligt att skapa tabeller utan främmande nycklar i valfri ordning och sedan lägga till främmande nycklar med kommandot ALTER TABLE, som vi kommer att täcka i underavsnittet "Ändra tabellstruktur".

I våra exempel har vi bara beaktat några av parametrarna för kommandot för att skapa en tabell. Nu kommer vi att lista alla huvudparametrar som du kan behöva när du skapar tabeller. MySQL Data Types handlar om kolumntyper, Column Properties handlar om att ställa in nyckelkolumner och slutligen handlar Key Columns och Index om valfria tabellegenskaper.

Datatyper i MySQL

Som du redan vet måste du ange en datatyp för varje kolumn när du skapar en tabell. MySQL tillhandahåller många datatyper för att lagra siffror, datum/tider och teckensträngar (texter). Dessutom finns det datatyper för lagring av rumsliga (spatiala) objekt, som inte kommer att beaktas i denna bok.

Tänk på numeriska datatyper.

BIT[(<Количествобитов>)].

Ett bitnummer som innehåller det angivna antalet bitar. Om antalet bitar inte anges består antalet av en bit.

Ett heltal i intervallet antingen -128 till 127 eller (om egenskapen UNSIGNED anges) 0 till 255.

BOOL eller BOOLEAN.

De är synonyma med datatypen TINYINT(1) (talet inom parentes är antalet siffror som ska visas, se notering nedan). I det här fallet anses ett värde som inte är noll vara sant (TRUE), noll - som falskt (FALSE).

Ett heltal i intervallet antingen -32768 till 32767 eller (om egenskapen UNSIGNED anges) 0 till 65535.

Ett heltal i intervallet antingen -8388608 till 8388607 eller (om egenskapen UNSIGNED anges) 0 till 16777215.

INT eller INTEGER.

Ett heltal i intervallet antingen -2147483648 till 2147483647 eller (om UNSIGNED-egenskapen anges) 0 till 4294967295.

Ett heltal i intervallet antingen -9 223 372 036 854 775 808 till 9 223 372 036 854 775 807 eller (om UNSIGNED-egenskapen anges) 0 till 18 446 744 073 5 51 6.

Synonymt med BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE (ett osignerat stort heltal som accepterar automatiskt inkrementerade unika värden; NULL-värden är inte tillåtna). Används för att automatiskt generera unika värden i en primärnyckelkolumn. Du hittar en beskrivning av egenskaperna UNSIGNED och AUTO_INCREMENT i detta underavsnitt, och egenskaperna NOT NULL och UNIQUE i stycket "Kolumnegenskaper".

Notera

För alla heltalsdatatyper, förutom BOOL (BOOLEAN) och SERIAL, kan du ange antalet visade siffror inom parentes, vilket används tillsammans med ZEROFILL-parametern: om talet innehåller färre siffror, är det utfyllt till vänster med nollor vid utmatning. Till exempel, om en tabellkolumn är definierad som INT(5) ZEROFILL, så visas värdena "1234567" och "12345" som de är, och värdet "123" visas som "00123". För BIT-datatypen anges storleken på antalet, det vill säga det maximala antalet lagrade bitar, inom parentes.

MySQL-databasservern används mycket ofta för att skapa dynamiska webblösningar. En av anledningarna (och kanske resultatet) är att nästan alla värdar i sina tariffplaner på UNIX-plattformen erbjuder en eller flera MySQL-databaser. Om du använder virtuell hosting behöver du nästan inte lära dig serveradministration, du behöver bara implementera dina program enligt gränssnittet som stöder det programmeringsspråk du väljer (PHP har ett inbyggt gränssnitt för att ansluta till databasen, i version 5.0 MySQL-stödet flyttas till ett separat bibliotek under licens). Alla andra administrativa frågor - att starta, stoppa, starta om, hantera rättigheter och användare, reservera och konfigurera servern - utförs av värdleverantörens administratörer. Men när du installerar din egen server eller VDS (Virtual Dedicated Server - virtuell dedikerad server), måste du själv ta hand om alla nyanser av dess arbete.

MySQL-servern kan konfigureras på två sätt - genom att ange alternativ på kommandoraden när servern startar, och genom my.ini-konfigurationsfilen. Du bör också skilja på valfria parametrar som kan ställas in för den aktuella serversessionen och som går förlorade vid omstart, och miljövariabler som verkar globalt för hela servern och alla databaser - du kan bara ändra dem genom att direkt ange nya värden.

En lista över alla tillgängliga kommandon och alternativ kan erhållas genom att skriva "mysqld --help" i konsolen. Det ska sägas att nästan alla kommandon är universella och stöds på alla plattformar där MySQL-servern körs, men det finns flera specifika kommandon för Windows NT-plattformen. För alla kommandon finns det en komplett syntax när kommandot börjar med två bindestreck (minus) "--", följt omedelbart, utan mellanslag, av namnet på kommandot (eller alternativ, vidare kommer dessa ord att vara synonymer). Om ett värde krävs följs kommandonamnet av tecknet "=" och värdet som ska specificeras. Den förkortade formen ger ett enda bindestreck, kommandonamnet förkortas till en bokstav och parametrarna anges med ett mellanslag. Endast alternativet "--socket" har inte en kort form (det borde ha varit "-s"). Kom ihåg att kommandoskrivning är skiftlägeskänslig, och kommandona "-l" och "-L" är helt olika. Du kan ställa in kommentarer i konfigurationsfilen - de separeras av tecknet "#", och hela raden ignoreras till slutet.


Låt oss först bekanta oss med de viktigaste kommandona.

Kommandot --help är det viktigaste, det listar alla tillgängliga kommandon.

Hjälp eller -? (i servrar version 4.1 och högre finns det inget kort kommando "-h"; dessutom, för att köra kommandot, måste du först ange kommandot "--verbose") - visar hjälp om tillgängliga kommandon och alternativ, servern själv gör inte börja.
--version eller -V - användbart om du behöver veta den exakta versionen av MySQL-servern och plattformen som den körs på.
--user= eller -u - Anger användarnamnet med vars rättigheter servern startas. Det rekommenderas i allmänhet inte att köra servern som root. Exempel: "--användare=vasya".
-p Används tillsammans med kommandot "-u" och anger lösenordet för användarkontot. Om det inte finns något lösenord (standardinstallationen ger inget lösenord för root-användaren), kan kommandot utelämnas. Observera att syntaxen för kommandot är annorlunda - lösenordet ställs in på raden omedelbart efter kommandot, utan några separatorer. Exempel: "--user=vasya -pverygoodpassword" där "verygoodpassword" är lösenordet för användaren "vasya".
-P eller --port= Anger portnumret genom vilket anslutningen till mysqld-servern upprättas. Som standard lyssnar servern på TCP-port 3306, men du kan ställa in vilken annan som helst. Observera att den förkortade versionen av kommandot skrivs med stort P, eftersom den lilla bokstaven p används för att ställa in användarens lösenord.
--bind-address= - används för att tvinga fram serverns IP-adress, som standard tas den aktuella datorns adress.
--skip-networking - kommandot förbjuder helt användningen av nätverksanslutningar för att ansluta till servern, du kan bara arbeta lokalt, från localhost-värden.

Nästa grupp av kommandon är designad för att fungera med databaser.

Skriv ut meddelanden på ryska - använd --language=ryska

Datadir= eller -h låter dig explicit ange katalogen där databaserna lagras. Det kan behövas om du vill lagra databaser på en annan partition eller logisk enhet, eller om du har flera servrar som använder olika kataloger för att lagra databaser. Det är tillåtet att ställa in både den fullständiga banan och den relativa. Exempel: "mysqld --datadir=\home\vasya\bases".
--basedir= eller -b — sökväg till katalogen med den installerade servern.
--tmpdir= eller -t är sökvägen till katalogen för temporära filer.
--character-set-dir=. Det här alternativet anger sökvägen till en katalog som innehåller konfigurationsfiler för olika kodningar. Dessa data är viktiga för korrekt sortering och sökning i strängfält i tabeller.
--language= eller -L - låter dig åsidosätta språket för att visa meddelanden och fel. Standardspråket är engelska, men andra stöds, särskilt ryska. För att ställa in utmatningsspråket måste du ange dess namn med latinska bokstäver (ryska - för ryska, engelska - för engelska). För att kommandot ska fungera måste \share\-katalogen finnas, men om sökvägen till den skiljer sig från standarden, måste du istället för att ange språket beskriva den fullständiga sökvägen till katalogen — till exempel "-- language=\user\vasya\mysql\langv\ryska".
--default-character-set= - ställer in standard teckenkodning. Bland de möjliga värdena för charset-parametern är: koi8_ru, german1, cp1251, win1251, koi8_ukr, win1251ukr, win1250 och andra - mer än 20 olika kodningar totalt. Kodning är viktig om tabellerna ska lagra texter på olika språk, och det är viktigt att ta hänsyn till nationella särdrag vid sökning och sortering av data.

Dessa var de viktigaste alternativen och kommandona som du kan behöva när du ställer in en server. Det finns många kommandon, och för att studera dem fullständigt, använd den inbyggda hjälpen (ringa via kommandot --help).

Vissa kommandon är specifika och endast tillgängliga för Windows NT

Det finns flera specifika kommandon för Windows NT-plattformen.
--console - kommandot dök upp i version 3.22.4 och är avsett att visa alla felmeddelanden i konsolfönstret, vilket är användbart när man felsöker eller studerar effekten av olika parametrar på servern.
--install - fungerar bara på Win2000/XP-plattformen och registrerar MySQL-servern som en systemtjänst som startar varje gång systemet startar och ständigt finns i RAM (om du behöver registrera tjänsten, men användaren startar den själv, kommandot kommer att se ut som "- -insatll-manual"). Kommandot "--remove" tar bort servern från listan över systemtjänster.
--fristående - starta servern under Win2000/XP som ett separat program, inte en systemtjänst.

Det är mest praktiskt att använda det grafiska verktyget WinMySQLAdmin, som ingår i distributionspaketet, för dessa åtgärder.

Den kan också användas för att skapa en rapport över alla variabler och parametrar som servern startas med, vilket kan vara användbart när man studerar servern i detalj och optimerar prestanda. Andra grafiska verktyg, som MySQL Administrator, låter dig inte bara se denna data, utan även modifiera den med ett användarvänligt gränssnitt. Men i fallet med en fjärrserver eller med begränsade resurser är det bäst att använda kommandoradskontroll. Dessutom eliminerar det grafiska gränssnittet inte behovet av att känna till och förstå syftet med att alternativen ändras.

Kommandoradsverktyget mysql är ett enkelt SQL-omslag (med funktionerna i GNU-projektets readline-bibliotek). Den stöder interaktiva och icke-interaktiva lägen. I interaktivt läge presenteras frågeresultat i ASCII-format. När det används i icke-interaktivt läge (till exempel som ett filter), presenteras resultatet i textformat med ett tabbtecken som avgränsare (utdataformatet kan ändras med kommandoradsalternativ). Skript kan köras enligt nedan:

Shell > mysql databas output.tab

Om du har problem på grund av brist på minne på en given klient, använd --snabbalternativet! Detta kommer att få mysql att använda funktionen mysql_use_result() istället för funktionen mysql_store_result() för att hämta den resulterande datahämtningen.

Att använda mysql är väldigt enkelt. Kör mysql databas eller mysql --user=användarnamn --password=ditt_lösenordsdatabas e. Skriv SQL-kommandot direkt på kommandoraden och avsluta det med ett av följande tecken: `;" , `\g" eller `\G" och tryck sedan på ``Enter"'-tangenten.

Kommandoradsverktyget mysql stöder följande alternativ:

Hjälp Visa hjälpinformation om hur du använder programmet och avsluta det. -A, --no-auto-rehash Inaktiverar automatisk rehash. rehash bör användas för att få hash för tabeller och fält. Detta gör att mysql startar snabbare. --prompt=... Ställer in en kommandotolk i det angivna formatet. -b, --no-beep Stänger av felpipet. -B, --batch Batch-utdata med ett tabbtecken som separator, varje rad på en ny rad. Historikfilen används inte. --character-sets-dir=... Katalog där teckenuppsättningar finns. -C, --compress Använd server-/klientprotokolldatakomprimering. -#, --debug[=...] Felsökningslogg. Standardvärdet är "d:t:o,/tmp/mysql.trace". -D, --database=... Namnet på databasen som ska användas. Används oftast i konfigurationsfilen `my.cnf'. --default-character-set=... Ställ in standardteckenuppsättningen. -e, --execute=... Kör kommandot och avsluta programmet (utdata som för --batch) -E, --vertical Skriv ut frågeresultat (strängar) vertikalt. Du kan producera utdata så här utan detta alternativ genom att avsluta kommandon med \G-tecken. -f, --force Fortsätt bearbeta även om ett SQL-fel påträffas . -g, --no-named-commands Stäng av namngivna kommandon Använd endast \*-kommandon, eller använd endast namngivna kommandon i början av en rad som slutar på `;" . Sedan version 10.9 startas klienten med detta alternativ, ingår standard! Med alternativet -g fungerar dock långa kommandon fortfarande från första raden. -G, --enable-named-commands Aktivera namngivna kommandon. Långa kommandon är tillåtna, såväl som förkortade kommandon som \*. -i, --ignore-space Ignorera mellanslag efter funktionsnamn. -h, --host=... Anslut till en databas på den angivna värden. -H, --html Skriv ut som HTML. -L, -- skip-line-numbers Hoppa över radnummer för fel. Användbart för att jämföra resulterande filer som innehåller felmeddelanden. --no-pager Inaktiverar personsökaren och skriver resultatet till stdout (på Unix). Se även kommandot \h (onlinehjälp). --no-tee Låser utdatafilen. Se även kommandot \h (onlinehjälp). -n, --unbuffered Rensa bufferten efter varje begäran. -N, --hoppa över kolumnnamn Hoppa över kolumnnamn i resultat. -O, --set-variable var=option Ställ in värdet på en variabel. Listan över använda variabler visas via --help. -o, --one-database Uppdatera endast standarddatabasen. Låter dig hoppa över andra databasuppdateringar i uppdateringsloggen. --pager[=...] Ställer in utdatatypen. Som standard är detta miljövariabeln PAGER. Dess möjliga värden är mindre, mer, cat [> filnamn], etc. Se även kommandot \h (onlinehjälp). Det här alternativet fungerar inte i batchläge. Personsökaren fungerar endast under Unix. -p, --password[=...] Lösenord som används vid anslutning till databasservern. Om lösenordet inte anges på kommandoraden, begärs det från användaren. När du använder den korta formen -p, lämna inte ett mellanslag mellan parametern och lösenordsvärdet. -P --port=... TCP/IP-portnummer att använda för anslutning. -q, --quick Cacha inte resultatet. Skriv ut det rad för rad när det kommer från servern. Detta kan sakta ner servern om utgången pausas. Historikfilen används inte. -r, --raw Visa kolumnvärden utan någon transformation. Används med --batch . -s, --tyst Tyst läge. Visa endast felmeddelanden. -S --socket=... Socketfil som används för anslutning. -t --table Mata ut resultatet i ett tabellformat. Ställ in som standard för icke-batchläge. -T, --debug-info Skriv ut lite felsökningsinformation när programmet avslutas. --tee=... Bifoga något till utdatafilen. Se även kommandot \h (onlinehjälp). Det här alternativet fungerar inte i batchläge. -u, --user=# MySQL användarnamn om denna användare inte är aktiv för närvarande. -U, --safe-updates[=#], --i-am-a-dummy[=#] Tillåt endast UPDATE- och DELETE-operationer med nycklar. Se nedan för mer information om denna inställning. Du kan återställa det här alternativet genom att ställa in argumentet --safe-updates=0 i konfigurationsfilen `my.cnf'. -v, --verbose Mer utförligt utdataläge (-v -v -v ger tabellutdataformat). - V , --version Visa versionsinformation och avsluta programmet -w, --wait Om anslutningen till servern har avbrutits, vänta och försök återställa den istället för att avbryta.

Du kan också ställa in följande variabler via kommandoradsalternativen -O eller --set-variable:

Om du skriver hjälp på kommandoraden kommer mysql-programmet att lista kommandona som det stöder:

Mysql> help MySQL-kommandon hjälp (\h) Visar den givna texten. ? (\h) Synonym för hjälp. clear (\c) Rensa kommando. ansluta (\r) Återanslut till servern. Ytterligare argument är db och host. redigera (\e) Redigera det aktuella kommandot med $EDITOR. ego (\G) Skicka det aktuella MySQL-kommandot till servern och visa resultatet vertikalt. avsluta (\q) Avsluta programmet. Samma som att sluta. go (\g) Skicka det aktuella MySQL-kommandot till servern. nopager (\n) Blockera personsökaren, skriv ut till standard. notee (\t) Lägg inte till poster i utdatafilen. personsökare (\P) Ställ in PAGER . Visa sökresultat via PAGER. print (\p) Skriv ut det aktuella kommandot. prompt (\R) Ändra promptformatet för mysql-kommandon. quit (\q) Avsluta programmet. rehash (\#) Återställ hashtabellen. source (\.) Kör SQL-skriptfilen. Ange ett filnamn som argument. status (\s) Få serverstatusinformation. tee (\T) Ställ in outfil-alternativet. Lägg till något till den givna utdatafilen. använd (\u) Använd en annan databas. Ange databasnamnet som ett argument.

Personsökarkommandot fungerar bara under Unix.

Resultatet av detta är följande:

  • Det är inte tillåtet att köra UPDATE- eller DELETE-kommandon om inte nyckelbegränsningar anges i WHERE-satsen. Du kan dock tvinga UPDATE / DELETE-kommandon att utföras med hjälp av LIMIT-satsen: UPDATE tabellnamn SET not_key_column=# WHERE not_key_column=# LIMIT 1;
  • Alla överdimensionerade resultat är begränsade till #select_limit# rader.
  • SELECT s som kan kräva mer än #max_join_size# radkombinationer för att exekvera kommer att avbrytas.

Några användbara tips för att använda mysql-klienten:

Vissa data är mer läsbara när de visas vertikalt istället för det vanliga horisontella utdatafönstret. Till exempel är text som är längre än den är bred och innehåller många rader ofta mycket lättare att läsa vertikalt.

Mysql> SELECT * FROM e-post WHERE LENGTH(txt) sbj: UTF-8 txt: >>>>> "Thimble" == Thimble Smith skriver: Thimble> Hej. Jag tycker att det här är en bra idé. Är det någon som känner till UTF-8 Thimble> eller Unicode? Annars kommer jag att "sätta in detta på min TODO-lista och se vad Thimble> händer. Ja, snälla gör det. Hälsningar, Monty-fil: inbox-jani-1 hash: 190402944 1 rad i set (0,09 sek)

  • Du kan använda tee-kommandoalternativen för att logga in. Det kan köras med alternativet --tee=... till mysql, eller interaktivt från kommandoraden med kommandot tee. All data som visas på skärmen kommer också att läggas till den angivna filen. Detta kan vara mycket användbart för programfelsökningsändamål. Tee-verktyget kan blockeras från kommandoraden med notee-kommandot. Att köra tee-kommandot igen kommer att aktivera loggning igen. Om parametern för tee-kommandot inte anges, kommer den föregående filen att användas. Observera att kommandot tee kommer att skriva resultaten till en fil efter varje kört kommando, precis innan kommandoraden visas för nästa kommando.
  • Alternativet --pager[=...] gjorde det möjligt att se eller söka resultat interaktivt med Unix-programmen mindre , mer eller liknande. Om du inte uttryckligen anger ett argument i den här parametern, kommer mysql-klienten att leta efter miljövariabeln PAGER och ställa in värdet på pager . Personsökarprogrammet kan också startas från den interaktiva kommandoraden med personsökarkommandot och stoppas med kommandot nopager. Kommandot kan ta ett argument, vilket är valfritt; pager kommer att ställas in på detta argument. pager-kommandot kan också anropas utan ett argument, men detta kräver användning av --pager-alternativet eller en lämplig standardinställning av stdout . Personsökarkommandot fungerar bara på Unix eftersom det använder popen()-funktionen, som inte är tillgänglig på Windows. Istället på Windows kan du använda tee-alternativet, även om det i vissa situationer är mindre bekvämt än att använda personsökarkommandot.
  • Några tips om kommandot pager: Det kan användas för att skriva till en fil: mysql> pager cat > /tmp/log.txt och resultaten kommer bara att skickas till en fil. Program som anropas av pager-kommandot kan acceptera alla giltiga alternativ: mysql> pager less -n -i -S Var särskilt uppmärksam på alternativet -S i exemplet ovan. Det kan vara till stor hjälp när du tittar på resultat. Prova med horisontell utmatning (avsluta kommandon med "\g", eller ";") och vertikal utmatning (i slutet av kommandon med "\G"). Mycket besvärliga utdataresultat är ibland svåra att läsa från skärmen, i det här fallet låter kommandot mindre med alternativet -S dig se resultaten interaktivt från vänster till höger, medan om linjer visas som är längre än skärmens bredd kommer deras produktion att fortsätta på en ny linje. Datautmatningen i sådana fall är mer läsbar. När du interaktivt anropar kommandot less med alternativet "-S", kan du växla dess driftläge (aktiverat/inaktiverat) från kommandoraden. För mer information om less, se beskrivningen av kommandot "h".
  • Sammanfattningsvis noterar vi (om du inte redan har förstått detta från de tidigare exemplen) att det är möjligt att kombinera mycket komplexa sätt att bearbeta resultat. Så i följande exempel kommer resultaten att skickas till två olika kataloger monterade på två olika hårddiskar under /dr1 och /dr2, och ändå kan resultaten ses på skärmen med kommandot less: mysql> pager cat | tee /dr1/tmp/res.txt | \ tee /dr2/tmp/res2.txt | mindre -n -i -S
  • Ovanstående funktioner kan också kombineras: genom att köra tee och ställa in pager på less kan du se resultaten med kommandot less Unix och ändå skriva till en fil. Skillnaden mellan Unix-verktygets tee som används av personsökarprogrammet och det inbyggda tee-kommandot i mysql-klienten är att det inbyggda tee-kommandot fungerar även om tee-verktyget inte är tillgängligt på Unix. Den inbyggda tee spelar också in allt som visas på skärmen, medan Unix tee-verktyget som används med personsökare inte gör mycket av det. Sist men inte minst är det interaktiva tee-kommandot mer praktiskt för att växla på/av driftlägen om du ibland behöver inaktivera den här funktionen när du skriver till en fil.

Du kan ändra promptformatet på mysql-klientens kommandorad.

Följande promptalternativ är tillgängliga:

Alternativ Beskrivning
\vmysql version
\dnamnet på databasen som ska användas
\hvärdnamn att ansluta till
\pportnummer genom vilket anslutningen görs
\uAnvändarnamn
\Uhela adressen [e-postskyddad]
\\ omvänt snedstreck `\"
\nnyradstecken
\ttabbstopp
\ Plats
\_ mellanrum med understreck
\Rmilitär tidszon (0-23)
\rtid enligt standardtidszonen (1-12)
\mminuter
\ytvå siffror i årtalet
\Yfyra siffror i året
\Dfullständigt datumformat
\ssekunder
\wveckodag i trebokstavsformat (mån, tis, ...)
\PAM/PM (am/pm)
\omånad i numeriskt format
\Omånad i trebokstavsformat (jan, feb, ...)
\cEn räknare som räknar antalet inmatade kommandon

Ett `\" följt av någon annan bokstav kompletterar helt enkelt den bokstaven.

Du kan ställa in promptalternativen på följande sätt:

I miljövariabler Du kan ställa in miljövariabeln MYSQL_PS1 för promptsträngen. Till exempel: shell> export MYSQL_PS1="(\ [e-postskyddad]\h)[\d]>" "my.cnf" `.my.cnf" Du kan ställa in promptalternativet i valfri MySQL-konfigurationsfil under mysql-gruppen. Till exempel: prompt=(\ [e-postskyddad]\h) [\d]>\_ På kommandoraden Du kan ställa in --prompt-alternativet från mysql-kommandoraden. Till exempel: shell> mysql --prompt="(\ [e-postskyddad]\h)[\d]>" ( [e-postskyddad]) > Interaktiv Du kan också använda kommandot prompt (eller \R) för att ändra promptinställningar interaktivt. Till exempel: mysql>prompt(\ [e-postskyddad]\h) [\d]>\_ PROMPT inställd på "(\ [e-postskyddad]\h) [\d]>\_" ( [e-postskyddad]) > ([e-postskyddad]) > prompt Återgå till original (standard) PROMPT-inställningar i mysql> mysql> verktyget

MySQL-serverinstallation och administration.

Installerar och kör MySQL för första gången.

Installation.

Att installera MySQL är ganska enkelt. Först måste du ladda ner och packa upp källorna (jag tycker att du inte ska skriva hur man gör detta). Du kan hitta dem på MySQL-webbplatsen i avsnittet - för alla smaker och för alla operativsystem, eftersom MySQL fungerar på nästan alla plattformar.

Om du arbetar på en Unix-plattform (i synnerhet kommer jag att ge exempel för Linux, som är något annorlunda för andra Unix-plattformar), måste du följa dessa steg:

shell> gunzip mysql-VERSION-OS.tar.gz | tar xvf -shell> ln -s mysql-VERSION-OS mysql shell> cd mysql shell> scripts/mysql_install_db shell> bin/safe_mysqld &

Du måste packa upp källorna till katalogen /usr/local, eftersom denna katalog indikeras i installationsskripten och en symbolisk länk för mysql-katalogen skapas - detta görs eftersom den här katalogen anges i samma skript. Du måste redigera skripten mysql_install_db och safe_mysqld i förhållande till ditt system, för att de ska börja fungera, i synnerhet fixa sökvägen för att indikera platsen för mysqld och databaser. För att starta mysqld-demonen måste du gå till katalogen /usr/local/mysql/bin och köra safe_mysql-skriptet i bakgrunden. - något är fel med skripten. Du kan konfigurera mysql-servern så att den startar vid datorns starttid För att göra detta måste du lägga till safe_mysql start i en av systeminitieringsfilerna (de är olika beroende på version av Linux). För Linux Slakware, lägg till följande i filen /etc/rc.d/rc.local:

/usr/local/mysql/bin/safe_mysqld &

Vad gäller Windows, som jag är ett fan av, så går installationen nästan utan problem här. Packa upp zip-arkivet, kör exe-filen och sedan fungerar allt av sig självt. Det installeras vanligtvis i c: mysql-katalogen. På Windows NT är MySQL installerat som en tjänst och du kan ange hur det startar manuellt eller automatiskt (Start-Settings-Control Panel-Services-MySQL-Startup).

Starta MySQL.

Servern hanteras vanligtvis från kommandoraden. Jag har redan skrivit om Linux, men på Windows 95/98, öppna en DOS-session och kör följande kommandon:

cd mysqlbin mysqlbin>mysqld --fristående

Detta kommando kommer att starta mysql-demonen i bakgrunden. Windows 95/98 ger inte möjlighet att köra mysqld som en tjänst.

När du startar mysqld kan du ange följande alternativ:

-?, --hjälpreferens
-b, --basedir=Sökväg till katalogen där mysql är installerat
-h, --datadirSökväg till katalogen där databaserna är lagrade.
-l, --log=Transaktionsloggnamn
-L, --språk=Standardspråk (vanligtvis engelska).
-P, --port=Port att ansluta.
--hoppa över-bidragstabellerIgnorera privilegietabeller. Detta ger vem som helst FULL tillgång till alla tabeller. Normala användare ska inte ges behörighet att köra mysqld.
-- skip-name-resolveTillåter dig att bara ge åtkomst till de värdar vars IP-adresser är listade i behörighetstabellerna. Används för en högre skyddsnivå.
--hoppa över nätverkAnvänd endast anslutningar via det lokala värdgränssnittet.
-V, --versionVisa versionsinformation.

Nu kan du försöka logga in på servern. För att göra detta, använd mysql-kommandot. Till en början finns det en enda användare som har rätt att logga in - rot, som inte har något lösenord. Det första du ska göra är att logga in som root och ställa in ett lösenord för det. Kommandot mysql kan använda följande alternativ:

Notera. Kommandona mysqld och mysql har några andra alternativ, men de är inte av särskilt intresse för tillfället.

Efter att ha ställt in lösenordet för root måste du starta om servern med kommandot mysqladmin reload för att ändringarna ska träda i kraft. Efter det kan du försöka logga in igen:

mysqlbinmysql -u root -p mysql Ange lösenord:*******
Om du fick en mysql monitor prompt så fungerar allt korrekt.Du kan börja sätta upp privilegietabeller, skriva in nya användare, skapa databaser och tabeller, det vill säga göra allt som heter administration Mer om allt detta senare.

Privilegesystem och säkerhet i MySQL.

mysql-databas och privilegietabeller.

Så du har loggat in på mysql-databasen, som används för att administrera servern. Vad finns här? Och det finns 5 tabeller här, som inte skiljer sig från andra databastabeller, förutom att dessa tabeller används för att ge tillgång till databaser data och tabeller i dem till användarna. Överväg var och en av dem.

Ange följande kommando som visar tabellerna i mysql-databasen:

mysql>visa tabeller;
tables_in_mysql
columns_priv
db
värd
tables_priv
användare

Låt oss ta en snabb titt på funktionerna i var och en av tabellerna:

  • användare
    Anger om användaren som försöker ansluta till servern får göra det. Innehåller användarnamn, lösenord och privilegier. Om du anger kommandot visa kolumner från användaren;, då får vi följande:
    fälttypNullnyckel-StandardExtra
    Värdröding(60) PRI
    användarechar(16) PRI
    Lösenordchar(8)
    select_privchar(1) N
    Insert_privchar(1) N
    Update_privchar(1) N
    delete_privchar(1) N
    Skapa_privchar(1) N
    Drop_privchar(1) N
    Reload_privchar(1) N
    Shutdown_privchar(1) N
    process_privchar(1) N
    File_privchar(1) N

    Till en början innehåller denna tabell root-användaren med lösenordet du ställt in och värdnamnet "%". Som standard kan root logga in från vilken värd som helst, har full behörighet och tillgång till alla databaser. Tabellen innehåller även en post för användaren "%", som måste tas bort omedelbart, eftersom det ger åtkomst till alla användare.

    radera från användare där user="%";

    För att lägga till en ny användare, gör följande:

    infoga i användarvärden (värd,användare,lösenord) ("%.domain.com","john",password("df456"); infoga i användarvärden (värd,användare,lösenord) ("localhost, "mary", lösenord("kök"); välj värd, användare, lösenord från användare;
    VärdanvändareLösenord
    % rot456g879k34df9
    %.domain.comJohn657t234d980hg6
    lokal värdmary234d76gh88rt9

    Förklaringar:

    1. Kommandot infoga infogar data i tabellen, glöm inte att avsluta kommandona med ";".
    2. När du anger ett lösenord, använd funktionen password(), annars fungerar inte lösenordet!
    3. Alla lösenord är krypterade med mysql, så du ser floskler i fältet Lösenord, detta görs av säkerhetsskäl.
    4. Det är inte bra att tilldela privilegier till användare i användartabellen, eftersom de i detta fall är globala och gäller alla databaser.Ge privilegier till varje användare till en specifik databas i db-tabellen, vilket kommer att diskuteras härnäst.
    5.När du ställer in värdnamnet för nätverksinloggning, rekommenderas det att explicit specificera det fullständiga värdnamnet, och inte "%"-undernät för ökad säkerhet.


  • Anger vilka databaser till vilka användare och från vilka värdar åtkomst tillåts. I den här tabellen kan du ge varje användare åtkomst till databaser och tilldela privilegier. Om du kör kommandot visa kolumner från db; vi får följande:
    fälttypNull StandardExtra
    Värdröding(60) PRI
    Dbchar(32) PRI
    användarechar(16) PRI
    select_privchar(1) N
    Insert_privchar(1) N
    Update_privchar(1) N
    delete_privchar(1) N
    Skapa_privchar(1) N
    Drop_privchar(1) N

    Som standard är alla privilegier inställda på "N". Till exempel, låt oss ge användaren john tillgång till biblioteksdatabasen och ge honom privilegier för att välja, infoga och uppdatera (beskrivningen av de grundläggande mysql-kommandona kommer att ges i ett separat avsnitt, nu är mitt mål att visa hur tabeller fungerar privilegier).

    infoga i db (värd, användare,db,select_priv,insert_priv,update_priv) värden ("%domain.com","john","bibliotek","Y","Y","Y");

    Behörigheterna som ställs in på db-tabellen gäller endast för biblioteksdatabasen. Om du ställer in dessa privilegier på användartabellen kommer de även att gälla för andra databaser, även om åtkomst till dem inte är explicit inställd.

  • Värd

    Värdtabellen används för att utöka åtkomstomfånget i db-tabellen. Om till exempel mer än en värd ska ges åtkomst till en databas ska värdkolumnen i db-tabellen lämnas tom och den nödvändiga värddatorn namn ska anges i värdtabellen. Utför kommandot visa kolumner från värd;

    fälttypNullnyckel-StandardExtra
    Värdröding(60) PRI
    Dbchar(32) PRI
    select_privchar(1) N
    Insert_privchar(1) N
    Update_privchar(1) N
    delete_privchar(1) N
    Skapa_privchar(1) N
    Drop_privchar(1) N

Som du kan se av tabellen kan du här även ställa in privilegier för åtkomst till databasen.De används vanligtvis sällan i onödan.Alla åtkomstprivilegier måste ställas in i db-tabellen för varje användare och i värdtabellen listas endast värdnamn. Servern läser alla tabeller, kontrollerar användarnamn, lösenord, värdnamn, databasnamn, privilegier. Om privilegierna för select, insert sätts till "Y" i db-tabellen och till "N" i värdtabellen, sedan till slut användaren kommer fortfarande att få "Y". Förvirrande, det är bättre att tilldela privilegier på db-tabellen.

Dessa 3 tabeller är de viktigaste. I nya versioner av MySQL, från och med 3.22, har ytterligare 2 tabeller lagts till - tables_priv och columns_priv, som låter dig ange åtkomsträttigheter till en specifik tabell i databasen och till och med till en specifik kolumn. De fungerar som en db-tabell, de refererar bara till tabeller och kolumner. Sedan version 3.22 kan du också använda kommandot GRANT för att ge åtkomst till databaser, tabeller och tabellkolumner, vilket eliminerar behovet av att manuellt ändra tabellerna db, tables_priv och columns_priv. GRANT-kommandot kommer att diskuteras i detalj i det följande sektioner.

Privilegier beviljade av MySQL.

Privilegium Kolumn Var används
Välj select_privtabeller
Föra in Insert_privtabeller
uppdatering Update_privtabeller
radera delete_privtabeller
index Index_privtabeller
ändra Alter_privtabeller
skapa Skapa_privDB, tabeller, index
släppa Drop_privDB eller tabeller
bevilja Grant_privDB eller tabeller
referenser Referenser_privDB eller tabeller
ladda om Reload_privserveradministration
stänga av Shutdown_privserveradministration
bearbeta process_privserveradministration
fil File_privtillgång till filer på servern

Välj-används för att extrahera information från tabeller. Select kan också användas utan tillstånd för att komma åt någon databas, såsom en miniräknare.

Föra in-används för att infoga information i en tabell. Till exempel:

Radera-används för att ta bort information från tabeller.

Skapa- låter dig skapa databaser och tabeller i dem. Exempel:

mysql>mysqladmin -u john -ptest skapa mydb //Skapar en tom databas. mysql>använd mydb; databasen ändrats. skapa tabellövervakning (id int(5) inte null auto_increment, first_name varchar(15) inte null, efternamn varchar(20) inte null, adress varchar(80) inte null, primärnyckel (id), nyckel(last_name));

Släppa-används för att ta bort tabeller och databaser.

Bevilja-låter en användare ge andra användare privilegier som han själv har Två användare med olika privilegier och GRANT privilegier kan kombinera sina behörigheter.

Index- låter användaren skapa och ta bort index.

Fil- En användare med denna rättighet kan utföra kommandon LOAD DATA INFILE och SELECT...INTO OUTFILE och kan läsa och skriva vilken fil som helst på MySQL-servern.

De sista 3 privilegierna används för att administrera servern från kommandot mysqladmin.

MySQL specialanvändare.

Det finns 3 speciella användare i MySQL: monty, admin och dummy.

  • monty

    Superanvändare. Kan logga in på servern från antingen den lokala värden eller vilken värd som helst på nätverket. Har tillgång till alla databaser och alla privilegier, men om root kan logga in utan lösenord för första gången måste monty använda ett lösenord och måste vara läggs till tabellernas rättigheter manuellt.

    Det bör noteras att data måste anges för både localhost och "%", det vill säga vilken värd som helst i nätverket.

  • administration

    En användare som kan logga in på servern från den lokala värden utan lösenord och som tilldelas administrativa rättigheter Ladda om och bearbeta.admin-användare kan använda kommandon mysqladmin ladda om, mysqladmin uppdatera och mysqladmin flush-*,såväl som mysqladmin processlista.

    admin har inte tillgång till databaser. Behörigheter för åtkomst till vissa databaser måste tilldelas individuellt, antingen i db-tabellen eller med kommandot GRANT.

  • dummy

    En användare som kan logga in på servern utan lösenord, men bara från localhost. Alla globala privilegier är inställda på "N" utom "USAGE", vilket tillåter dummy att skapa användare utan privilegier. Databasåtkomsträttigheter måste ställas in med root.

Skapa och modifiera databaser och tabeller i MySQL.

Skapande av databas.

Att skapa en databas i MySQL görs med hjälp av verktyget mysqladmin.Initialt finns det bara en mysql-databas för administratören och en testdatabas, som kan nås av alla användare och som är tom som standard.Exemplet nedan illustrerar skapandet av en databas.

Eller, i en annan databas, till exempel i mysql, skriv in kommandot:

mysql>use data1 Databasen ändrad.

Nu kan du skapa tabeller och ange information.

Datatyper i MySQL.

Innan du skapar tabeller måste du veta vilka datatyper som MySQL stöder. Alla presenteras i följande tabell:

BIGINT[(längd)]8 byte heltal
KLICKBinärt objekt (maximal längd 65535 byte)
CHAR(NUM)Fast längd sträng (1DATUMLagrar datuminformation. Använder formatet "ÅÅÅÅ-MM-DD". Kan modifieras som en sträng eller nummer. ÅÅÅÅ-MM-DD ("- " kan vara ALLA icke-siffriga) ÅÅ-MM-DD ("- " kan vara ALLA icke-siffriga) ÅÅMMDD ÅÅMM Intervallet för denna datatyp är 0000-00-00 till 9999-12 -31. Till skillnad från TIMESTAMP accepterar DATE år som två siffror från 0000 till 0099. Detta är inte särskilt användbart i de flesta fall. Använd fyrsiffriga årtal i DATE-fälten. DATE-typen är 4 byte lång.
DATUM TIDUnion av typerna DATUM och TID. DATETIME-typen är identisk med TIMESTAMP-typen med följande undantag: När en post infogas i en tabell som innehåller fält av DATETIME-typen, ändras inte DATETIME-fältet. Område för ett DATETIME-typfält: "0000-01-01 00:00:00" - "9999-12-31 23:59:59" när det används i strängsammanhang och "000000000000000" - "99991231235959" när det används i nummer sammanhang . DATETIME-typen är 8 byte lång.
DECIMAL (längd, minskning)Decimalt flyttal.
DUBBEL [(längd, dec)]Antal (4 eller 8 byte) med dubbel precision med en maximal längd och ett fast antal decimaltal.
FLYTTA [(precision)]Flyttal. FLOAT(4) och FLOAT enkel precision. FLOAT(8) ger dubbel precision.
FLYTTA [(längd, decimaler)]Ett enda precisionsnummer med en maximal längd och ett fast antal decimaler (4 byte).
INT[(längd)]Heltal (4 byte).
HELTAL[(längd)]Heltal 4 byte
LÅNGBLOBEtt binärt objekt med en maximal längd på 2**32 byte.
MEDELBLÅTTEtt binärt objekt med en maximal längd på 16777216 byte.
MEDIUMINT[(längd)]Heltal (3 byte).
REAL[(längd,dec)]Identisk med DOUBLE (8 byte).
SMALLINT[(längd)]Heltal (2 byte).
LITEN BLÅTTEtt binärt objekt med en maximal längd på 255 byte.
TINYINT[(längd)]Heltal (1 byte).
VARCHAR(NUM)Sträng med variabel längd (1TIDLagrar tidsinformation. Använder formatet "TT:MM:SS". Kan användas som sträng eller nummer. MySQL TIME-typen förstår följande syntax. TT:MM:DD TTMMDD TTMM TT Datatypen TIME är 3 byte lång.
TIMESTAMP(NUM)Ändrar automatiskt vid infogning/uppdatering. Den har formatet ÅÅMMDDHHMMSS eller ÅÅÅÅMMDDHHMMSS. Du kan ändra TIMESTAMP-fältet när du gör en INSERT. Detta är användbart när du vill ställa in ett anpassat datum/tid för en post. Under ändringar får du inte ange ett värde för ditt TIMESTAMP-fält, eller ange NULL som ett värde, att infoga. Annars får du ett ogiltigt värde för detta fält. När du använder mysql med ODBC och Access måste du använda värdet 14 för NUM eftersom detta gör att MySQL alltid använder fyra siffror i år. Ett värde på 12 gör att MySQL använder två siffror för året. Standardvärdet är 14. Observera att i fallet med tabeller med flera TIMESTAMP-fält, kommer endast det första sådana fältet att uppdateras automatiskt.

Skapa och modifiera tabeller.

Låt oss skapa kundtabellen i data1-databasen:

mysql>use data1 Databasen ändrad. mysql>skapa tabellkunder (emp_id int(4) inte null auto_increment, emp_name varchar(10) inte null, emp_lname varchar(15) inte null, adress varchar(60) inte null, phone int(10), primärnyckel(emp_id) );

Vi har skapat en tom tabell. Det finns flera sätt att mata in data i den:
a) manuellt med kommandot Sätt in i;
b) ladda data från en textfil, vilket är mer att föredra, speciellt om du behöver ange flera tusen poster. Syntaxen för detta kommando kommer att beskrivas senare.
c) använd mysqlimport-verktyget för att också ladda data från en textfil.

Ett exempel på att mata in data manuellt:

Rörande auto_increment i en kolumn emp_id, betyder detta att det numeriska värdet för denna kolumn automatiskt kommer att öka med ett för varje ny post. Det vill säga om vi skrev in värdet 1001, så blir nästa 1002, etc. Värdet i en sådan kolumn skrivs in en gång för att ställ in startpunkten, och vidare kommer servern att ersätta de nödvändiga värdena.

Syntax för kommandot LOAD DATA INFILE.

DATAINFIL "file_name.txt" I TABELL tbl_name OMSLUTAD AV ""] ] [(kolnamn,...)]

Anta att det finns någon textfil 123.txt som innehåller 2000 poster som ska matas in i en tabell. Du vill skapa en tabell som har samma struktur och samma antal fält som filen (och lämpliga datatyper). Antag att fälten i Filen avgränsas med kommatecken. Dessutom måste filen finnas i rätt databas. Vi anger följande kommando:

LADDA DATAINFIL "123.txt" i tabellkundsfält som avslutas av ",";

Det är allt. Data från filen placeras i en tabell.

Kommandon används för att ändra tabeller och data i dem. uppdatera och ändra tabell. Låt oss överväga deras effekt på exemplet med kundtabellen:

Kunder
emp_idemp_nameemp_lnameadresstelefon
1001 JohnrollatorNew York1235468798
1002 RäkningenSmedChicago7650945237
1003 JackNicolsonDallas9874325097

Exempel på kommandoåtgärd ändra tabell:

Du kan kolla själv :)

Att ändra data i tabeller görs med kommandot uppdatering.Till exempel, låt oss ta samma köpartabell.

mysql>update buyers set address="Seattle" där emp_lname="Smith";

Kommandon används också för att ändra tabeller. Släpp och ta bort.

Radera-tar bort en rad från tabellen, till exempel om du anger kommandot
radera från köpare där emp_id="1002"

raden för Bill Smith kommer att tas bort.

Släppa-om den används i Alter-tabellen tar kolumnen bort från tabellen.

Kommando Släppa används också för att radera tabeller och databaser. Använd det försiktigt, eftersom alla raderingar är oåterkalleliga kan du bara återställa data från en säkerhetskopia.

Vanliga problem och deras lösning.

Det vanligaste problemet är budskapet Åtkomst nekad för användare... Om detta är en vanlig användare kan administratören hantera detta, men om administratören får ett sådant meddelande är detta redan ett problem. Mycket ofta, när man ställer in ett lösenord för root, glömmer administratören att använda funktionen Lösenord() utan skriver bara in:

uppdatera användaruppsättning lösenord="mamamia" där user="root";

Efter det, när han försöker komma in i databasen, får han meddelandet Access nekad. Ett sådant lösenord kommer inte att läsas. Korrekt måste du ange:

uppdatera användaruppsättning lösenord=lösenord("mamamia") där user="root";

Detta är ett mycket viktigt steg och du måste vara försiktig. Den enda utvägen i detta fall i Windows är att avinstallera servern och installera den på en ny, eftersom ingenting har konfigurerats ännu.

Om en användare upplever det här problemet är det troligt att behörighetstabellerna är felaktigt inställda, i första hand samma lösenordsinställning, eller att posterna i db- och värdtabellerna är felaktiga. Betrakta detta med ett enkelt exempel:

användare
Värd%.domain.com
användarejerry
Lösenord378b243hk8796
select_privY
Db
Värd%.domain.com
Dbdata1
användarejerry
Insert_privY
select_privY
Update_privY
delete_privY
Tabellerna innehåller information för användaren jerry. Som du kan se kan jerry logga in över nätverket från vilken dator som helst på domänen domain.com genom att ange hans namn och lösenord. Servern läser användartabellen, bestämmer namn och lösenord som matchar , sedan Db-tabellen som anger vilka databaser som får komma åt. Om allt stämmer får jerry tillgång till databasen data1. I denna databas kan jerry se information i tabeller, lägga ny data där, ändra innehållet i rader och ta bort rader Om han vill skapa en ny tabell kommer han att få ett meddelande nekad åtkomst eftersom den inte har behörighet att skapa tabeller.

En mycket viktig nyans: i användartabellen för jerry indikeras Select-behörigheten, som är global, det vill säga den är giltig för vilken databas som helst, även om den inte har tillgång till den. Till exempel, om jerry anger kommandot :

välj * från data2.authors;

han kommer att ha tillgång till denna tabell, även om Db-tabellen inte har tillgång till databasen data2. Därför är det, utan särskilt behov, inte nödvändigt att ge användarna privilegier i User-tabellen, utan att göra det i Db-tabellen för varje specifik databas.

Anta att jerry tillfälligt arbetar på en annan avdelning som är i en annan domän, och när han försöker komma åt databasen får han tillgång nekad eftersom datorer i den domänen inte får åtkomst till databasen. I det här fallet måste du göra följande: rensa fältet värd i tabellen Db och ange följande data i värdtabellen:

uppdatera db set host="" där user="jerry";
infoga i värdvärden (värd,db) värden("%.domain.com","data1");
infoga i värdvärden (host,db) ("monster.domain2.com", "data1");

Behörigheter behöver inte anges i värdtabellen. Huvudsaken är att data i privilegietabellerna inte dupliceras någonstans så att det inte finns några motsägelser. Data för användarnamn och lösenord ska tilldelas i användartabellen, privilegier i tabellen Db, värdar från vilka åtkomst är tillåten , i tabellen Host Om du anger allt noggrant borde det inte vara några problem.

MySQL version 3.22 och senare har ett mycket trevligt GRANT-kommando som låter dig ge användare åtkomst till databaser och tabeller utan att manuellt ändra grantningstabeller.

BETYD välja, infoga uppdatering, radera på data1.telefon till [e-postskyddad]%.domain.com identifieras med "lösenord";

Med det här kommandot kan du ange åtkomstbehörigheter även till vissa kolumner i en tabell:

GRANT välj(id,namn,adress,telefon),uppdatering(adress,telefon) på data2.kunder till [e-postskyddad]%.domain.com identifieras med "lösenord";

Genom att använda detta kommando placeras data automatiskt i tabellerna Db, Tables_priv och Column_priv, vilket eliminerar behovet av manuell modifiering.

Om du behöver återkalla en behörighet från en användare, använd kommandot REVOKE.

REVOKE uppdatering(adress,telefon) på data2.kunder från [e-postskyddad]%.domain.com;

Databasfrågor och kommandot Välj.

Jag tänker inte fördjupa mig i studiet av SQL-språket, du kan läsa om detta i vilken SQL Server-manual som helst, MySQL stöder i princip alla grundläggande kommandon i ANSI 92-standarden, men kommandot Välj förtjänar att ägna ett separat kapitel åt det. Kommandot Select används för att fråga en databas för att extrahera information från den. Kommandosyntaxen är som följer:

SELECT select_expression,... , ...] MED full_where_definition-rader] ]

Som du kan se av ovanstående används nyckelord tillsammans med kommandot Select, vars användning i hög grad påverkar serverns svar. Låt oss titta på var och en av dem.

  • DISTINKT..

    Hoppar över rader där alla valda fält är identiska, d.v.s. eliminerar duplicering av data.

  • VAR.

    En sats i Select-kommandot som låter dig ställa in predikat vars villkor kan vara sant eller falskt för valfri rad i tabellen. Endast de rader för vilka ett sådant påstående är sant hämtas. Till exempel:

    VÄLJ u_id,lname från utgivare WHERE stad ="New York";

    Returnerar kolumnerna u_id och lname från utgivartabellen vars värde finns i kolumnen stad-New York. Detta gör att frågan kan vara mer specifik.

  • relationsoperatörer.

    En relationsoperator är en matematisk symbol som indikerar en specifik typ av jämförelse mellan två värden. De relationsoperatorer som är tillgängliga i MySQL är:

    Lika med > Större än = Större än eller lika med Inte lika med

    Dessa operatorer har standardbetydelser för numeriska värden.

    Anta att du vill se alla kunder med ett betyg högre än 200. Eftersom 200 är ett skalärt värde, som värdet i klassificeringskolumnen, kan du använda en relationsoperator för att jämföra dem.

    VÄLJ * FRÅN Kunders WHERE-betyg > 200;

  • booleska operatorer.

    Grundläggande booleska operatorer känns också igen i MySQL. Booleska uttryck är antingen sanna eller falska, som predikat. Booleska operatorer binder ett eller flera sant/falskt värden och producerar ett enda sant eller falskt värde. De booleska standardoperatorerna som känns igen i SQL är: AND, OR och NOT.

    Låt oss säga att du vill se alla kunder i Dallas som har ett betyg över 200:

    VÄLJ * FRÅN kunder VAR stad = "Dallas" OCH betyg > 200;

    När du använder AND-operatören måste båda villkoren uppfyllas, det vill säga alla kunder från Dallas vars betyg är större än 200 måste väljas.

    När du använder OR-operatorn måste ett av villkoren vara uppfyllt. Till exempel:

    VÄLJ * FRÅN kunder WHERE stad = "Dallas" ELLER betyg > 200;

    I det här fallet kommer alla kunder från Dallas och alla med ett betyg över 200 att väljas, även om de inte är från Dallas.

    NOT kan användas för att invertera booleska värden. En exempelfråga med NOT:

    VÄLJ * FRÅN kunder VAR stad = "Dallas" ELLER INTE betyg > 200;

    Den här frågan kommer att välja alla kunder i Dallas och alla kunder vars betyg är mindre än 200. I den här frågan tillämpas NOT-operatorn endast på uttrycket betyg > 200. Du kan göra en mer komplex fråga:

    VÄLJ * FRÅN kunder WHERE NOT(stad = "Dallas" ELLER betyg > 200);

    I den här frågan tillämpas NOT på båda uttrycken inom parentes. I det här fallet läser servern uttrycken inom parentes, bestämmer om stad = "Dallas" är sant eller betyg > 200. Om något av villkoren är sant är det booleska uttrycket inom parentesen Sann. Men om det booleska uttrycket inom parentesen är sant, är predikatet som helhet falskt, eftersom NOT konverterar sant till falskt och vice versa. Det vill säga alla icke-Dallas-kunder med ett betyg mindre än 200 kommer att väljas.

  • I.

    IN-operatorn definierar en uppsättning värden där ett givet värde kan inkluderas eller inte. Till exempel en fråga

    VÄLJ * FRÅN Säljare VAR stad = "Barcelona" ELLER stad = "London";

    kan skrivas om enklare:

    VÄLJ * FRÅN Säljare VAR stad IN ("Barcelona", "London");

    IN definierar en uppsättning värden med hjälp av namnen på medlemmarna i uppsättningen, omgivna inom parentes och separerade med kommatecken. Den undersöker sedan de olika värdena för den specificerade, letar efter en matchning med värdena i uppsättningen . Om detta händer är predikatet sant. När uppsättningen innehåller siffervärden och inte tecken, utelämnas de enskilda citattecken.

  • MELLAN.

    MELLAN-operatorn liknar IN-operatorn. Till skillnad från att specificera med siffror från en uppsättning, som IN gör, definierar BETWEEN ett intervall vars värden måste minska för att göra predikatet sant. Du måste ange nyckelordet BETWEEN med ett startvärde, ett AND-nyckelord och ett slutvärde. Till skillnad från IN är BETWEEN ordningskänsligt och det första värdet i satsen måste vara det första värdet i alfabetisk eller numerisk ordning. Till exempel:

    VÄLJ * FRÅN Säljare VAR komm. MELLAN .10 OCH .12;
    VÄLJ * FRÅN Säljare VAR stad MELLAN "Berlin" OCH "London";

  • TYCKA OM.

    LIKE gäller endast för fält av typen CHAR eller VARCHAR som det används för att hitta delsträngar. De där. den söker i teckenfältet för att se om en del av dess sträng matchar villkoret. Som villkor använder den jokertecken - specialtecken som kan matcha vad som helst. Det finns två typer av jokertecken som används med LIKE:

      understrecket (_) ersätter varje enskilt tecken.

    • "%"-tecknet, som ersätter valfritt antal tecken.

    Om vi ​​ställer följande villkor:

    VÄLJ * FRÅN kunder VAR fname SOM "J%";

    då kommer alla kunder vars namn börjar med J: John, Jerry, James, etc. att väljas.

  • RÄKNA.

    En aggregerad funktion som räknar värdena i en kolumn eller antalet rader i en tabell. När du arbetar med en kolumn använder den DISTINCT som argument:

    VÄLJ ANTAL (DISTINKT snum) FRÅN order;

    När man räknar rader har den syntaxen:

    VÄLJ ANTAL (*) FRÅN kunder;

  • GRUPP AV.

    GROUP BY-satsen låter dig definiera en delmängd av värden i ett visst fält i termer av ett annat fält och tillämpa en aggregatfunktion på delmängden. Detta gör det möjligt att kombinera fält och aggregerade funktioner i en enda SELECT-sats. Anta till exempel att du vill hitta det högsta antalet inköp som varje säljare har tagit emot. Du kan göra en separat fråga för var och en av dem genom att välja MAX() från tabellen för varje fältvärde. GROUP BY låter dig lägga dem alla i ett kommando:

    VÄLJ snum, MAX (amt) FRÅN Beställningar GRUPP EFTER snum;

  • HAR.

    HAVING definierar kriterierna som används för att ta bort vissa grupper från utdata, precis som WHERE-satsen gör för enskilda rader. Till exempel:

    SELECT cid,cname,price,max(price) //max() är också en aggregerad funktion FRÅN kunder SOM HAR max(pris)>500;

    HAVING fungerar på samma sätt som WHERE, men aggregerade funktioner kan inte användas med WHERE.

  • SORTERA EFTER.

    Detta kommando beställer frågeutmatningen enligt värdena i antalet valda kolumner. Flera kolumner ordnas inuti varandra, precis som med GROUP BY.

  • EXISTERAR.

    Används i delfrågor.

    VÄLJ cnum, cname, stad FRÅN kunder VAR FINNS (VÄLJ * FRÅN kunder VAR stad = "San Jose");

    Den tar underfrågan som ett argument och utvärderar den som sann om den producerar någon utdata eller som falsk om den inte gör det. Detta skiljer sig från andra predikatsatser genom att det inte kan vara okänt. Till exempel kan vi bestämma om vi ska extrahera vissa data från tabellen Kunder om, och endast om, en eller flera av kunderna i den tabellen finns i San Jose.

  • UNION.

    UNION skiljer sig från underfrågor genom att ingen av de två (eller flera) frågorna styrs av en annan fråga. Alla förfrågningar exekveras oberoende av varandra och deras utdata är redan kombinerade. Till exempel:

    SELECT snum, sname FRÅN Säljare WHERE stad = "London" UNION SELECT cnum, cname FRÅN Kunder WHERE stad = "London";

    UNION-satsen kombinerar utdata från två eller flera SQL-frågor till en enda uppsättning rader och kolumner.

  • DESC,ASC.

    DESC-DESCEDENT Visar data i omvänd ordning (alfabetisk och numeriskt) Standard är ASC.

Tja, det är allt i ett nötskal MySQL stöder nästan alla huvudkommandon i SQL Server, så du kan läsa mer om kommandot SELECT i vilken lärobok som helst i SQL-språket.

Grundläggande MySQL-verktyg.

MySQL-distributionen innehåller följande verktyg:

mysqladmin

Ett verktyg för att administrera servern. Kan användas av administratören, såväl som av vissa användare som har beviljats ​​vissa privilegier, t.ex. Reload_priv, Shutdown_priv, Process_priv Och File_priv.Detta kommando kan användas för att skapa databaser, ändra en användares lösenord (administratören kan ändra lösenordet för vilken användare som helst, men en vanlig användare kan bara ändra sitt eget), starta om och stoppa servern, se listan över processer som körs på servern . Mysqladmin stöder följande kommandon:

Ett exempel på hur man använder mysqladmin för att ändra ett lösenord:

mysqladmin -u bob lösenord srawberry

Observera att om du använder mysqladmin för att ställa in lösenordet behöver du inte använda funktionen password() Mysqladmin tar hand om krypteringen av lösenordet.

mysqlaccess

Används för att kontrollera användarens behörighet att komma åt en viss databas. Allmän syntax:

mysqlaccess-alternativ

Ett användbart verktyg för att kontrollera en användares åtkomsträttigheter om de får ett Åtkomst nekad-meddelande när de försöker ansluta till en databas.

Alternativ:

mysql show

Används för att visa vilka databaser servern arbetar med, vilka tabeller varje databas innehåller och vilka kolumner varje tabell har. Syntax:

mysqlshow [alternativ] ]]

Mysqlshow kan använda följande alternativ:

Om du skriver in mysqlshow utan argument kommer alla databaser att visas, om du anger ett databasnamn kommer alla tabeller i den att visas.

mysqldump

Används för att dumpa innehållet i en databas (säkerhetskopia). Du kan skriva innehållet i en databas till en fil. Syntax:

mysqldump [alternativ] ]]

Mysqldump kan använda följande alternativ:

Isamchk

Med det här verktyget kan du återställa tabeller, hantera tabeller och samla in statistik. Syntax:

isamchk [-?adeiqrsvwzIV] [-k #] [-O xxxx=storlek] [-Si] [-Sr #] [-O keybuffer=#]
[-O readbuffer=#] [-O writebuffer=#] [-O sort key blocks=#] filer

Isamchk används för att kontrollera konsekvensen av tabeller och felsöka problem som kan orsaka. Om användaren ofta tar bort och lägger till data i tabeller kommer detta verktyg att vara mycket användbart. Isamchk kan använda följande alternativ:

När du använder alternativet -r måste du stoppa mysqld Innan du börjar måste du byta till katalogen där tabellen som behöver kontrolleras eller repareras finns.

isamlog

Transaktionsloggen, som används med alternativet --log-isam=file_name för mysqld-demonen. En fil registrerar alla ändringar som sker i databasen. Kan användas för att återställa databasen. Om det finns en säkerhetskopia av databasen innan isam-loggen genererades kan informationen enkelt återställas. Om det inte finns någon kopia ska alla loggar från början av databasen användas.

Safe_mysqld

Skript för att starta mysqld-demonen på Unix-versioner. Körs vid systemstart. För att starta automatiskt måste du lägga till en post i en av systeminitieringsfilerna.

Webbplatsutveckling | |

Det är möjligt inte bara genom PHP. MySQL levereras med en konsolklient för anslutning till MySQL-servern. Konsol - detta betyder att programmet inte har ett fönstergränssnitt, utan bara ett kommandoradsgränssnitt där databaser nås med hjälp av SQL-frågor.

Kommandona för att ansluta till MySQL på kommandoraden, och ännu mer själva SQL-frågorna, är identiska för . I det följande kommer jag för korthetens skull att skriva "MySQL", men överallt menar jag "MySQL eller MariaDB", eftersom det i det här fallet inte är någon skillnad mellan dem.

Genom att ansluta via kommandoraden till MySQL DBMS kan du utföra en mängd olika uppgifter: visa databaser och deras tabeller, skicka frågor till databaser och få resultaten av dessa frågor.

För att ansluta till MySQL-servern används ett klientprogramkommando som heter mysql.exe. Det måste startas, men det måste inte göras genom att dubbelklicka, som ett vanligt program, utan från kommandoraden.

Låt oss börja med att trycka på tangentkombinationen win+r och gör

En kommandotolk öppnas.

Nu måste vi gå till mappen med filen mysql.exe. Denna mapp bin i katalogen där din MySQL-databas är installerad. Till exempel har jag MariaDB installerat i mappen C:\Server\bin\mariadb\. Därför finns filen vi är intresserade av i katalogen C:\Server\bin\mariadb\bin\. För att byta till den här katalogen, använd kommandot CD på följande sätt:

Cd C:\Server\bin\mariadb\bin\

I det här kommandot, ersätt C:\Server\bin\mariadb\bin\ med rätt sökväg för ditt system

Låt oss nu köra filen mysql.exe. Det är inte nödvändigt att ange filtillägget .exe - systemet själv kommer att gissa vad vi menar. Vi måste också använda alternativet -u Och -s. Efter det första alternativet måste du ange användarnamnet − rot. Efter det andra alternativet är lösenordet för användaren. I mitt fall är inget lösenord inställt, så jag kör utan alternativet -s:

MySQL -u rot

Det kanske inte verkar som att mycket har förändrats, men den nya kommandoraden

MariaDB [(ingen)]>

säger att vi är anslutna till MySQL-servern. Mer exakt, i mitt fall är vi anslutna till MariaDB-servern.

För att se listan över databaser, skriv in kommandot:

VISA DATABASER;

För att skicka efterföljande förfrågningar till en specifik databas (till exempel för att testa), använd kommandot ANVÄNDA SIG AV:

ANVÄNDNINGStest;

För att visa tabellerna i den valda databasen, kör kommandot:

VISA TABELLER;

Låt oss skapa en tabell:

CREATE TABLE AuthorsTBL (AuthorID INT NOT NULL AUTO_INCREMENT, AuthorName VARCHAR(100), PRIMARY KEY(AuthorID));

Låt oss titta igen på innehållet i testdatabasen.