Інформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття icon

Інформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття




Скачати 299.37 Kb.
НазваІнформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття
Дата29.05.2013
Розмір299.37 Kb.
ТипІнформація

Лекция №6

Робота з базами даних


Змiст

Бази даних: основні поняття 
Основна інформація про MySQL
Поля та його типи в MySQL 
Оператори і команди MySQL 
Функції PHP для роботи з MySQL 

Бази даних: основні поняття

   У житті ми часто стикаємося з необхідністю зберігати будь-яку інформацію, а тому часто маємо справу і з базами даних. Наприклад, ми використовуємо записну книжку для зберігання номерів телефонів своїх друзів і планування свого часу. Телефонна книга містить інформацію про людей, що живуть в одному місті. Все це свого роду бази даних. Ну а раз це бази даних, то подивимося, як у них зберігаються дані. Наприклад, телефонна книга являє собою таблицю (табл. 1).
   У цій таблиці дані - це власне номери телефонів, адреси та ПІБ., Тобто рядки «Іванов Іван Іванович», «32-43-12» і т.п., а назви стовпців цієї таблиці, тобто рядки «ПІБ», «Номер телефону» і «Адреса» задають сенс цих даних, їх семантику. 
Таблиця 1. Приклад бази даних: телефонна книга

ПІБ

Номер телефону

Адреса

Іванов Іван Іванович

32-43-12

вул. Леніна, 12, 43

Ільїн Федір Іванович

32-32-34

пр. Маркса, 32, 45


   Тепер уявіть, що записів у цій таблиці не дві, а дві тисячі, ви займаєтеся створенням цього довідника і десь сталася помилка (наприклад, помилка в адресі). Мабуть, важкувато буде знайти і виправити цю помилку вручну. Потрібно скористатися якимись засобами автоматизації. Для управління великою кількістю даних програмісти (не без допомоги математиків) придумали системи управління базами даних (СУБД). У порівнянні з текстовими базами даних електронні СУБД мають величезне число переваг, від можливості швидкого пошуку інформації, взаємозв'язку даних між собою, до використання цих даних у різних прикладних програмах і одночасного доступу до даних декількох користувачів.
   ^ База даних - це сукупність пов'язаних даних, організованих за певними правилами, що передбачають загальні принципи опису, зберігання і маніпулювання, незалежна від прикладних програм. База даних є інформаційною моделлю предметної області. Звернення до баз даних здійснюється за допомогою системи управління базами даних (СУБД). СУБД забезпечує підтримку створення баз даних, централізованого управління та організації доступу до них різних користувачів.

   Отже, ми прийшли до висновку, що зберігати дані незалежно від програм, так, що б вони були пов'язані між собою і організовані за певними правилами, доцільно. Але питання, як зберігати дані, за якими правилами вони мають бути організовані, залишилося відкритим. Способів існує безліч (до речі, називаються вони моделями подання або зберігання даних). Найбільш популярні - об'єктна і реляційна моделі даних.
   Автором реляційної моделі вважається Е. Кодд, який першим запропонував використовувати для обробки даних апарат теорії множин (об'єднання, перетин, різниця) і показав, що будь-яке представлення даних зводиться до сукупності двовимірних таблиць особливого виду, відомого в математиці як відношення.
   Таким чином, реляційна база даних являє собою набір таблиць (точно таких же, як наведена вище), пов'язаних між собою. Рядок у таблиці відповідає сутності реального світу (у наведеному вище прикладі це інформація про людину).
   ^ Приклади реляційних СУБД: MySql, PostgreSql. 
   В основу об'єктної моделі покладена концепція об'єктно-орієнтованого програмування, в якій дані представляються у вигляді набору об'єктів і класів, пов'язаних між собою родинними відносинами, а робота з об'єктами здійснюється за допомогою прихованих (інкапсульованих) у них методів.
   ^ Приклади об'єктних СУБД: Cache, GemStone (від Servio Corporation), ONTOS (ONTOS). 
   Останнім часом виробники СУБД прагнуть з'єднати два ці підходи і проповідують об'єктно-реляційну модель представлення даних. Приклади таких СУБД - IBM DB2 for Common Servers, Oracle8.
   Оскільки ми збираємося працювати з Mysql, то будемо обговорювати аспекти роботи тільки з реляційними базами даних. Нам залишилося розглянути ще два важливих поняття з цієї області: ключі та індексування, після чого ми зможемо приступити до вивчення мови запитів SQL.
   Ключі
   Для початку давайте подумаємо над таким питанням: яку інформацію треба дати про людину, щоб співрозмовник точно сказав, що це саме та людина, сумнівів бути не може, іншої такої немає? Повідомити прізвище, очевидно, недостатньо, оскільки існують однофамільці. Якщо співрозмовник людина, то ми можемо приблизно пояснити, про кого мова, наприклад згадати вчинок, який вчинив той чоловік, або ще якось. Комп'ютер же такого пояснення не зрозуміє, йому потрібні чіткі правила, як визначити, про кого йде мова. У системах управління базами даних для вирішення такого завдання ввели поняття первинного ключа.
   Первинний ключ (primary key, PK) - мінімальний набір полів, унікально ідентифікує запис у таблиці. Значить, первинний ключ - це в першу чергу набір полів таблиці, по-друге, кожен набір значень цих полів повинен визначати єдиний запис (рядок) в таблиці і, по-третє, цей набір полів повинен бути мінімальним з усіх, що володіють такою же властивістю. Оскільки первинний ключ визначає тільки один унікальний запис, то ніякі два записи таблиці не можуть мати однакових значень первинного ключа. 
   Наприклад, у нашій таблиці ПІБ та адрес дозволяють однозначно виділити запис про людину. Якщо ж говорити загалом, без зв'язку з розв'язуванням завданням, то такі знання не дозволяють точно вказати на єдину людину, оскільки існують однофамільці, що живуть у різних містах за однією адресою. Вся справа в межах, які ми самі собі ставимо. Якщо вважаємо, що знання ПІБ, телефону та адреси без вказівки міста для наших цілей достатньо, то все чудово, тоді поля ПІБ та адрес можуть утворювати первинний ключ. У будь-якому випадку проблема створення первинного ключа лягає на плечі того, хто проектує базу даних (розробляє структуру зберігання даних). Рішенням цієї проблеми може стати або виділення характеристик, які природним чином визначають запис в таблиці (завдання так званого логічного,    або природного, PK), або створення додаткового поля, призначеного саме для однозначної ідентифікації записів в таблиці (завдання так званого сурогатного, або штучного, PK). Прикладом логічного первинного ключа є номер паспорта у базі даних про паспортні дані мешканців чи ПІБ та адресу в телефонній книзі (таблиця вище). Для завдання сурогатного первинного ключа в нашу таблицю можна додати поле id (ідентифікатор), значенням якого буде ціле число, унікальне для кожного рядка таблиці. Використання таких сурогатних ключів має сенс, якщо природний первинний ключ являє собою великий набір полів або його виділення нетривіально. 
Крім однозначної ідентифікації запису, первинні ключі використовуються для організації зв'язків з іншими таблицями. 
   Наприклад, у нас є три таблиці: містять інформацію про історичні особистості (Persons), що містить інформацію про їх винаходи (Artifacts) і яка містить зображення як особистостей, так і артефактів (Images) (рис 1). 
   Первинним ключем у всіх цих таблицях є поле id (ідентифікатор). У таблиці Artifacts є поле author, в якому записаний ідентифікатор, присвоєний автору винаходу в таблиці Persons. Кожне значення цього поля є зовнішнім ключем для первинного ключа таблиці Persons. Крім того, в таблицях Persons і Artifacts є поле photo, яке посилається на зображення в таблиці Images. Ці поля також є зовнішніми ключами для первинного ключа таблиці Images і встановлюють однозначно логічний зв'язок Persons-Images і Artifacts-Images. Тобто якщо значення зовнішнього ключа photo в таблиці особистості дорівнює 10, то це значить, що фотографія цієї особистості має id = 10 в таблиці зображень. Таким чином, зовнішні ключі використовуються для організації зв'язків між таблицями бази даних (батьківськими і дочірніми) і для підтримки обмежень посилальної цілісності даних. 

Рис. 1. Приклад використання первинних ключів для організації зв'язків з іншими таблицями
   Індексування 
   Одна з основних задач, що виникають при роботі з базами даних, - це завдання пошуку. При цьому, оскільки інформації в базі даних, як правило, міститься багато, перед програмістами постає завдання не просто пошуку, а ефективного пошуку, тобто пошуку за порівняно невеликий час і з достатньою точністю. Для цього (для оптимізації продуктивності запитів) виробляють індексування деяких полів таблиці. Використовувати індекси корисно для швидкого пошуку рядків з вказаним значенням одного стовпця. Без індексу читання таблиці здійснюється по всій таблиці, починаючи з першого запису, поки не будуть знайдені відповідні рядки. Чим більша таблиця, тим більш накладні витрати. Якщо ж таблиця містить індекс по розглянутих стовпцях, то база даних може швидко визначити позицію для пошуку в середині файлу даних без перегляду всіх даних. Це відбувається тому, що база даних поміщає проіндексовані поля ближче в пам'яті, так, щоб можна було швидше знайти їх значення. Для таблиці, яка містить 1000 рядків, це буде як мінімум в 100 разів швидше в порівнянні з послідовним перебором всіх записів. Однак у випадку, коли необхідний доступ майже до всіх 1000 рядках, швидше буде послідовне читання, так як при цьому не потрібно операцій пошуку по диску. Так що іноді індекси бувають тільки перешкодою. Наприклад, якщо копіюється великий обсяг даних в таблицю, то краще не мати ніяких індексів. Проте в деяких випадках потрібно задіяти одразу кілька індексів (наприклад, для обробки запитів до часто використовуваних таблиць). 
   Якщо говорити про MySQL, то там існує три види індексів: PRIMARY, UNIQUE, і INDEX, а слово ключ (KEY) використовується як синонім слова індекс (INDEX). Всі індекси зберігаються в пам'яті у вигляді B-дерев.
   PRIMARY - унікальний індекс (ключ) з обмеженням, що всі індексовані їм поля не можуть мати порожнього значення (тобто вони NOT NULL). Таблиця може мати тільки один первинний індекс, але він може складатися з декількох полів. 
   ^ UNIQUE - ключ (індекс), що задає поля, які можуть мати тільки унікальні значення.
   INDEX - звичайний індекс (як ми описали вище). У MySqL, крім того, можна індексувати рядкові поля за заданою кількістю символів від початку рядка. 


^ Основна інформація про MySQL

   MySQL - це популярна система управління базами даних (СУБД), дуже часто застосовується в поєднанні з PHP.
   База даних являє собою структуровану сукупність даних. Ці дані можуть бути будь-якими - від простого списку майбутніх покупок до переліку експонатів картинної галереї або величезної кількості інформації в корпоративній мережі. Для запису, вибірки й обробки даних, що зберігаються в комп'ютерній базі даних, необхідна система управління базою даних, якою і є MySQL. Оскільки комп'ютери чудово справляються з обробкою великих обсягів даних, управління базами даних відіграє центральну роль в обчисленнях. Реалізовано таке управління може бути по-різному - як у вигляді окремих утиліт, так і у вигляді коду, що входить до складу інших додатків.    MySQL - це система управління реляційними базами даних. У реляційній базі даних дані зберігаються не все скопом, а в окремих таблицях, завдяки чому досягається виграш у швидкості й гнучкості. Таблиці зв'язуються між собою за допомогою відносин, завдяки чому забезпечується можливість поєднувати при виконанні запиту дані з декількох таблиць. SQL як частина системи MySQL можна охарактеризувати як мова структурованих запитів плюс найбільш поширена стандартна мова, яка використовується для доступу до баз даних.    MySQL - це ПЗ з відкритим кодом. Застосовувати його і модифікувати може будь-хто. Таке ПЗ можна одержувати по Internet і використовувати безкоштовно. При цьому кожен користувач може вивчити вихідний код і змінити його у відповідності зі своїми потребами. Використання програмного забезпечення MySQL регламентується ліцензією GPL (GNU General Public License), http://www.gnu.org/licenses/, в якій зазначено, що можна і чого не можна робити з цим програмним забезпеченням у різних ситуаціях.    Чому веб-програмісти віддають перевагу СУБД MySQL? MySQL є дуже швидким, надійним і легким у використанні. Якщо вам потрібні саме ці якості, спробуйте попрацювати з даним сервером. MySQL володіє також рядом зручних можливостей, розроблених у тісному контакті з користувачами. Спочатку сервер MySQL розроблявся для керування великими базами даних з метою забезпечити більш високу швидкість роботи в порівнянні з існуючими на той момент аналогами. І ось вже протягом декількох років даний сервер успішно використовується в умовах промислової експлуатації з високими вимогами. Незважаючи на те що MySQL постійно вдосконалюється, він уже сьогодні забезпечує широкий спектр корисних функцій. Завдяки своїй доступності, швидкості та безпеки MySQL дуже добре підходить для доступу до баз даних по Internet.
   Технічні можливості СУБД MySQL MySQL є системою клієнт-сервер, яка містить багато-поточний SQL-сервер, що забезпечує підтримку різних обчислювальних машин баз даних, а також кілька різних клієнтських програм і бібліотек, засоби адміністрування і широкий спектр програмних інтерфейсів (API). Ми також постачаємо сервер MySQL у вигляді багатопоточної бібліотеки, яку можна підключити до призначеної для користувача програми і отримати компактний, більш швидкий і легкий в управлінні продукт. Доступно також велику кількість програмного забезпечення для MySQL, в більшій частині - безкоштовного.
   ^ Пристрій MySQL 
   MySQL складається з двох частин: серверної і клієнтської.
   Сервер MySQL постійно працює на комп'ютері. Клієнтські програми (наприклад, скрипти PHP) посилають серверу MySQL SQL-запити через механізм сокетів (тобто за допомогою мережевих засобів), сервер їх обробляє і запам'ятовує результат. Тобто скрипт (клієнт) вказує, яку інформацію він хоче отримати від сервера баз даних. Потім сервер баз даних посилає відповідь (результат) клієнту (скрипту). 
   Чому завжди передається не весь результат? Дуже просто: справа в тому, що розмір результуючого набору даних може бути занадто великим, і на його передачу по мережі піде надто багато часу. Та й рідко коли буває потрібно отримувати відразу весь висновок запиту (тобто всі записи, що задовольняють висловом запиту). Наприклад, нам може знадобитися лише підрахувати, скільки записів задовольняється тій чи іншій умові, або ж вибрати з даних тільки перші 10 записів. Механізм використання сокетів базується на технології клієнт-сервер, а це означає, що в системі повинна бути запущена спеціальна програма - MySQL-сервер, яка приймає і обробляє запити від програм. Тому що вся робота відбувається в дійсності на одній машині, накладні витрати по роботі з мережевими засобами незначні (установка і підтримка з'єднання з MySQL-сервером обходиться досить дешево). 
   Cтруктура MySQL трирівнева: бази даних - таблиці - записи. Бази даних і таблиці MySQL фізично представляються файлами з розширеннями frm, MYD, MYI. Логічно - таблиця являє собою сукупність записів. А записи - це сукупність полів різного типу. Ім'я бази даних MySQL унікальне в межах системи, а таблиці - в межах бази даних, поля - в межах таблиці. Один сервер MySQL може підтримувати відразу декілька баз даних, доступ до яких може розмежовуватись логіном і паролем. Знаючи логін і пароль, можна працювати з конкретною базою даних. Наприклад, можна створити або видалити в ній таблицю, додати записи і т. д. Зазвичай ім'я-ідентифікатор та пароль призначаються хостинг провайдерами, які і забезпечують підтримку MySQL для своїх користувачів.


^ Поля та його типи в MySQL

    База даних з точки зору MySQL (і деяких інших СУБД) - це звичайний каталог, що містить виконавчі файли певного формату - таблиці. Таблиці складаються із записів, а записи, у свою чергу, складаються з полів. Поле має два атрибути - ім'я і тип. 
   Тип поля може бути:
      • Цілим; 
      • Речовим; 
      • Строковим;
      • Бінарним; 
      • Дата і час; 
      • Перерахування та множини. 
   Можливі типи даних, діапазони та описи представлені в наступних таблицях: 

Тип

Діапазон

TINYINT

-128 ... +127

SMALLINT

-32768 ... +32767

MEDIUMINT

-8388608 ... +8 388 607

INT

-2147483648 ... +2 147 483 647

BIGINT

-9 223 372 036 854 775 808 ... +9 223 372 036 854 775 807


   Дійсні типи записуються у вигляді:
   ТИП (ДОВЖИНА, ЗНАКИ) [UNSIGNED]
   Довжина - це кількість знакомість, в яких буде розміщено все число при його передачі, а ЗНАКИ - це кількість знаків після десяткової точки, які будуть враховуватися. Якщо вказаний модифікатор UNSIGNED, знак числа враховуватися не буде.
Дійсні числа 

Тип

Опис

FLOAT

Невелика точність

DOUBLE

Подвійна точність

REAL

Те ж, що і DOUBLE

DECIMAL

Дробове число, яке зберігається у вигляді рядка

NUMERIC

Те ж, що і DECIMAL


   Будь-який рядок - це масив символів. При пошуку за допомогою оператора SELECT (ми розглянемо його далі) не враховується регістр символів: рядки "HELLO" і "Hello" вважаються однаковими. 
   Можна налаштувати MySQL на автоматичне перекодування символів - в цьому випадку в базі даних рядки будуть зберігатися в одному кодуванні, а виводитися - в іншій. 
   У більшості випадків застосовується тип VARCHAR або просто CHAR, що дозволяє зберігати рядки, що містять до 255 символів. У дужках після типу вказується довжина рядки: 
^ VARCHAR (48); 
CHAR (73); 
   Якщо 255 символів для вашої задачі недостатньо, можна використовувати інші види, наприклад, TEXT. 

Тип

Опис

TINYTEXT

Максимальна довжина 255 символів

TEXT

Максимальна довжина 65535 символів (64 Кб)

MEDIUMTEXT

Максимальна довжина 16777215 символів

LONGTEXT

Максимальна довжина 4294967295 символів


   Бінарні типи даних також можна використовувати для зберігання тексту, але при пошуку буде враховуватися регістр символів. До того ж, будь-який текстовий тип можна перетворити на бінарний, вказавши модифікатор BINARY:
^ VARCHAR (30) BINARY;
Бінарні типи даних

Тип

Опис

TINYBLOB

Максимум 255 символів

BLOB

Максимум 65535 символів

MEDIUMBLOB

Максимум 16777215 символів

LONGBLOB

Максимум 4294967295


   Примітка: Бінарні дані не перекодовуються "на льоту", якщо встановлено перекодування символів.
Дата і час

Тип

Опис

DATE

Дата в форматі РРР-ММ-ДД

TIME

Час у форматі ЧЧ: ХвХв: СС

TIMESTAMP

Дата і час у форматі timestamp, виводиться у вигляді ЧЧЧЧММДДЧЧХвХвСС

DATETIME

Дата і час у форматі РРРР-ММ-ДД ЧЧ: ХвХв: СС


   Інші типи даних MySQL розглядати безглуздо, оскільки застосування їх в PHP недоцільно


^ Оператори і команди MySQL

   Структурована мову запитів SQL дозволяє робити різні операції з базами даних: створювати таблиці, поміщати, оновлювати і видаляти з них дані, виконувати запити з таблиць і т.д. Далі ми послідовно розглянемо всі ці оператори. 
   Незважаючи на те, що останній стандарт SQL прийнятий в 1992 році, на сьогоднішній день немає ні однієї СУБД, де б він повністю виконувався. Більш того, в різних базах даних частина операцій здійснюється по-різному. Ми будемо дотримуватися діалекту SQL характерного для СУБД MySQL тому не всі запити можуть виконуватися для інших баз даних.
   Примітка: Команди SQL не чутливі до регістру, але традиційно вони набираються прописними літерами. 
   ^ Створення таблиць. Оператор CREATE 
   Створити таблицю через SQL-запит дозволяє оператор CREATE. Його синтаксис:
CREATE TABLE ім'я_таблиці 

Ім’я_поля1 Тип Модифікатор 
... 
Ім’я_поляN Тип Модифікатор 
[Первинний ключ]
[Зовнішній ключ]
)
   Взагалі, за допомогою оператора CREATE можна створювати й інші об'єкти, але ми їх розглядати не будемо, оскільки їх застосування досить обмежена.    В якості модифікаторів можна використовувати такі значення:       • NOT NULL - поле не може містити невизначеного значення (NULL), тобто поле повинно бути явно ініціалізований; 
      • PRIMARY KEY - поле буде первинним ключем (ідентифікатором запису), за яким можна однозначно ідентифікувати запис; 
      • AUTO_INCREMENT - при вставці нового запису значення цього поля буде автоматично збільшено на одиницю, тому в таблиці не буде двох записів з однаковим значенням цього поля; 
      • DEFAULT - задає значення, яке буде використано за замовчуванням, якщо при вставці запису поле не буде ініціалізувати явно. Значення за замовчуванням задається так:
   Ім'я_поля Тип DEFAULT Значення, наприклад 
^ NO INT DEFAULT 0 
NAME INT DEFAULT 'Петров' 
   Тепер створимо таблиці - "Товар", "Клієнти", "Замовлення": 
CREATE TABLE CLIENTS 

C_NO int NOT NULL, 
FIO char (40) NOT NULL, 
ADDR char (30) NOT NULL, 
CITY char (15) NOT NULL, 
PHONE char (11) NOT NULL 
); 
   Таблиця CLIENTS містить поля C_NO (номер клієнта), FIO (Прізвище, ім'я, по батькові), ADDR (Адреса), CITY (Місто) і PHONE (Телефон). Всі ці поля не можуть містити порожнього значення (NOT NULL). 
^ CREATE TABLE TOOLS 

T_NO int NOT NULL, 
DSEC char (40) NOT NULL, 
PRICE double (9,2) NOT NULL, 
QTY double (9,2) NOT NULL 
); 
   Дана таблиця буде містити дані про товари. Тип double (9,2) означає, що 9 знаків відносимо під цілу частину, і два - під дробову. QTY - це кількість товару на складі. 
^ CREATE TABLE ORDERS 

O_NO int NOT NULL,
DATE date NOT NULL,
C_NO int NOT NULL, 
T_NO int NOT NULL, 
QUANTITY double (9,2) NOT NULL, 
AMOUNT double (9,2) NOT NULL 
); 
   Ця таблиця містить відомості про замовлення - номер замовлення (O_NO), дату замовлення (DATE), номер клієнта (C_NO), номер товару (T_NO), кількість (QUANTITY) та суму всього замовлення AMOUNT (тобто AMOUNT = T_NO * TOOL_PRICE). 
   Додавання даних в таблицю. Оператор INSERT 
   Для додавання записів використовується оператор INSERT: 
INSERT INTO ім'я_таблиці [(Список полів)] 
VALUES (Список констант); 
   Після виконання оператора INSERT буде створений новий запис, в якості значень полів будуть використані відповідні константи, зазначені в списку VALUES. 
   Тепер додамо дані в наші таблиці. Додати дані можна за допомогою оператора INSERT. Розглянемо приклад використання оператора INSERT:
^ INSERT INTO CLIENTS 
VALUES (1, 'Іванов І.І.', 'Вокзальна 3', 'Москва', '09599911100 '); 
   Значення, що додаються повинні відповідати тому порядку, в якому поля перераховані в операторі CREATE. Якщо ви хочете додавати інформацію в іншому порядку, то ви повинні вказати цей порядок в операторі INSERT, наприклад: 
^ INSERT INTO CLIENTS (FIO, ADDRESS, C_NO, PHONE, CITY) 
VALUES ('Петров', 'Світ', '29 ', 2,' - ',' Єкатеринбург '); 
   За допомогою INSERT ми можемо додавати дані і в певні поля, наприклад, C_NO і FIO: 
INSERT INTO CLIENTS (C_NO, FIO) 
VALUES (1, 'Іванов'); 
   Проте, в нашому випадку сервер MySQL не виконає такий запит, оскільки всі інші поля рівні NULL (порожнє значення), а наша таблиця не приймає порожні значення. Аналогічно можна додати дані в інші таблиці.
   Як приклад, додамо дані в таблицю TOOLS: 
^ INSERT INTO TOOLS 
VALUES (1, 'Клавіатура ABC', 340.98); 
   Зверніть увагу, що ми поки не вказали первинні ключі таблиці, тому нам ніхто не заважає додати до таблиці однакові записи. Додати дату в поле DATE можна за допомогою функції TO_DATE:
^ INSERT INTO ORDERS 
VALUES (1, TO_DATE ("01 / 03/05, 'DD / MM / YY'), 1,1,1,340.98);
   Даний запис означає, що першого березня 2005 Іванов І.І. (C_NO = 1) замовив одну (QUANTITY = 1) клавіатуру ABC (T_NO = 1). 
   Оновлення записів. Оператор UPDATE 
   Синтаксис оператора UPDATE, який використовується для оновлення записів, виглядає так:
UPDATE ім'я_таблиці 
SET Поле1 = Значення1, ... , ПолеN = ЗначенняN 
[WHERE Умова];
   Якщо не задана умова WHERE, то буде модифікована вся таблиця, а це може спричинити за собою непередбачувані наслідки, оскільки для всіх записів будуть встановлені однакові значення полів, тому завжди вказуйте умову WHERE.
   Припустимо, нам необхідно оновити запис, якщо, наприклад, клієнт Іванов переїхав в інше місто і нам потрібно відзначити цю подію в базі даних. Зробимо наступне: 
^ UPDATE CLIENTS 
SET CITY = 'Псков' 
WHERE C_NO = 1; 
   Даний запит потрібно розуміти так: знайти запис, поле C_NO якої = 1 (це код клієнта Іванова), та встановити значення CITY рівним "Псков". 
   Видалення записів. Оператор DELETE 
   Якщо нам необхідно видалити всіх клієнтів, номери яких перевищують 5, то ми вчинимо наступним чином: 
^ DELETE FORM CLIENTS 
WHERE C_NO> 5; 
   За допомогою оператора DELETE можна видалити всі записи таблиці, вказавши умова, яке підійде для всіх записів, наприклад: 
DELETE FROM CLIENTS; 
   Якщо друга частина оператора DELETE-WHERE не вказана, отже, дія оператора поширюється на всі записи відразу. 
   Вибір записів. Оператор SELECT 
   Додавання, зміна та видалення записів - це, звичайно, дуже важливі команди, але ви часто будете використовувати оператор SELECT, який вибирає дані з таблиці. Синтаксис цього оператора більш складний: 
SELECT [DISTINCT | ALL] {* | [Поле1 AS псевдонім] [,..., полеN AS псевдонім]} 
FROM Ім’я_таблиці1 [,..., Ім’я_таблиціN] 
[WHERE умова] 
[GROUP BY список полів] [HAVING умова]
[ORDER BY список полів]
   Ми повністю не будемо розглядати оператор SELECT, краще це робити на конкретному прикладі. Зараз ми розглянемо оператор SELECT у загальних рисах. Наприклад, для виведення всіх записів з таблиці CLIENTS зробіть наступне: 
^ SELECT * FROM CLIENTS; 
   У результаті ви отримаєте таку відповідь сервера: 
C_NO FIO ADDR CITY PHONE 
1 Іванов І.І. Вокзальна 3 Москва 09599911100 
1 Іванов І.І. Вокзальна 3 Москва 09599911100 
2 Петров П.П. Світ 29 Єкатеринбург 3438920437 
   Зверніть увагу на перші два записи - вони однакові. Теоретично, додавання однакових записів можливо - адже ми не вказали первинний ключ таблиці. Якщо ви хочете виключити однакові записи з відповіді сервера (але не з таблиці), використовуйте запит:
^ SELECT DISTINCT * 
FROM CLIENTS;
   Припустимо, ви хочете вивести тільки прізвище і номер телефону клієнта, тоді використовуйте наступний запит: 
SELECT DISTINCT FIO, PHONE 
FROM CLIENTS; 
   Якщо вам потрібно вивести всі товари, ціна на які перевищує 800, то скористайтеся таким запитом: 
^ SELECT * 
FROM TOOLS 

WHERE PRICE> 800; 
   Ви можете використовувати наступні оператори відносин: <,>, =, <>, <=,> =. 
   Якщо у вашій таблиці присутні кілька однофамільців, то для виведення інформації про всі з них, використовуйте модифікатор LIKE, наприклад: 
^ SELECT *
FROM CLIENTS

WHERE FIO LIKE '% Іванов%'; 
   Наведений запит можна задати так: вивести інформацію про клієнтів, прізвище яких схожі на 'Іванов'. 
   Якщо вам необхідно вибрати дані з різних таблиць, то перед іменем поля потрібно вказувати ім'я таблиці. Ось запит, який дозволяє вивести імена всіх клієнтів, які хоча б один раз купували товар:
^ SELECT DISTINCT CLIENTS.FIO 
FROM CLIENTS, ORDERS 
WHERE CLIENTS.C_NO = ORDERS.C_NO; 
   Оператор SELECT дозволяє Використовувати вкладені запити, однак MySQL їх не підтримує. 
   Внутрішні функції MIN, MAX, AVG, SUM 
   При роботі з оператором SELECT вам доступні кілька дуже корисних внутрішніх функцій MySQL, який обчислює кількість елементів (COUNT), суму елементів (SUM), максимальне і мінімальне значення (MAX і MIN), а також середнє значення (AVG). 
   Наступні оператори виведуть, відповідно, кількість записів у таблиці CLIENTS, найдорожчий товар та суму цін всіх товарів: 
^ SELECT COUNT (*) 
FROM CLIENTS; 
SELECT MAX (PRICE) 
FORM TOOLS; 
SELECT SUM (PRICE)
FROM TOOLS; 
   Угрупування записів 
   Оператор SELECT дозволяє групувати повернені значення. Наприклад, клієнт Іванов (C_NO = 1) кілька разів замовляв якийсь товар. Значить, його номер зустрічається в таблиці ORDERS кілька разів. Інший клієнт також міг зробити кілька замовлень. Ми можемо згрупувати всі записи по полю C_NO (номер клієнта), а потім вивести суму замовлення кожного клієнта.
^ SELECT CLIENTS.FIO, SUM (ORDERS.AMOUNT) AS TOTALSUM 
FROM CLIENTS, ORDERS 
WHERE CLIENTS.C_NO = ORDERS.C_NO 
GROUP BY ORDERS.C_NO;
   Угруповання виконує оператор GROUP BY, який є частиною оператора SELECT. Оператор GROUP BY можна обмежити за допомогою HAVING. Цей оператор використовується для відбору рядків, що повертаються GROUP BY. HAVING можна вважати аналогом WHERE, але тільки для GROUP BY: HAVING <умова> 
   Наприклад, нас цікавлять тільки клієнти, які замовили товарів на загальну суму, що перевищує 1500: 
^ SELECT CLIENTS.FIO, SUM (ORDERS.AMOUNT) AS TOTALSUM 
FROM CLIENTS, ORDERS 
WHERE CLIENTS.C_NO = ORDERS.C_NO 
GROUP BY ORDERS.C_NO 
HAVING TOTALSUM> 1500; 
   У цьому запиті ми використовували псевдонім стовпця TOTALSUM. У деяких серверах SQL для визначення псевдоніму не потрібно писати службове слово AS, а деякі вимагають застосування знака рівності: 
SUM (ORDERS.AMOUNT) TOTALSUM або TOTALSUM = SUM (ORDERS.AMOUNT) 
   Сортування записів 
   Поки ми не встановили первинний ключ, сортування таблиці не виконується. Дані будуть відображені в порядку їх занесення в таблицю. Для сортування по полю C_NO результат виведення таблиці CLIENTS використовують наступний оператор (сама таблиця при цьому не сортується): 
^ SELECT *
FROM CLIENTS 

ORDER BY C_NO;
Ключі 
   Припустимо, що хтось додав у таблицю CLIENTS запис: 
1 Сидоров Свободи 7 Калінінград 0113452103 
   У той же час, до цього номер 1 був закріплений за Івановим. У нас вийшло, що один і той же номер відповідає різним клієнтам. Щоб уникнути такої плутанини, необхідно Використовувати первинні ключі: 
^ ALTER TABLE CUSTOMER 
ADD PRIMARY KEY (C_NO); 
   Після цього запиту поле C_NO може містити лише унікальні значення. В якості первинного ключа не можна використовувати поле, допустиме значення NULL. Створити первинний ключ можна й простіше - при створенні таблиці наступним чином: 
^ CREATE TABLE CLIENTS 

C_NO int NOT NULL, 
FIO char (50) NOT NULL, 
ADDR char (55) NOT NULL, 
CITY char (20) NOT NULL,
PRIMARY KEY (C_NO); 
); 
   Таблиця ORDERS містить відомості про замовлення. По полю C_MO цієї таблиці ідентифікується замовник. Припустимо, що в таблицю ORDERS хтось ввів значення, якого немає в таблиці CLIENTS. Хто замовив товар? Нам потрібно не допустити подібної ситуації, тому слід використовувати подібний запит: 
^ ALTER TABLE ORDERS 
ADD FOREIGN KEY (C_NO) REFERENCES CLIENTS; 
   Введені в таблицю ORDERS номери клієнтів C_NO повинні існувати в таблиці CLIENTS. Аналогічно потрібно додати зовнішній ключ по полю T_NO. Ця можливість називається декларативної цілісністю.
   Команда ALTER використовується не тільки для надання ключів. Вона призначена для реорганізації таблиці в цілому. Ви хочете додати ще одне поле? Або встановити список допустимих значень для кожного з полів. Все це можна зробити за допомогою команди ALTER: 
^ ALTER TABLE CLIENTS 
ADD ZIP char (7) NULL; 
Цей оператор додає в таблицю CLIENTS нове поле ZIP типу char. Зверніть увагу, що ви не можете додати нове поле зі значенням NOT NULL в таблицю, в якій вже є дані. Наприклад, якщо компанія працює тільки з клієнтами Москви і Єкатеринбурга, то доцільно ввести список допустимих значень для таблиці CLIENTS: 
^ ALTER TABLE CLIENTS 
ADD CONSTRAINT INVALID_STATE SHECK (CITY IN ('Москва', 'Єкатеринбург')); 
   Використання зовнішніх ключів 
   Тепер заглибимося у вивчення SQL. Ви вже знаєте, як додавати первинний ключ, тепер додамо зовнішній ключ при створенні таблиці. Зовнішні ключі використовуються для зв'язку однієї таблиці з іншою. Наприклад, у таблиці CLIENTS у нас є два клієнти - Іванов (C_NO = 1) і Петров (C_NO = 2). Оператор в магазині при оформленні замовлення помилився і вказав неіснуючий номер, наприклад, C_NO = 3. Як ми потім зможемо ідентифікувати клієнта? Для вирішення такої проблеми і існують зовнішні ключі: 
^ CREATE TABLE T 

/ * Опис полів таблиці * / 
FOREING KEY KEY_NAME (LIST) 
REFERENCES ANOTHER_TABLE [(LIST2)] 
[ON DELETE OPTION] 
[ON UPDATE OPTION] 
); 
   Тут: 
      • KEY_NAME - Ім'я ключа. Ім'я не є обов'язковим, але рекомендується завжди вказувати ім'я ключа - якщо ви не вкажете ім'я ключа, ви потім не зможете його видалити; 
      • LIST - це список полів, що входять в зовнішній ключ. 
      • ANOTHER_TABLE - це інша таблиця, за якою встановлюється не зовнішній ключ, а необов'язковий елемент;
      • LIST2 - це список полів цієї таблиці. Типи полів у списку LIST повинні збігатися з типами полів у списку LIST2. 
   Припустимо, що в першій таблиці у нас є поля - NO і NAME - цілого і символьного типу відповідно. У другій таблиці у нас є поля з однаковими іменами та типами. Визначення зовнішнього ключа: 
^ FOREIGN KEY KEY_NAME (NO, NAME) 
REFERENCES ANOTHER_TABLE (NAME, NO) 
   Це визначення некоректно, тому що типи полів NO і NAME не збігаються. Потрібно використовувати таке визначення: 
FOREIGN KEY KEY_NAME (NO, NAME) 
^ REFERENCES ANOTHER_TABLE (NO, NAME) 
[ON DELETE

Схожі:

Інформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття iconФункции php для работы с Mysql
Основной функцией для соединения с сервером Mysql является mysql connect(), которая подключает скрипт к серверу баз данных Mysql...
Інформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття iconФункции php для работы с Mysql
Основной функцией для соединения с сервером Mysql является mysql connect(), которая подключает скрипт к серверу баз данных Mysql...
Інформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття iconФункции php для работы с Mysql
Основной функцией для соединения с сервером Mysql является mysql connect(), которая подключает скрипт к серверу баз данных Mysql...
Інформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття iconФункции php для работы с Mysql
Основной функцией для соединения с сервером Mysql является mysql connect(), которая подключает скрипт к серверу баз данных Mysql...
Інформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття iconФормат опису модуля
Мова php: основні типи змінних; арифметичні та логічні операції над змінними; функції; робота з датою та файлами; обробка html-форм;...
Інформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття iconIii курс, осінній триместр 2006 – 2007 н р
Центральне місце в курсі займає програмування систем електронної комерції як розподілених клієнт-серверних застосувань; детально...
Інформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття iconІ.І. Мечникова інститут інноваційної та післядиплом
В методическом пособии рассматривается установка, настройка и тестирование web сервера Apache 2 и Интернет технологий ssi, perl,...
Інформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття iconІ.І. Мечникова інститут інноваційної та післядиплом
В методическом пособии рассматривается установка, настройка и тестирование web сервера Apache 2 и Интернет технологий ssi, perl,...
Інформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття iconТема : Основні поняття бази даних. Типи даних, що зберігаються в базі даних. Проектування бази даних і створення структури бази даних. Введення і редагування даних
Мета. Ознайомити учнів з основними поняттями бази даних, з типами даних. Формувати навички створення та редагування структури бази...
Інформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття iconУстановка и настройка mysql
Стандартная конфигурация. (В выборочной можете поменять кодировку, количество одновременно подключаемых и т д.)
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи