Lecții pe baza de date

SECȚIUNEA 1 Pregătirea lecțiilor
§ 1 Ce este MySOL?

§ 3 Pregătirea și instalarea software-ului
Diferite programe, lienty
Console mysqIexe client
mysqlgui GUI-client

§ 4 baze de date relationale: concepte de bază
Baza de date „pagina a revistei de clasă“
Care este cheia?
Care este legătura?
Operatori relaționali de selecție, proiectare și integrare
Selectarea operatorului
operator de proiecție
operatorul uniune
Ce este o solicitare?
Care este rezultatul zaprosaf

§ 5 Bazele SQL
UTILIZARE echipa
Sintaxa comenzii USE
Exemplu de comandă USE Utilizare
Show-ul
Sintaxa și exemplele folosind SHOW comanda
Comanda CREATE DATABASE
Sintaxa CREATE DATABASE
Exemplu CREATE DATABASE utilizare comanda
Comanda CREATE TABLE
Sintaxa comanda CREATE TABLE
INSERT comanda
Sintaxa comenzii INSERT
Un exemplu de utilizare a INSERT
Comanda SELECT
Sintaxa comenzii SELECT
parte <запрашиваемая информация>
parte, de la
UNDE parte
O parte din GROUP BY
parte AVÂND
ORDER BY Partea
comandă UPDATE
sintaxă UPDATE comandă
Exemplu de utilizare comandă UPDATE
comanda delete
Sintaxa comenzii DELETE
Un exemplu folosind comanda DELETE
DROP echipa
comanda DROP Sintaxa
Utilizarea comenzii Exemplu DROP

§ 6 Set MySOL în curs de pregătire LAN-clasă și administrarea MySOL de instalare și configurare a bazei de date eșantion pe rețeaua locală
Configurația calculatorului client
Configurația calculatorului server
Instalarea bazei de date eșantion
Student TABEL
Tabel de evenimente
scor Tabelul
absență Tabelul
Relațiile dintre tabele
Configurarea opțiunilor de securitate
„Bucătărie“ MySOL de securitate

PARTEA 1. Pregătirea

MySQL este distribuit în mod liber sistem de baze de date relaționale de management (SGBD), construit pe o tehnologie client-server. baze de date MySQL SU include SQL-server (acesta este adesea numit „server de baze de date“), software-ul client și software-ul de însoțire (uneltele de administrare, interfețe pentru a interacționa cu aplicații scrise în diferite limbaje de programare și documentație).
Există versiuni MySQL pentru diferite sisteme de operare. Trebuie subliniat (pentru cei care nu au o vastă experiență cu sisteme client-server, nu este, uneori, evident) că programele de server de baze de date și client pot rula pe sisteme de operare diferite.
Trebuie remarcat faptul că utilizăm în mod constant sistemele bazate pe tehnologia client-server, dar de regulă, nu au nevoie să se îngropa în detaliile interacțiunii client-server. De exemplu, atunci când ne uităm la pagini web găzduite pe un server web, clientul este browserul nostru (și server, desigur, web-server). Browserul (client) trimite o cerere, ca răspuns la care serverul efectuează anumite acțiuni, de exemplu, browserul trimite pagina web solicitată.
Interacțiunea cu SQL-server este, de asemenea, produs prin intermediul unor cereri ca răspuns la care serverul returnează informațiile solicitate sau pentru a efectua modificările necesare date. Interogări în SQL server formulate în limba SQL (Structured Query Language>.
De obicei, programul client de interacțiune la un server MySQL se face prin intermediul protocolului TCP / IP.


§ 3. Obținerea și instalarea software-ului

Așa cum am observat, există versiuni de MySQL pentru sistemele de operare aproape toate comune. În opinia noastră, cea mai bună opțiune este de a instala SQL-Server pe Linux sau FreeBSD. Cu toate acestea, înțelegem că un număr mare de cititori preferă versiunea de MySQL pentru Windows, astfel încât să descrie această opțiune. Trebuie remarcat aici faptul că și versiunea Windows-based de MySQL este extrem de stabil, și numai în scopuri de formare a performanței sale este mai mult decât suficient. Este logic să înceapă să instaleze atât server și client pe un singur calculator, le testa în lucrare, și apoi a construi o versiune de rețea.

După finalizarea directorul de instalare C: \ mysql va arata:
S. \ mysql
bancă
bin
date
Documente
exemple
include
lib
script-uri
acțiune
infolist.txt
mi-example.cnf
mysqlbug.txt
Readme
Uninst.isu
Directorul bin conține toate fișierele executabile, inclusiv în sine programele SQL-server și client. Documentația (în limba engleză) este conținut în directorul Docs. Directorul de date este destinat pentru stocarea de baze de date. Fiecare bază de date este stocată într-un dosar separat, al cărui nume este identic cu numele său. După instalare în directorul de date are două subdirectoare (două baze de date sunt, respectiv) - mysql și testare.
fișier Mu-example.cnf este un fișier de configurare șablon. Acesta trebuie să fie redenumit în my.cnf și puneți-l în directorul rădăcină al unității C, dar puteți face acest lucru mai târziu (cu atât mai mult că unele modificări trebuie să fie făcute în acest fișier). Acum, mult mai interesant pentru a încerca operarea SQL-server. SQL-server ruleaza faylom mysqld.ehe (nume de fișier este derivat din „MySQL Daemon“), care se află în coșul de director. În cazul în care o lansare de succes de pe ecran, nu veți vedea nimic. Serverul rulează în tăcere. Apoi, ar trebui să rulați mysql.ehe fișier - software-ul client care funcționează în modul text. Dacă totul a fost făcut în mod corect, clientul începe, se conectează la server și afișează invitația, ca răspuns la care modoyu introduce comenzi. familiaritate mai detaliate, cu comenzi SQL în § 5, între timp, puteți încerca MySOL în exemplul de comandă și SELECT BAZE SHOW (a se vedea. Exemplele 1 și 2). Rezultatul Databases comanda SHOW este o listă a bazelor de date disponibile pe SQL-server (vezi. Exemplul 1). O echipă de SELECT ACUM (). USER () raportează data și ora curentă (rezultatul ACUM ()) și numele de utilizator sub care programul client a stabilit o conexiune cu serverul (rezultatul USER ()). Rețineți că comenzile sunt terminate printr-o „;“. Este o caracteristică a programului client, și nu cerința limbajului SQL. Tu ar trebui să acorde, de asemenea, atenția asupra faptului că, în exemplul 2 arată în mod specific cum se introduce un multi-echipa. În cazul în care șirul nu se termină cu „;“, despre un gram mysql afișează următorul prompt „->“, ceea ce indică faptul că echipa este de așteptat să continue.
EXEMPLUL 1
S. \ mysql \ bin> mysql. exe
Bine ați venit la monitor MySQL. Comenzile se încheie cu; sau \ g.
Dvs. conexiune id MySQL este de 2 la versiunea de server. 3.23.3 6 -debug
Tip de ajutor“; „Sau“ \ h „pentru ajutor. Tastați „\ c“ pentru a șterge tamponul
mysql>

mysql> SELECT ACUM (),
-> USER ();

server de mysqld ar trebui să lucreze întotdeauna pentru a finaliza corect. Pentru a face acest lucru, utilizați următoarea comandă:
C: \ mysql \ bin> mysqladmin.exe -u de închidere rădăcină
Programul mysqladmin.exe este în directorul C: \ mysql \ bin. Mai târziu, atunci când sunt ghidați de instrucțiunile § 6, apoi definiți parola pentru utilizatorul root, programul de apel mysqladmin va trebui să dea parola:
C: \ mysqi \ bin> mysqiaamin.skhs -u -rparol de închidere rădăcină

Konsolyny mysql.exe client


In toate exemplele date în această problemă și lecțiile pe care le folosi mysql.exe program client consola. Lucrul cu acest program, să-l puneți blând, nu foarte convenabil. principalul dezavantaj -
lipsa de posibilitatea de a modifica șiruri de interogare în procesul de intrare (după o linie nouă). Rețineți că această deficiență privat versiune client MySQL pentru Linux si FreeBSD. Pentru ușurința de interogare de utilizare a capacităților de mysal scrise într-un fișier text, și protocolul de management (exemple soottstvuyuschie de mai jos). Și totuși, se pare recomandabil în stadiile timpurii (și lecții) pentru a utiliza aceasta, nu clientul prea convenabil. Pentru toate greșelile sale, el are un avantaj semnificativ metodologic: face introduceți interogări gînditor, „pronunțând“, fiecare afirmație, fiecare pas.

§ 4. Baza de date relationale Concepte


Mai bine? Mai bine. Dar. Este posibil să se atras atenția asupra faptului că nu toți au furnizat la masa noastră deja. Mai precis, nu am considerat o caracteristică importantă a datelor inițiale: faptul că într-o zi se poate efectua mai mult de o lecție. Desigur, pentru a le scrie în tabelul „Lessons“ nu este o problemă, dar așa cum am înțeles din tabelul de „estimări“, pentru care este expus scor lecție? Această problemă este rezolvată în același mod ca și noi oferim studenților un unic: lecții ar trebui să unică (pentru simplitate - numeric) de identificare. Pur și simplu pune, precum și studenți, cursuri (toate de la începutul până la sfârșitul anului școlar prin intermediul) ar trebui să fie numerotate. Și este indicat în „estimări“ tabel nu este data și numărul de lecții. În „Ignorați“ vom indica, de asemenea, numărul de lecții (la urma urmei, studentul poate veni la control, iar lecția obișnuită să rateze). Din nou, schimba structura tabelelor (tabelele numai modificările vor afecta „estimări“, „lecții“ și „Treci“).


Probabil ați observat că am identificat cu caractere aldine numele unor câmpuri ( „numărul de studenți“ în „studenții“ de masă, câmpuri „numărul de studenți“ și „Lecția“ în tabelul „estimări“, etc.). Campurile marcate sunt chei (câmpuri cheie) ale tabelelor respective. Conceptul de cheie este o bază de date concepte cheie, de ce locuiesc pe ea în detaliu. Din exemplul de mai sus, în special, se vede că tabela cheie poate fi un câmp sau un set de domenii (în acest ultim caz, utilizează termenul „component cheie“). Cheie identifică în mod unic fiecare rând din tabel, adică nu există două rânduri din tabel nu conține aceeași valoare cheie (6 în cazul valorilor câmpurilor sale constitutive ale unei chei compuse poate fi repetată, dar mulțimea acestor valori trebuie să fie unice).
MEREU Tabelul identifică domeniile-cheie. În principiu, prezența cheii este opțională. Sistemele de gestiune a bazei de date vă permite să creați tabele, fără câmpuri cheie. Dar, de regulă, în lipsa mesei cheie este cauzată de un design de baze de date bug. Prin urmare, dacă vedeți că masa nu poate evidenția câmpul cheie, ar trebui să verificați cu atenție proiectul este probabil ca ceva nu este așa. Cum să aloce cheia? Este întotdeauna domeniile-cheie să se distingă clar? În general vorbind, nr. Dar trebuie să se înțeleagă că cheile din tabele ies în evidență nu doar „să aibă“. Scopul principal al tastelor - tabele cu caracter obligatoriu.
În exemplul nostru, tabelul „Studenții“ pot fi asociate cu tabelul „estimări“ și „Skip“ pe valoarea câmpului „camera de student“. „lecții“ de masă pot fi asociate cu tabelele „mărci“ și „sare“ cu privire la valoarea câmpului „lectie“. Dar ce înseamnă „legat“?
Care este legătura?
În general vorbind, în ceea ce privește relațiile între tabele MySQL nu există. Un punct de vedere similar este deținut de unii dezvoltatori și alte baze de date relaționale. Deși SQL, există mijloace pentru a descrie relațiile (utilizarea lor în MySQL nu duce la erori, acestea sunt pur și simplu ignorate), și, desigur, de comunicare este utilizat pe scară largă atunci când se lucrează cu baze de date relaționale. Deci, ce e controversa? Nu există nici o contradicție. Tabelele sunt legate ca noi (baza de date dezvoltator) imagina. De exemplu, primul rând al tabelului „Studenții“ ( „numărul student“ = 1) corespunde primului și al treilea „Guest“ rând al tabelului (cu același câmp valoare „număr student“). Astfel, considerăm (așa cum am proiectat baza de date), ca masă „ucenici“ și „evaluare“ sunt legate de valorile câmpurilor „numărul studenților“ și „numărul de student“ (aici ne dorim să subliniem că domeniul peste care nu sunt necesare legarea au același nume, deși mai des și nu te confuz). Pentru a descrie relațiile dintre tabele în SQL, există cuvinte cheie REFERINȚE speciale și KEY, care sunt straine utilizate în descrierea câmpurilor de masă. MySQL le va ignora.
Deci, de fapt, am înregistrat două poziții: relația - corespondența între rândurile de două tabele; relația dintre tabelele de la valorile unor domenii (de exemplu, masa nu poate fi conectat „în general“, ei vor lega la o anumită valoare). Selectarea câmpului, care se face obligatoriu, definește tipul de conexiune: „unu la mulți“, „mulți la mulți“, „unu la unu“. Uneori, în etapa de proiectare a unei baze de date este clar că un punct substanțial de tabele vedere sunt legate, dar nu și în domenii adecvate pentru comunicare. Acest lucru sugerează că ar trebui să înceapă un alt tabel de „legare“ (mai jos ne vom uita la un exemplu corespunzător). Nu vom discuta în detaliu diferitele tipuri de conexiuni, pe scurt le descrie (o poveste cuprinzătoare despre tipurile pot fi găsite, de exemplu, în [2]).
După legarea tabelelor A și B, „unu la unu“, fiecare linie a tabelului A corespunde cu unul și numai un singur rând de masă B și invers. Comunicarea „unu la unu“, pot fi organizate, dar ele sunt, în general vorbind, nu au prea mult sens, deoarece prezența lor indică faptul că ne-am împărțit în tabele separate, care nu ar putea împărtăși (sau chiar, poate, nu ar trebui să împartă) . Cu toate acestea, uneori, din cauza „unu la unu“ sunt folosite pentru a optimiza funcționarea bazei de date.
Când leagă tabelele A și B, „unu la mulți“ în fiecare rând din tabel corespunde exact un rând din tabelul A. Tipul de comunicație, „unu la mulți“ - instrumentul de bază pentru dezvoltatorii de baze de date. În special, în exemplul de mai sus avem o masă „Studenții“ este asociat cu tabelele, „estimări“ și „Treci“ la fel de „unu la mulți“. De asemenea, este legat de masa „lecții“ și „estimări“ și „lecții“ și „Skip“. Când legătura între tabele, „unu la mulți“ pe partea „unu“ este folosit întotdeauna câmpul cheie al mesei. Câmpul asociat pe „mulți“ se numesc o cheie externă.
Atunci când legătura între tabelele A și B din „mulți la mulți“ Fiecare rând din tabelul A poate corespunde câteva rânduri în tabel și vice-versa. Dacă sunteți în proiectarea unei conexiuni bază de date apare între cele două tabele „mulți la mulți“, ar trebui să fie eliminată prin introducerea unui tabel suplimentar. Aici este un exemplu. Să presupunem că dorim să descrie sistemul „profesor - elemente“ (care profesorul ce sunt lucrurile). Este clar că un lucru poate duce unii profesori și un profesor, acest lucru se întâmplă destul de des, poate duce unele subiecte. Lista profesorilor vor fi stocate în „Master“ în tabel, o listă de elemente - în tabelul „Articole“: