Пишемо на php мову sql


Пишемо на PHP: Мова SQL


Перш ніж переходити до наступного класу (utils), я пропоную вам зробити невеликий екскурс в мову запитів SQL.

Це необхідно з двох причин. По-перше, не хочу, щоб ви дивилися на SQL-фрагменти наступних скриптів як парнокопитні тварини на тільки що побудоване загороджувальні споруди. А по-друге, мені хочеться донести до вас красу цієї мови, приховану в його простоті і "людяності".

А все запити до бази даних можна розділити на три основні групи:
  • Створення / зміна структури БД
  • Додати / редагувати інформації в БД
  • Отримання звітів / вибірок з БД

    Як створюються таблиці ми вже бачили. На цьому етапі я зупинятися не буду, бо тут нічого цікавого немає. Як і стандартного. У різних БД створення таблиць, функцій і індексації може проводитися по-різному. Це не так важливо.

    Ми зупинимося на двох інших групах.

    Додавання, зміна, видалення інформації проводиться майже людською мовою. Тому всі команди SQL так легко запам'ятати.

    Припустимо, у нас є таблиця books (книги), в якій ми зберігаємо інформацію про своїй домашній бібліотеці.

    Як би ми це зробили, якби база даних управлялася людським голосом?

    Ось ми так і запишемо, а SQL з задоволенням нас зрозуміє. Тільки по-англійськи.

    Ось так. Майже по-людськи.

    Наступною книгою для контрасту додамо "А.Платонов. 'Котлован'", невідомо коли подаровану нам улюбленим викладачем.

    insert into books (book_name, book_comm) values ​​( "А.Платонов. 'Котлован'", "Подаруй Пустоваловим Петром Семеновичем");

    insert into books (book_name) values ​​( 'Куховарська книга');

    Ось так. Тепер у нас в базі є аж три книги. Спробуємо в цьому переконатися?

    Як ми попросимо нашу базу вибрати нам все, що в ній є, без будь-яких умов?

    По-русски це б могло звучати так: "Обери все з таблиці книг".

    Так і напишемо (зірочкою в SQL позначається будь-який набір параметрів, символів та іншого, як багато в чому комп'ютерному):

    select * from books;

    І отримуємо список наших книг. Я не буду приводити тут повністю відповідь MySQL, тому що занадто широка табличка вийшла.

    Ми зараз це підправимо. Попросимо вибрати тільки назви книг:


    select book_name from books;
    Зрозуміло, чи не так?

    А тепер знову додав їх порядкові номери:

    select book_id, book_name from books;
    Ось так просто.

    Тепер давайте попросимо нашу тямущий БД видати нам книгу під номером 2:

    select book_id, book_name from books where book_id = 2;
    Ти дивись, знайшов!

    А якщо ми хочемо все книги від номера 2 і більше?

    select book_id, book_name from books where book_id> 1;
    Нате!

    Ну добре, давайте задамо в запиті що-небудь хитріше. Наприклад, нам потрібна книга, яку ми купили на днях, але не пам'ятаємо про неї буквально нічого.

    Для цього так і попросимо:

    select book_id, book_name from books where book_date between subdate (now (), interval 3 day) and now ();

    Поясню.
    Зарезервоване слово between використовується тут дослівно - "між".
    Функція now () дає поточну дату і час.
    Функція subdate зменшує вказану дату на вказаний період часу.

    Тобто по-російськи наш запит звучав: "вибрати номер книги і назва з бази книги, де дата книги знаходиться між датою триденної давності і поточною датою".

    І що ж нам видала база?

    select book_id, book_name from books where book_date between subdate (now (), interval 3 day) and now ();

    Ще один прімерчік хочу продемонструвати. Спробуйте зрозуміти його самі, без підказок.

    select book_name from books where book_name like "% Толстой%";

    Схожі статті