пятница, 29 марта 2013 г.

TEST IT: SQL - с чего начинать?

Доброй пятницы!
С вами снова TEST IT и ваш любимый сменный-редактор-по-пятницам Татьяна Зинченко.

Сегодня мы поговорим об SQL. Тем более, есть повод: письмо Алексея. Алексей пишет:

"Я только начинаю учить SQL. С чего бы Вы мне посоветовали начать? Какая литература бы мне помогла?"
Об SQL я могу говорить часами. А если учесть мой курс SQL для тестировщиков, то становится понятно, что и вовсе месяцами :) Но раз нужно уложиться в формат одного ответа - я попробую.

Итак.

С чего начинается SQL?
С того, что мы узнаем разницу между Базой Данных (БД) и Системой Управления Базами Данных (СУБД). А еще узнаём, что SQL - это такой язык, который помогает нам взаимодействовать с БД посредством СУБД или какого-нибудь графического интерфейса (например, консоли).

После этого мы идем в стандарты и там узнаем, что есть такой ANSI (American National Standards Institute), который занимался стандартизацией языка SQL почти с самых первых годов его развития. Там же узнаем, что есть стандарты языка SQL. Из Википедии узнаем, что стандартов было много, самый первый - 1986 года, а последний совсем свежий - 2011 года. Но самым значимым (в плане добавлений новых фич) считается версия 1999 года (SQL-3).

А потом?
А потом мы узнаем, что в мире есть много разных СУБД, как платных, так и бесплатных. И вот тут начинается самое интересное. Дело в том, что язык, который используется в одной конкретной СУБД может отличаться от другой конкретной СУБД. Например, в СУБД MS SQL Server (от небезызвестной Microsoft) используется язык Transact-SQL (или T-SQL), в СУБД Oracle используется тоже свой тип SQL.

И вот здесь начинается самое интересное. "С чего начать" зависит от того, какой тип СУБД используется у вас на конкретном проекте. Конечно, если Вы освоите какую-то СУБД хорошо - для вас не будет проблемой перейти на другую. Ну, немножко почитать про разницу в запросах и особенности - и все. Много времени это не займет. Но вот изучать самую первую СУБД в отрыве от реального проекта я бы все же не советовала.

Обычно первое, что требуется от тестировщика, впервые допущенного к БД, - просто посмотреть записи в ней вручную. Т.е. найти самостоятельно таблицу, а в ней - столбец/строку, в которую должны были добавиться данные. Особых умений для этого не требуется - достаточно ознакомиться с интерфейсом конкретной СУБД и выспросить у программистов какие названия столбцов в базе соответствуют каким названиям полей на пользовательском интерфейсе.

Потом тестировщику позволяют сделать его первый SELECT. При этом благоразумные админы делают пару бэкапов. Так, на всякий случай.

И только в том случае, если все прошло хорошо, вам позволят перейти к UPDATE или даже DELETE, а то и вовсе DROP. А, может, и индексы допустят поменять - кто знает?

Если нет, но очень хочется.
Если СУБД на проекте нет, и проекта нет, а SQL изучить хочется "чтобы было", то рекомендую начать с изучения не просто языка, а в связке с чем-то. Самой простой в освоении и наиболее приближенной к ANSI SQL является MySQL. В сети можно найти множество книг и курсов по ней, но и сам мануал к ней достаточно понятный и обширный. Единственный недостаток - всё это рассчитано либо на программистов, либо на системных администраторов. Почему-то про тестировщиков в контексте СУБД почти никто не думает.. :) Поэтому всю полученную информацию нужно будет отфильтровывать через призму нашей профессии.

На этом остановлюсь, хотя душа требует полета и еще 20-30 страниц текста.
Если остались вопросы - обязательно пишите! Наш адрес все еще: sprosi.testera@gmail.com, публикация ответов все еще по пятницам! :)

Удачи в освоении и приятных выходных! :)


9 комментариев:

  1. Возможно будет полезно:
    Теория сжато: http://www.w3schools.com/sql/sql_intro.asp

    Задачки:
    http://en.wikibooks.org/wiki/SQL_Exercises
    http://www.sqlcourse.com/index.html
    http://www.sqlcourse2.com/index.html

    ОтветитьУдалить
  2. SQL начинается с теории множеств :)

    ОтветитьУдалить
    Ответы
    1. Ну, у кого с чего :) У некоторых вообще с: "Вот тебе автотесты, а еще там SQL-запрос кривой - поправь!" А там - джойны на кучу таблиц ))

      Удалить
  3. Помимо всего прочего есть классный сайт с краткой теорией и практикой http://sql-ex.ru/

    ОтветитьУдалить
  4. Очень рекомендую курс https://class.coursera.org/db/class/index

    Насыщенные лекции, хорошие упражнения)

    ОтветитьУдалить
    Ответы
    1. Для тех, кто знает хорошо английский, безусловно, очень хорошо! :)

      Удалить
  5. Я, конечно, могу ошибаться, но мне кажется, что как раз-таки SQL можно изучать и в отрыве от конкретной СУБД. И, я бы даже сказал, нужно: без хорошего знания SQL (по крайней мере, на уровне запросов средней сложности) до реальных проектов дело может и не дойти - до сих пор помню проваленное собеседование несколько лет назад (как и пару несостоявшихся - по той же причине). А для тестировщиков SQL - это часть "джентльменского набора" (прошу прощения у леди :)).
    Литературы навалом - начинающим я бы, наверное, рекомендовал любую из книг Мартина Грабера (кое-что есть и в Сети: http://www.sql.ru/docs/sql/u_sql/) - лаконично и доступно. А вот чтобы параллельно с изучением теории "набить руку", я бы посоветовал Interactive SQL tutorials, например, вот этот: http://sqlzoo.net/wiki/SELECT

    ОтветитьУдалить