Facebook google+ e-mail
Учимся программировать на JAVA
Практикум по программированию на языке Java

Занятие 13. База данных – первое знакомство

Предыдущее (12-е) занятие (Данные, данные, данные...) мы закончили тем, что предложили вам самостоятельно выбрать базу данных (БД) из предложенного списка и установить ее на свой компьютер. Если помните, мы предупредили вас, что не сможем оказать помощь в решении этой задачи. Что же касается нас, то мы остановили свой выбор на БД MariaDB (ближайшем «родственнике» другой популярной БД MySQL). Вы, конечно, свободны в своем выборе, но если вам «приглянулась» другая БД, то тогда кое в чем вам придется разбираться самостоятельно. В той или иной степени все о чем мы сейчас будем говорить присутствует в любых БД, но вот детали – детали могут отличаться. Итак, приступим...

Прежде всего, удобно если выбранная вами БД работает как служба (напомним, что ведем изложение применительно к операционным системам семейства Microsoft). Это означает, что сервер БД будет автоматически запускаться при каждой перезагрузке операционной системы и БД будет доступна всегда и без каких-либо усилий с вашей стороны. Как это сделать (если это вообще возможно сделать с выбранной вами БД) должно быть указано в документации. Это необязательное требование (сервер БД можно запускать и вручную), но если есть возможность запускать его как службу – так и сделайте; это сэкономит вам массу времени.

Для MariaDB (равно как и для MySQL) служба автоматического запуска сервера в общем списке служб выглядит примерно так:

Программируем на Java. Базы данных. Автоматический запуск сервера

(не обращайте внимания на то, что служба называется «MySQL»; просто MariaDB и MySQL очень похожи).

Из рисунка видно, что исполняемые файлы БД на нашем компьютере располагаются в каталоге «C:\MariaDB\bin». Сами базы данных располагаются рядышком - в каталоге «C:\MariaDB\data». Если у вас не получается запустить сервер БД как службу, не расстраивайтесь: его можно запустить и вручную; посмотрите в документации как это делается. И не забывайте о форумах (скажем, www.sql.ru) – обычно там получить совет можно намного быстрее. Позже, когда вы немного освоитесь с БД вы сможете вернуться и спокойно разобраться с нерешенными проблемами. Сейчас важно только одно – сервер БД нужно просто запустить и не важно как вы это сделаете.

Давайте посмотрим как работать с БД в режиме командной строки (существуют, конечно, и графические инструменты, но нам для начала хватит и командной строки).

Переходим в каталог исполняемых файлов и запускаем на исполнение программу mysql.exe (это программа-клиент, осуществляющая взаимодействие пользователя,

т.е. нас с вами и сервером БД). Если сервер БД работает (т.е. способен обрабатывать поступающие к нему запросы), то вы увидите примерно следующее:

Программируем на Java. Базы данных. Программа-клиент

После строки приглашения вы можете вводить команды. Список команд можно посмотреть набрав «\h» и нажав ENTER:

Программируем на Java. Базы данных. Ввод команд

Сразу запомните (а лучше – запишите) команду завершения работы с программой-клиентом mysql.exe: «\q». Проверьте эту команду; программа-клиент должна завершить работу, но сервер БД будет продолжать функционировать. Мы добились поразительного результата: научились запускать программу-клиент и завершать ее работу. Но погодите, то ли еще будет!

Так, ладно, поигрались и хватит; запустите опять программу-клиент. Давайте создадим БД.

Изучив список команд программы-клиента, вы не увидите ничего похожего на команду создания БД. И это правильно, т.к. программа-клиент не обязана делать все, что вам вздумается. Она только предоставляет возможность доступа к серверу БД. Вся работа с базами данных осуществляется на сервере. Как же «достучаться» к серверу БД, как дать ему приказ о создании новой БД? Это делается посредством отсылки серверу БД команд, составленных на специальном языке. Вполне вероятно, что вам попадалась на глаза аббревиатура «SQL». Под этими тремя буквами скрывается фраза «Structured Query Language», или «структурированный язык запросов». SQL – основной язык и инструмент работы с БД. Сейчас мы не будем его описывать (а в нашем случае просто невозможно, т.к. SQL требует куда большего времени и места, чем у нас имеется); по ходу дела мы будем рассказывать только то, что нам действительно будет необходимо, а об остальном вы можете прочесть в многочисленных книгах.

В целом, SQL весьма сложный язык, позволяющий

  1. описывать базы данных и таблицы из которых базы данных состоят;
  2. производить выборку (поиск) в базах данных, добавлять новые, удалять и модифицировать существующие данные;
  3. управлять представлением данных, управлять работой сервера БД.

Все вышеперечисленное – основные функции, которые возложены на SQL, но фактически – SQL куда более мощный инструмент.

Программа-клиент позволяет вводить и отсылать серверу БД команды (т.е. указания), составленные на SQL. Давайте так и сделаем – прикажем серверу БД создать для нас базу данных с именем «MoneyForNothing»:

create database moneyfornothing;
Программируем на Java. Базы данных. Создаем базу данных

Сервер БД ответил «Query OK»; это означает, что введенная вами команда выполнена успешно.

Теперь мы можем проверить – действительно ли все так хорошо. Для этого загляните в каталог «..\data». Там должен появиться подкаталог moneyfornothing. Итак, кое-чего мы уже достигли! Правда, сам каталог фактически пуст: ни одной таблицы, из которых, собственно, и состоит БД, мы еще не создали. Но, тем не менее, прогресс налицо.

Обратите внимание, что команды, передаваемые серверу БД должны оканчиваться символом «точка с запятой» (т.е. «;») или «\g».

Регистр символов во многих случаях (а у нас как раз такой случай) не имеет значения.

Если вы захотите удалить БД, то для этого нужно ввести команду

drop database moneyfornothing;

и сервер БД послушно удалит БД. С этой командой, очевидно, нужно быть очень аккуратным, т.к. можно уничтожить ценные данные, так что будьте очень внимательны. Сейчас, конечно, эта команда никакого ущерба не нанесет, но чуть позже (когда в БД будут накоплены данные), удаление БД может привести к очень неприятным последствиям.

Что произойдет если команда не может быть выполнена сервером БД? Причиной этому могут быть синтаксические ошибки при наборе команд или неправильное их использование. Допустим, мы хотим удалить несуществующую БД с именем notexistbase:

drop database notexistbase;

Вот что вы увидите на экране:

Программируем на Java. Базы данных. Удаление базы данных

Причина ошибки очевидна: такой БД не существует.

На этом мы завершим наше занятие. Потренируйтесь на досуге создавая и удаляя БД (только, пожалуйста, не трогайте системных БД, созданных при инсталляции). И полистайте документацию по БД – обязательно пригодится.

 

Занятие 12. Данные, данные, данные...

 

Занятие 14. Базы данных: подключение и первые таблицы

 

Автор: Alex Tuesday

 

Все уроки ... 07.06.2014