Page 134 - 4636
P. 134

Три  останні  рядки  табл.  7.1  містять  операції  LIKE  і  REGEXP.  Це  форми  перевірки
        відповідності шаблону.
              Операція  LIKE  використовує  зіставлення  з  SQL-шаблоном.  Шаблони  можуть  містити
        звичайний текст, а також груповий символ % (знак відсотка), що означає відповідність з будь-
        якою кількістю символів, і _ (символ підкреслення), що означає відповідність з одним символом.
              Ключове  слово  REGEXP  служить  для  співставлення  з  регулярними  виразами.  У  MySQL
        використовуються регулярні вирази в стилі POSIX. Замість REGEXP можна застосовувати також
        ключове слово RLIKE, є його синонімом.
              Регулярні вирази POSIX також наявні і в РНР. Можна перевіряти кілька критеріїв відразу з
        використанням простих операцій і синтаксису зіставлення з шаблоном, після чого комбінувати їх
        у більш складні критерії за допомогою операцій AND і OR. Наприклад:
              select * from orders
              where customerid = 3 or customerid = 4;
              2 Відбірданих з декількох таблиць
              Часто для отримання відповіді від бази даних можуть знадобитися дані з декількох таблиць.
        Наприклад, якщо необхідно дізнатися, хто з клієнтів зробив замовлення протягом даного місяця,
        доведеться переглянути таблиці customers і orders. Якщо потрібно дізнатися, що конкретно вони
        замовили, доведеться переглянути і таблицюorder_iterns.
              Ці дані зберігаються в різних таблицях, оскільки відносяться до різних реальним об'єктам.
        Це один з принципів правильної структури бази даних.
              Для  отримання  інформації  подібного  роду  в  SQL  необхідно  виконати  операцію,  звану
        сполукою (join). З'єднання виконується для двох і більше таблиць відповідно до відносин між
        даними.  Якщо,  наприклад,  необхідно  подивитися,  які  замовлення  зробила  клієнтка  Саша
        Валентей, спочатку потрібно переглянути таблицю customers і знайти в ній ідентифікатор клієнта
        Саші (тобто customerid), а потім - таблицю orders на предмет замовлень, зроблених клієнтом з
        даним ідентифікатором customerid.
              Хоча  на перший  погляд операція  з'єднання  досить  проста,  насправді  це  один  з  найбільш
        складних  і тонких аспектів SQL. У MySQL реалізовано кілька різних типів з'єднання, кожен з
        яких призначений для певних цілей.

              7.3 Об'єднання таблиць

              1 Просте об'єднання двох таблиць
              Почнемо з пошуку замовлень, виконаних Славою Моргуновим:
              select orders.orderid, orders.amount, orders.date
              from customers, orders
              where customers.name = 'СлаваМоргунов'
              and customers.customerid = orders.customerid;
              Результат запиту будет таким:

                                Orderid           amount            Date

                                   1              69.98             2008-04-02
                                   4              24.99             2008-05-01


              Тут слід було б відзначити декілька моментів.
              По-перше,  для  відповіді  на  цей  запит  необхідна  інформація  з  двох  таблиць,  по-цьому
        потрібно вказати обидві.
              Вказавши дві таблиці, ви вказуєте тип з'єднання, можливо, навіть не знаючи його. Кома між
        назвами таблиць еквівалентна конструкцій INNERJOIN (внутрішнє з'єднання) або CROSSJOIN

                                                            131
   129   130   131   132   133   134   135   136   137   138   139