Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Co to jest SQL? Co to jest baza danych? Systemy zarządzania relacyjnymi bazami danych (RDBMS) wyjaśnione w prostym języku angielskim.

Bazy danych mogą być trudne do ogarnięcia. Są one jednak niezbędne do programowania pełnego stosu i tworzenia usług zaplecza, które przechowują dane.

W tym poście opiszę SQL, bazy danych i systemy zarządzania relacyjnymi bazami danych. Będę również używał pewnych analogii do czarodziejskiego świata, w tym samego Harry'ego Pottera i niektórych zajęć, które uczęszcza w Hogwarcie.

Zanim zagłębimy się w kluczowe terminy, zdefiniujmy, czym jest sama baza danych:

baza danych to uporządkowany zestaw danych przechowywanych w komputerze, zwłaszcza taki, do którego można uzyskać dostęp na różne sposoby. Jest to zasadniczo zorganizowany zestaw danych na komputerze, do którego można uzyskać dostęp drogą elektroniczną z systemu komputerowego.

Kluczowe terminy

Poniżej znajduje się kilka kluczowych terminów, od których zaczniemy:

  • RDMS: Systemy zarządzania relacyjnymi bazami danych. Ten framework dla baz danych jest podstawą MySQL.
  • SQL: Strukturalny język zapytań.
  • Tabele: Obiekty bazy danych, które przenoszą dane. Przykładowa nazwa tabeli to „Uczniowie”, „Nauczyciele” lub „Kursy”.
  • Pola: Wartości tabeli nazywane są polami. Przykładowe pola dla uczniów to „Imię”, „Nazwisko” i „GPA”.
  • Rekord/wiersz: Indywidualny wpis w tabeli.

Po dodaniu Nauczycieli i Kursów do bazy danych możemy mieć tabele dla Studentów, Nauczycieli i Kursów.

W dalszej części przewodnika będziemy używać tylko Uczniów przykład tutaj jako odniesienie. Jeśli miałeś szczęście zostać zatrudnionym jako inżynier oprogramowania w Hogwarcie, twoja baza danych może dobrze wykorzystać niektóre z tych poleceń :D

Wyrażenia SQL

Składnia

Średnik to standardowy sposób oddzielenia jednej instrukcji SQL od drugiej. Pozwala na wykonanie wielu instrukcji SQL w tym samym wywołaniu. W tym przewodniku na końcu każdego wyrażenia będziemy mieli średnik.

Najważniejsze polecenia SQL

Utwórz :Tworzy nową tabelę SQL.

Gdybyśmy na przykład tworzyli bazę danych uczniów dla szkoły Hogwart, użylibyśmy CREATE zrobić stół o nazwie „Studenci”.

  • Składnia
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);
  • Przykład
CREATE TABLE Students
                (first_name VARCHAR(255),
                last_name VARCHAR(255),
                login VARCHAR(255),
                age INTEGER,
                gpa REAL,
                house VARCHAR(255));

Upuść :Usuwa tabelę. Zachowaj ostrożność podczas używania tego polecenia, ponieważ spowoduje to usunięcie wszystkich danych z tabeli!

Jeśli chcielibyśmy usunąć całą bazę danych Studentów, użyjemy DROP aby wykonać tę akcję.

  • Składnia
DROP TABLE table_name;
  • Przykład
DROP TABLE Students;

Wstaw :Dodaje nowe wiersze danych do tabeli.

Używalibyśmy INSERT aby dodać nowych uczniów, gdy zapiszą się do Hogwartu.

  • Składnia
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
  • Przykład
INSERT 
INTO Students(first_name, last_name, login, age, gpa, house)
VALUES 
('Harry',     'Potter', 'theboywholived', 15, 4.0, 'Gryffindor'),
('Hermionie', 'Granger','granger2',       15, 4.5, 'Gryffindor'),
('Ron',       'Weasley','weasley7',       15, 3.7, 'Gryffindor'),
('Draco',     'Malfoy', 'malfoy999',      15, 4.0, 'Slytherin'),
('Cedric',    'Diggory','diggory123',     15, 4.0, 'Hufflepuff');

Wybierz :Służy do pobierania danych z bazy danych, które mają być zwrócone w formacie tabeli.

Gdybyśmy chcieli pobrać wszystkie imiona uczniów, którzy są w Gryffindor House, użyjemy SELECT Komenda. Poniższy przykład odpytuje tabelę Uczniowie o imię i nazwisko każdego ucznia w bazie danych, która dla nas jest tylko pięcioma wierszami opisanymi powyżej.

  • Składnia
SELECT column1, column2, ...
FROM table_name;
  • Przykład
SELECT first_name, last_name FROM Students;
imię nazwisko
Harry Potter
Hermionie Granger
Ron Weasley
Draco Malfoy
Cedryk Diggory

Alternatywnie, jeśli chcemy zaznaczyć wszystkie pola w tabeli, nasze polecenie użyje składni „*”, która oznacza zaznaczenie wszystkich pól:

SELECT * FROM Students;
imię nazwisko zaloguj się wiek gpa dom
Harry Potter chłopiec ocalał 15 4 Gryffindor
Hermionie Granger granger2 15 4,5 Gryffindor
Ron Weasley weasley7 15 3,7 Gryffindor
Draco Malfoy malfoy999 15 4 Slytherin
Cedryk Diggory diggory123 15 4 Hufflepuff

Klauzule

klauzula jest logiczną częścią instrukcji SQL i jest (teoretycznie) polem opcjonalnym.

W powyższym oświadczeniu po prostu zwróciliśmy wszystkie pola w bazie danych Studentów. Nie określiliśmy warunku na zwracanych wartościach.

Co by było, gdybyśmy chcieli zapytać nie wszystkich uczniów, ale tylko tych, których domem jest Gryffindor? Co powiesz na pytania uczniów, których imię zaczyna się na „H”, lub uczniów z Puchonów i Slytherinu? Te bardziej złożone przypadki są rozwiązywane przez klauzule SQL.

Poniżej znajduje się przegląd najczęstszych klauzul, ale w języku SQL jest jeszcze kilka klauzul. Oto dobry ogólny przegląd, jeśli chcesz uzyskać więcej informacji.

Przykłady klauzul

Gdzie: Służy do określania warunku podczas pobierania danych z bazy danych. Wracając do przykładu z Select, musielibyśmy użyć WHERE aby określić dom jako Gryffindor.

  • Składnia
SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • Przykład
SELECT * FROM Students
WHERE house='Gryffindor';
imię nazwisko zaloguj się wiek gpa dom
Harry Potter chłopiec ocalał 15 4 Gryffindor
Hermionie Granger granger2 15 4,5 Gryffindor
Ron Weasley weasley7 15 3,7 Gryffindor

I Używany do łączenia wielu klauzul w instrukcji SQL, gdzie wszystkie warunki oddzielone operatorem AND są prawdziwe. Użyjemy AND, aby zdobyć uczniów Gryffindoru, którzy mają GPA powyżej 3,8.

  • Składnia
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
  • Przykład
SELECT * FROM Students
WHERE house='Gryffindor' AND gpa>3.8;
imię nazwisko zaloguj się wiek gpa dom
Harry Potter chłopiec ocalał 15 4 Gryffindor
Hermionie Granger granger2 15 4,5 Gryffindor

Lub :Podobny do AND, ale zwraca tylko dane, w których tylko JEDEN z warunków oddzielonych LUB jest prawdziwy. Gdybyśmy chcieli odzyskać uczniów w Puchonie i Slytherinie, ale nie w obu, użylibyśmy polecenia OR.

  • Składnia
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
  • Przykład
SELECT * FROM Students
WHERE house='Slytherin' OR house='Hufflepuff';
imię nazwisko zaloguj się wiek gpa dom
Draco Malfoy malfoy999 15 4 Slytherin
Cedryk Diggory diggory123 15 4 Hufflepuff

Lubię to: Używane z WHERE do wyszukiwania określonego wzoru. Gdybyśmy chcieli tylko imienia i nazwiska czarodziejów/wiedźm o imionach zaczynających się na „H”, moglibyśmy użyć polecenia Like.

  • Składnia
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
  • Przykład
SELECT first_name, last_name FROM Students
WHERE first_name LIKE 'H%';
imię nazwisko
Harry Potter
Hermionie Granger

Liczba: Służy do znajdowania liczby kolumn (lub kolumn) w tabeli.

  • Składnia
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
  • Przykład
SELECT COUNT(first_name) FROM Students;
LICZBA(imię)
5

Dwa inne polecenia używające tej samej składni to AVG i SUM. AVG obliczy średnią wszystkich wartości, a suma obliczy sumę wszystkich wartości.

Wybierz limit: Służy do odcinania odpowiedzi do określonej kwoty. Sposób, w jaki wybierane są najlepsze odpowiedzi, jest kolejnością umieszczania ich w bazie danych chronologicznie.

  • Składnia
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
  • Przykład
SELECT * FROM Students LIMIT 3;
imię nazwisko zaloguj się wiek gpa dom
Harry Potter chłopiec ocalał 15 4 Gryffindor
Hermionie Granger granger2 15 4,5 Gryffindor
Ron Weasley weasley7 15 3,7 Gryffindor

Inne przydatne polecenia

Uporządkuj według: Sortuje wyniki w kolejności rosnącej lub malejącej.

  • Składnia
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
  • Przykład
SELECT * FROM Students ORDER BY first_name;
imię nazwisko zaloguj się wiek gpa dom
Cedryk Diggory diggory123 15 4 Hufflepuff
Draco Malfoy malfoy999 15 4 Slytherin
Harry Potter chłopiec ocalał 15 4 Gryffindor
Hermionie Granger granger2 15 4,5 Gryffindor
Ron Weasley weasley7 15 3,7 Gryffindor

Grupuj według: Grupuje kategorie, które mają te same wartości, w wiersze. Jeśli chcesz poznać liczbę uczniów w każdym domu (na przykład 3 w Gryffindorze), możesz użyć polecenia Grupuj według.

  • Składnia
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
  • Przykład
SELECT COUNT(first_name), house FROM Students GROUP BY house;
LICZBA(imię) dom
3 Gryffindor
1 Hufflepuff
1 Slytherin

Na koniec mamy DB Fiddle, który pokazuje wszystkie powyższe polecenia w akcji!

Znormalizowane a zdenormalizowane bazy danych

Podczas projektowania bazy danych można zastosować dwa główne wzorce projektowe, każdy z własnymi kompromisami.

Znormalizowane: Optymalizuje minimalizacja nadmiarowości, nie na czas czytania.

Załóżmy, że mamy tabelę kursów, która zawiera identyfikator nauczyciela prowadzącego dany kurs. Mamy również bazę danych nauczycieli, która zawiera nazwisko nauczyciela.

Gdy chcemy uzyskać nazwiska nauczycieli prowadzących konkretny kurs, będziemy musieli wykonać zapytanie zarówno w tabelach Kursy, jak i Nauczyciele, ponieważ tabela kursu nie zawiera nazwiska nauczyciela (efektywne, ale zbędne).

Zdenormalizowane: Optymalizuje czas odczytu , a nie w celu minimalizacji redundancji.

Załóżmy, że mamy tabelę kursów, która zawiera identyfikator i nazwisko nauczyciela. Mamy bazę danych nauczycieli, która również zawiera imię i nazwisko nauczyciela. Kiedy chcemy uzyskać nazwiska nauczycieli w kursie, możemy po prostu skorzystać z tabeli kursów (niepotrzebne, ale wydajne).

Integralność danych

Dla użytkowników ważne jest, aby dane, z którymi wchodzą w interakcje, były bezpieczne, poprawne i rozsądne. Przykładami są upewnienie się, że wiek nie jest liczbą ujemną lub że nie ma dwóch uczniów o tych samych informacjach. Nazywamy to integralnością danych.

Integralność danych przybiera kilka form i można ją podzielić na cztery kategorie:

  • Integralność jednostki :w tabeli nie ma zduplikowanych wierszy. Na przykład nie możemy dwukrotnie wstawić Rona Weasleya do bazy danych.
  • Integralność domeny :Ograniczenie typu wartości, które można wstawić w celu wymuszenia poprawnych wartości. Na przykład Domem może być tylko Gryffindor, Ravenclaw, Slytherin lub Hufflepuff.
  • Integralność referencyjna :Rekordy używane przez inne rekordy nie mogą zostać usunięte. Nauczyciela nie można usunąć, jeśli aktualnie prowadzi zajęcia.
  • Integralność zdefiniowana przez użytkownika: Kategoria „inna”, która składa się z logiki i reguł związanych z biznesem w bazie danych.

Wspólne bazy danych SQL

  • Wyrocznia :Bardzo stabilny i dojrzały, ale może być kosztowny
  • MySQL :Lekki i szybki w konfiguracji, ale nie tak dojrzały jak Oracle
  • PostgreSQL :Dobry w niektórych przypadkach użycia, ale nie superszybki

Zasoby

  • SWEPrep – pytania do rozmowy kwalifikacyjnej prosto do Twojej skrzynki odbiorczej
  • SQL i bazy danych freeCodeCamp
  • Czysty kod
  • Skuteczna Java
  • Dokumentacja Oracle
  • Dokumentacja MySQL
  • Dokumentacja PostgreSQL

Bądź na bieżąco

  • Wątki Reddita :Świetne wątki dotyczące baz danych, SQL i nowych technologii
  • Wiadomości hakerskie: Naprawdę świetne źródło, aby być na bieżąco z najnowszymi osiągnięciami w branży technologicznej
  • CodePen: Doskonałe źródło do odkrywania dobrych praktyk SQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skuteczne monitorowanie MySQL za pomocą pulpitów nawigacyjnych SCUMM:część 3

  2. używanie wartości null w przygotowanym oświadczeniu mysqli

  3. Jak powiązać parametry z surowym zapytaniem DB w Laravel, które jest używane w modelu?

  4. Migracja z Oracle do MySQL

  5. Eksportuj bazę danych MySQL lub MariaDB