
ДЕРЖАВНИЙ УНІВЕРСИТЕТ ІНФОРМАЦІЙНО – КОМУНІКАЦІЙНИХ
ТЕХНОЛОГІЙ
ЛЬВІВСЬКИЙ КОЛЕДЖ ДЕРЖАВНОГО УНІВЕРСИТЕТУ
ІНФОРМАЦІЙНО – КОМУНІКАЦІЙНИХ ТЕХНОЛОГІЙ
Навчальна дисципліна: Бази даних
Лабораторія: Комп’ютерних технологій
Розглянуто Затверджую
на засіданні циклової комісії Заступник директора з НВР
Обслуговування комп’ютерної техніки
Протокол №___від «___»_________20__р.
Голова комісії ______________Кужій Л.І. ___________Плешівський Я.М.
Інструкція
до лабораторної роботи №3
Використання монітору СУБД MySQL
Склала викладач:
Дмитрів Г.Р.
Львів – 2011
Назва лабораторії: Комп’ютерних технологій.
Навчальна дисципліна: Бази даних.
Назва роботи: “Використання монітору СУБД MySQL”.
Мета роботи: Вивчити основні команди для роботи з монітором СУБД MySQL.
1. Теоретичні положення
Приєднання до сервера й від'єднання від нього
При підключенні до сервера за допомогою mysql зазвичай потрібно ввести ім’я користувача MySQL і, у більшості випадків, пароль. Якщо сервер запущений не на тому комп’ютері, з якого ви ввійшли в систему, необхідно також вказати ім’я хоста. Параметри з’єднання (а саме – відповідне ім’я хоста, користувача й пароль) ви зможете довідатися в адміністратора. Одержавши відповідні параметри, приєднатися до сервера можна в такий спосіб:
shell> mysql -h host -u user -p Enter password: ********
Символи ******** позначають ваш пароль; введіть його, коли mysql виведе на екран запит Enter password:.
Якщо все спрацює, на екрані повинна з’явитися така інформація й мітка командного рядка mysql>:
shell> mysql -h host -u user -p Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 459 to server version: 3.22.20 a-log
Type "help" for help. mysql>
Мітка позначає, що програма mysql готова до введення команд. У деяких варіантах установки MySQL можливе приєднання до запущеного на локальному хості сервера без введення імені користувача (користувач anonymous). Якщо ваша система налаштована саме так, приєднатися до сервера ви зможете, запустивши mysql з такими параметрами:
shell> mysql
Після встановлення з’єднання можна в будь-який момент відключитися від сервера, набравши в командному рядку mysql> команду QUIT:
mysql> QUIT Bye
Від’єднатися від сервера можна й за допомогою сполучення клавіш Control-D.
Більша частина наведених нижче прикладів побудована з огляду на те, що з’єднання із сервером вже встановлене. Це видно по наявності в них командного рядка mysql>.
Введення запитів
Приєднайтеся до сервера, як було описано вище. У такий спосіб ніяка база обрана не буде, але це не страшно. На даному етапі нам важливо розібратися зі створенням запитів, ніж відразу ускладнювати собі життя створенням таблиць, завантаженням у них даних і отримуванням їх звідти. У цьому розділі роз’яснюються основні принципи введення команд; на прикладі декількох запитів ви можете ближче познайомитися з роботою mysql.
Нижче наведена проста команда, що запитує в сервера інформацію про його версію й поточну дату. Введіть її в командному рядку mysql> і натисніть Enter:
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+ | VERSION() | CURRENT_DATE | +--------------+--------------+ | 3.22.20a-log | 1999-03-19 | +--------------+--------------+ 1 row in set (0.01 sec) mysql>
Цей запит ілюструє такі особливості mysql:
Команда зазвичай складається з SQL-виразу, за яким стоїть крапка з комою. (З цього правила є виняток – команди без крапки з комою. Одним з них є згадана вище команда QUIT, інші ми розглянемо пізніше.)
Коли користувач вводить команду, mysql відправляє її серверу для виконання й виводить на екран спочатку результати, а потім – новий рядок mysql>, що означає готовність до виконання нових команд.
mysql виводить результати роботи запиту у вигляді таблиці (рядків і стовпців). У першому рядку цієї таблиці містяться заголовки стовпців, а в наступних рядках - властиво результати. Звичайно заголовками стовпців стають імена, отримані з таблиць бази. Якщо ж виймається не стовпець таблиці, а значення виразу (як це відбувається в наведеному вище прикладі), mysql дає стовпцю ім'я запитуваного виразу.
mysql повідомляє кількість рядків, що повертаються, і час виконання запиту, що дозволяє до деякої міри скласти уявлення про продуктивність сервера. Ці значення звичайно досить вражають, тому що представляють звичайний (а не машинний час), крім того, на них впливає завантаження сервера й швидкість роботи мережі (для скорочення розмірів лістингів в інших прикладах рядок "rows in set" вилучений).
Для введення ключових слів можна використовувати будь-який регістр символів. Наведені нижче запити абсолютно ідентичні:
mysql> SELECT VERSION(), CURRENT_DATE; mysql> select version(), current_date; mysql> SeLeCt vErSiOn(), current_DATE;
А це – ще один запит. У ньому демонструється використання mysql як нескладний калькулятор:
mysql> SELECT SIN(PI()/4), (4+1)*5; +-------------+---------+ | SIN(PI()/4) | (4+1)*5 | +-------------+---------+ | 0.707107 | 25 | +-------------+---------+
Усі команди, представлені вище, були відносно короткими й складалися з одного рядка. В один рядок можна помістити й декілька команд. Але кожна з них повинна закінчуватися крапкою з комою:
mysql> SELECT VERSION(); SELECT NOW(); +--------------+ | VERSION() | +--------------+ | 3.22.20a-log | +--------------+ +---------------------+ | NOW() | +---------------------+ | 1999-03-19 00:15:33 | +---------------------+
Поміщати всі команди в один рядок зовсім не обов’язково, так що створення довгих команд, що займають кілька рядків, ніяких проблем не викликає. Для mysql ознакою завершення виразу є крапка з комою, а не кінець рядка (інакше кажучи, mysql приймає команди без форматування: рядки з командами збираються, але не виконуються доти, поки програма не виявить крапку з комою).
От приклад нескладного виразу, що займає декілька рядків:
mysql> SELECT -> USER() -> , -> CURRENT_DATE; +--------------------+--------------+ | USER() | CURRENT_DATE | +--------------------+--------------+ | joesmith@localhost | 1999-03-18 | +--------------------+--------------+
Зверніть увагу на те, як змінилася мітка командного рядка (з mysql> на ->) після введення першого рядка цього запиту. У такий спосіб програма mysql показує, що завершеного виразу вона поки що не одержала й очікує його повного введення. Ця мітка дуже корисна, тому що надає досить важливу інформацію про стан програми. З її допомогою завжди можна довідатися, чого чекає mysql.
Якщо ви вирішите скасувати виконання набраної команди, то, наберіть \c:
mysql> SELECT -> USER() -> \c mysql>
Зверніть увагу на мітку: після введення команди \c вона знову набуває вигляду mysql>, показуючи, що програма mysql перейшла в режим очікування вказівок.
У цій таблиці наведені усі можливі варіанти вигляду мітки командного рядка й стани mysql, що їм відповідають:
Мітка
Значення
mysql>
Очікування нової команди.
->
Очікування наступного рядка багатострічкової команди.
">
Очікування наступного рядка, збір стрічкового виразу, що починається з одинарних лапок (""").
">
Очікування наступного рядка, збір стрічкового виразу, що починається з подвійних лапок (""").
Зазвичай багатострічкові команди виходять випадково, коли хочеш створити звичайну команду, але забуваєш поставити завершальну крапку з комою. У такому випадку mysql очікує продовження:
mysql> SELECT USER() ->
Якщо з вами відбулося подібне (ви думаєте, що завершили команду, але програма видає тільки мітку ->), то mysql, найімовірніше, чекає крапки з комою. Не звернувши увагу на мітку командного рядка, можна досить довго чекати виконання команди, не розуміючи в чому справа. А досить лише поставити крапку з комою, завершивши команду, яку mysql і виконає:
mysql> SELECT USER() -> ; +--------------------+ | USER() | +--------------------+ | joesmith@localhost | +--------------------+
Мітки "> і "> використовуються при зборі рядків. В MySQL рядки можна помістити як в одинарні (`""), так і в подвійні (`"") лапки (можна, наприклад, написати "hello" або "goodbye"), до того ж, mysql дозволяє вводити стрічкові вирази, що складаються з декількох рядків тексту. Мітка "> або "> позначає, що ви ввели рядок, що відкривається символом лапок `"" або `"", але ще не ввели завершальний стрічковий вираз закриваючі лапки.
Це, звичайно, нормально, якщо ви збираєтеся створити великий стрічковий вираз з декількох рядків. Але це не занадто частий випадок. Набагато частіше виявляється, що ви просто забули поставити закриваючі лапки. Наприклад:
mysql> SELECT * FROM my_table WHERE name = "Smith AND age < 30; ">
Якщо ввести таку команду SELECT, натиснути Enter і почекати результатів, нічого не відбудеться. Тоді й потрібно звернути увагу на мітку командного рядка, що виглядає так: ">. Це значить, що mysql чекає введення завершальної частини рядка. (Тепер помітили помилку в команді? У рядку "Smith немає закриваючих лапок.)
Що робити в цьому випадку? Простіше всього було б скасувати команду. Однак тепер просто набрати \c не можна, тому що mysql прийме ці символи за частину стрічки, що збирається! Замість цього потрібно ввести закриваючі лапки (тим самим давши mysql зрозуміти, що рядок закінчився) і лише потім набрати \c:
mysql> SELECT * FROM my_table WHERE name = "Smith AND age < 30; "> "\c mysql>
Мітка командного рядка знову набуде вигляду mysql>, показуючи готовність mysql до виконання команд.
Знати значення міток "> і "> необхідно, тому що при введенні незавершеного рядка всі наступні рядки будуть ігноруватися mysql - включаючи рядок з командою QUIT! Це може ґрунтовно спантеличити, особливо якщо не знати, що для скасування команди перед відповідною послідовністю символів необхідно поставити закриваючі лапки.