Подборка материалов для изучения баз данных и SQL. Архив рубрики: Книги по SQL

Просто и доступно рассмотрены теоретические основы СУБД SQL Server 2012. Показана установка, конфигурирование и поддержка MS SQL Server 2012. Описан язык манипулирования данными Transact-SQL. Рассмотрены создание базы данных, изменение таблиц и их содержимого, запросы, индексы, представления, триггеры, хранимые процедуры и функции, определенные пользователем.
Показана реализация безопасности с использованием аутентификации, шифрования и авторизации. Уделено внимание автоматизации задач администрирования СУБД. Рассмотрено создание резервных копий данных и выполнение восстановления системы. Описаны службы Microsoft Analysis Services, Microsoft Reporting Services и другие инструменты для бизнес-анализа. Рассмотрены технология работы с документами XML, управление пространственными данными, полнотекстовый поиск и многое другое. Для начинающих программистов.

В современном мире наивысшую ценность имеет информация, но не менее важно уметь этой информацией управлять. Эта книга посвящена языку запросов SQL и управлению базами данных. Материал излагается, начиная с описания базовых запросов и заканчивая сложными манипуляциями с помощью объединений, подзапросов и транзакций. Если вы пытаетесь разобраться в организации и управлении базами данных – эта книга будет отличным практическим пособием и предоставит вам все необходимые инструменты. Особенностью данного издания является уникальный способ подачи материала, выделяющий серию «Head First» издательства O\’Reilly в ряду множества скучных книг, посвященных программированию.

Эта книга расскажет вам, как работать с командами и инструкциями SQL, создавать и настраивать реляционные базы данных, загружать и модифицировать объекты баз данных, выполнять мощные запросы, повышать производительность и выстраивать систему безопасности. Вы узнаете, как использовать инструкции DDL и применять API, интегрировать XML и сценарии Java, использовать объекты SQL, создавать веб-серверы, работать с удаленным доступом и выполнять распределенные транзакции.
В этой книге вы найдете такие сведения, как описания работы с базами данных в памяти, потоковыми и встраиваемыми базами данных, базами данных для мобильных и наладонных устройств, и многое другое.

SQL для простых смертных — это полное введение в структурированный язык запросов, написанное специально для начинающих.

Если вы не имеете опыта управления базами данных, благодаря этой книге вы научитесь работать с SQL легко и свободно, применяя простые запросы и сложные операции. Для овладения SQL:

— Усвойте смысл понятий, связанных с управлением базой данных, с помощью краткого и простого введения в реляционные базы данных.
— Следуйте данным инструкциям по применению основных команд SQL для поиска размещенной в таблицах данных информации и работы с ней. Научитесь выбирать и суммировать данные, а также умело ими управлять.
— Эффективно работайте с составными таблицами данных, применяя развитую технику запроса к более чем одной таблице одновременно, конструируя сложные запросы и подзапросы.
— Создавайте новые таблицы данных для приложений в сфере торгового бизнеса. Изучайте важные принципы эффективного проектирования базы данных и технику обеспечения целостности и защиты данных.
— Учитесь применять SQL с языками программирования, используя специальную главу для программистов.

SQL is older than most of us, so I can’t claim to be conveying some extraordinary stuff through this book. What makes this title unique is its slender size. If you are looking for a real compact practical guide on SQL, then this book is for you. For beginners, I have tried to confine an ocean to a bucket in order to equip them with SQL knowledge in the shortest time possible. SQL language is too voluminous and exposure of every aspect of this huge language is a very tedious task. Keeping aside the least utilized features, this book is rolled out to focus on the more operational areas of the language. It is meant to help you learn SQL quickly by yourself. It follows a tutorial approach wherein hundreds of hands-on exercises are provided, augmented with illustrations, to teach you SQL in a short period of time. Without any exaggeration, the book will expose SQL in record time. The book explicitly covers a free platform of the world’s number 1 DBMS to expose SQL: Oracle Database Express Edition. I have chosen Oracle XE because it is free to develop, deploy, and distribute; fast to download; and simple to administer.

Beginning Oracle PL/SQL gets you started in using the built-in language that every Oracle developer and database administrator must know. Oracle Database is chock-full of built-in application features that are free for the using, and PL/SQL is your ticket to learning about and using those features from your own code. With it, you can centralize business logic in the database, you can offload application logic, and you can automate database- and application-administration tasks.

Author Don Bales provides in Beginning Oracle PL/SQL a fast-paced and example-filled tutorial. Learn from Don\’s extensive experience to discover the most commonly used aspects of PL/SQL, without wasting time on obscure and obsolete features.

Книга «SQL. Библия пользователя» уникальна тем, что в каждой главе проводится сравнение реализаций стандарта языка запросов SQL в трех ведущих СУБД. В результате получился исчерпывающий и практичный справочник для пользователей баз данных, от новичков до профессионалов. Данная книга по SQL удобно сочетает теорию с практикой, содержит описание новых технологий и позволит разобраться с многочисленными нюансами стандарта языка запросов SQL и его реализаций. Её можно использовать в качестве справочника - своего рода настольного пособия.
— Изучите основы языка запросов SQL и реляционных баз данных
— Освойте работу с таблицами, представлениями, последовательностями и прочими объектами баз данных
— Научитесь применять транзакции и блокировки в многопользовательской среде
— Познакомьтесь с функциями, предложенными стандартом SQL и тремя ведущими производителями СУБД
— Узнайте, как получать доступ к метаданным и реализовывать средства защиты базы данных
— Изучите дополнительные темы: интеграция SQL в XML, бизнес-аналитика OLAP и многое другое

Если у вас есть базовые навыки работы с HTML, то с помощью книги Робина Никсона, опытнейшего разработчика и автора многочисленных бестселлеров по веб-мастерингу, вы без особого труда научитесь создавать динамические сайты, характеризующиеся высоким уровнем взаимодействия с пользователями.
Откройте для себя сочетание PHP и MySQL, узнайте, как они облегчают создание современных веб-сайтов, научитесь добавлять к этим технологиям возможности javascript, позволяющего создавать высокотехнологичные приложения.
В данном руководстве каждая технология рассматривается отдельно, показывается, как объединить PHP, MySQL и javascript в единое целое, дается представление о самых современных концепциях веб-программирования. С помощью подробно разобранных примеров и контрольных вопросов, приводимых в каждой главе, вы сможете закрепить изученный материал на практике.

Данное руководство поможет вам:
— освоить основы PHP и объектно-ориентированного программирования;
— основательно изучить MySQL, начиная со структуры баз данных и заканчивая составлением сложных запросов;
— создать веб-страницы, использующие PHP и MySQL для объединения форм и других составных элементов HTML;
— изучить javascript, начиная с функций и обработки событий и заканчивая доступом к объектной модели документов (DOM);
— использовать библиотеки и пакеты программ, включая систему Smarty, хранилище программ PEAR и библиотеку Yahoo! User Interface;
— осуществлять Ajax-вызовы и превратить свой веб-сайт в высокодинамичную информационную среду;
— загружать на веб-сайт файлы и изображения и работать с ними, проверять данные, введенные пользователем;
— обеспечивать безопасность своих приложений.

Queries not running fast enough? Wondering about the in-memory database features in 2014? Tired of phone calls from frustrated users? Grant Fritchey’s book SQL Server Query Performance Tuning is the answer to your SQL Server query performance problems. The book is revised to cover the very latest in performance optimization features and techniques, especially including the newly-added, in-memory database features formerly known under the code name Project Hekaton. This book provides the tools you need to approach your queries with performance in mind.

SQL Server Query Performance Tuning leads you through understanding the causes of poor performance, how to identify them, and how to fix them. You’ll learn to be proactive in establishing performance baselines using tools like Performance Monitor and Extended Events. You’ll learn to recognize bottlenecks and defuse them before the phone rings. You’ll learn some quick solutions too, but emphasis is on designing for performance and getting it right, and upon heading off trouble before it occurs. Delight your users. Silence that ringing phone. Put the principles and lessons from SQL Server Query Performance Tuning into practice today.

Covers the in-memory features from Project Hekaton
Helps establish performance baselines and monitor against them
Guides in troubleshooting and eliminating of bottlenecks that frustrate users
What you’ll learn
— Establish performance baselines and monitor against them
— Recognize and eliminate bottlenecks leading to slow performance
— Deploy quick fixes when needed, following up with long term solutions
— Implement best-practices in T-SQL so as to minimize performance risk
— Design in the performance that you need through careful query and index design
— Take advantage of the very latest performance optimization features in SQL Server 2014
— Understand the new, in-memory database features formerly code-named as Project Hekaton

В книге SQL за 10 минут предлагаются простые и практичные решения для тех, кто хочет быстро получить результат. Проработав все 22 урока, на каждый из которых придется затратить не более 10 минут, вы узнаете обо всем, что необходимо для практического применения SQL. Приведенные в книге примеры подходят для IBM DB2, Microsoft Access, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, SQLite, MariaDB и Apache OpenOffice Base. Наглядные примеры помогут понять, как структурируются инструкции SQL. Советы подскажут короткие пути к решениям. Предупреждения помогут избежать распространенных ошибок. Примечания предоставят дополнительные разъяснения.

Запросы написаны без экранирующих кавычек, так как у MySQL , MS SQL и PostGree они разные.

SQL запрос: получение указанных (нужных) полей из таблицы

SELECT id, country_title, count_people FROM table_name

Получаем список записей: ВСЕ страны и их население. Название нужных полей указываются через запятую.

SELECT * FROM table_name

* обозначает все поля. То есть, будут показы АБСОЛЮТНО ВСЕ поля данных.

SQL запрос: вывод записей из таблицы исключая дубликаты

SELECT DISTINCT country_title FROM table_name

Получаем список записей: страны, где находятся наши пользователи. Пользователей может быть много из одной страны. В этом случае это ваш запрос.

SQL запрос: вывод записей из таблицы по заданному условию

SELECT id, country_title, city_title FROM table_name WHERE count_people>100000000

Получаем список записей: страны, где количество людей больше 100 000 000.

SQL запрос: вывод записей из таблицы с упорядочиванием

SELECT id, city_title FROM table_name ORDER BY city_title

Получаем список записей: города в алфавитном порядке. В начале А, в конце Я.

SELECT id, city_title FROM table_name ORDER BY city_title DESC

Получаем список записей: города в обратном (DESC ) порядке. В начале Я, в конце А.

SQL запрос: подсчет количества записей

SELECT COUNT(*) FROM table_name

Получаем число (количество) записей в таблице. В данном случае НЕТ списка записей.

SQL запрос: вывод нужного диапазона записей

SELECT * FROM table_name LIMIT 2, 3

Получаем 2 (вторую) и 3 (третью) запись из таблицы. Запрос полезен при создании навигации на WEB страницах.

SQL запросы с условиями

Вывод записей из таблицы по заданному условию с использованием логических операторов.

SQL запрос: конструкция AND (И)

SELECT id, city_title FROM table_name WHERE country="Россия" AND oil=1

Получаем список записей: города из России И имеют доступ к нефти. Когда используется оператор AND , то должны совпадать оба условия.

SQL запрос: конструкция OR (ИЛИ)

SELECT id, city_title FROM table_name WHERE country="Россия" OR country="США"

Получаем список записей: все города из России ИЛИ США. Когда используется оператор OR , то должно совпадать ХОТЯ БЫ одно условие.

SQL запрос: конструкция AND NOT (И НЕ)

SELECT id, user_login FROM table_name WHERE country="Россия" AND NOT count_comments<7

Получаем список записей: все пользователи из России И сделавших НЕ МЕНЬШЕ 7 комментариев.

SQL запрос: конструкция IN (В)

SELECT id, user_login FROM table_name WHERE country IN ("Россия", "Болгария", "Китай")

Получаем список записей: все пользователи, которые проживают в (IN ) (России, или Болгарии, или Китая)

SQL запрос: конструкция NOT IN (НЕ В)

SELECT id, user_login FROM table_name WHERE country NOT IN ("Россия","Китай")

Получаем список записей: все пользователи, которые проживают не в (NOT IN ) (России или Китае).

SQL запрос: конструкция IS NULL (пустые или НЕ пустые значения)

SELECT id, user_login FROM table_name WHERE status IS NULL

Получаем список записей: все пользователи, где status не определен. NULL это отдельная тема и поэтому она проверяется отдельно.

SELECT id, user_login FROM table_name WHERE state IS NOT NULL

Получаем список записей: все пользователи, где status определен (НЕ НОЛЬ).

SQL запрос: конструкция LIKE

SELECT id, user_login FROM table_name WHERE surname LIKE "Иван%"

Получаем список записей: пользователи, у которых фамилия начинается с комбинации «Иван». Знак % означает ЛЮБОЕ количество ЛЮБЫХ символов. Чтобы найти знак % требуется использовать экранирование «Иван\%».

SQL запрос: конструкция BETWEEN

SELECT id, user_login FROM table_name WHERE salary BETWEEN 25000 AND 50000

Получаем список записей: пользователи, которые получает зарплату от 25000 до 50000 включительно.

Логических операторов ОЧЕНЬ много, поэтому детально изучите документацию по SQL серверу.

Сложные SQL запросы

SQL запрос: объединение нескольких запросов

(SELECT id, user_login FROM table_name1) UNION (SELECT id, user_login FROM table_name2)

Получаем список записей: пользователи, которые зарегистрированы в системе, а также те пользователи, которые зарегистрированы на форуме отдельно. Оператором UNION можно объединить несколько запросов. UNION действует как SELECT DISTINCT, то есть отбрасывает повторяющиеся значения. Чтобы получить абсолютно все записи, нужно использовать оператор UNION ALL.

SQL запрос: подсчеты значений поля MAX, MIN, SUM, AVG, COUNT

Вывод одного, максимального значения счетчика в таблице:

SELECT MAX(counter) FROM table_name

Вывод одного, минимальный значения счетчика в таблице:

SELECT MIN(counter) FROM table_name

Вывод суммы всех значений счетчиков в таблице:

SELECT SUM(counter) FROM table_name

Вывод среднего значения счетчика в таблице:

SELECT AVG(counter) FROM table_name

Вывод количества счетчиков в таблице:

SELECT COUNT(counter) FROM table_name

Вывод количества счетчиков в цехе №1, в таблице:

SELECT COUNT(counter) FROM table_name WHERE office="Цех №1"

Это самые популярные команды. Рекомендуется, где это возможно, использовать для подсчета именно SQL запросы такого рода, так как ни одна среда программирования не сравнится в скорости обработки данных, чем сам SQL сервер при обработке своих же данных.

SQL запрос: группировка записей

SELECT continent, SUM(country_area) FROM country GROUP BY continent

Получаем список записей: с названием континента и с суммой площадей всех их стран. То есть, если есть справочник стран, где у каждой страны записана ее площадь, то с помощью конструкции GROUP BY можно узнать размер каждого континента (на основе группировки по континентам).

SQL запрос: использование нескольких таблиц через алиас (alias)

SELECT o.order_no, o.amount_paid, c.company FROM orders AS o, customer AS с WHERE o.custno=c.custno AND c.city="Тюмень"

Получаем список записей: заказы от покупателей, которые проживают только в Тюмени.

На самом деле, при правильном запроектированной базе данных данного вида запрос является самым частым, поэтому в MySQL был введен специальный оператор, который работает в разы быстрее, чем выше написанный код.

SELECT o.order_no, o.amount_paid, z.company FROM orders AS o LEFT JOIN customer AS z ON (z.custno=o.custno)

Вложенные подзапросы

SELECT * FROM table_name WHERE salary=(SELECT MAX(salary) FROM employee)

Получаем одну запись: информацию о пользователе с максимальным окладом.

Внимание! Вложенные подзапросы являются одним из самых узких мест в SQL серверах. Совместно со своей гибкостью и мощностью, они также существенно увеличивают нагрузку на сервер. Что приводит к катастрофическому замедлению работы других пользователей. Очень часты случаи рекурсивных вызовов при вложенных запросах. Поэтому настоятельно рекомендую НЕ использовать вложенные запросы, а разбивать их на более мелкие. Либо использовать вышеописанную комбинацию LEFT JOIN. Помимо этого данного вида запросы являются повышенным очагом нарушения безопасности. Если решили использовать вложенные подзапросы, то проектировать их нужно очень внимательно и первоначальные запуски сделать на копиях баз (тестовые базы).

SQL запросы изменяющие данные

SQL запрос: INSERT

Инструкция INSERT позволяют вставлять записи в таблицу. Простыми словами, создать строчку с данными в таблице.

Вариант №1. Часто используется инструкция:

INSERT INTO table_name (id, user_login) VALUES (1, "ivanov"), (2, "petrov")

В таблицу «table_name » будет вставлено 2 (два) пользователя сразу.

Вариант №2. Удобнее использовать стиль:

INSERT table_name SET id=1, user_login="ivanov"; INSERT table_name SET id=2, user_login="petrov";

В этом есть свои преимущества и недостатки.

Основные недостатки:

  • Множество мелких SQL запросов выполняются чуть медленнее, чем один большой SQL запрос, но при этом другие запросы будут стоять в очереди на обслуживание. То есть, если большой SQL запрос будет выполняться 30 минут, то в все это время остальные запросы будут курить бамбук и ждать своей очереди.
  • Запрос получается массивнее, чем предыдущий вариант.

Основные преимущества:

  • Во время мелких SQL запросов, другие SQL запросы не блокируются.
  • Удобство в чтении.
  • Гибкость. В этом варианте, можно не соблюдать структуру, а добавлять только необходимые данные.
  • При формировании подобным образом архивов, можно легко скопировать одну строчку и запустить ее через командную строку (консоль), тем самым не восстанавливая АРХИВ целиком.
  • Стиль записи схож с инструкцией UPDATE, что легче запоминается.

SQL запрос: UPDATE

UPDATE table_name SET user_login="ivanov", user_surname="Иванов" WHERE id=1

В таблице «table_name » в записи с номером id=1, будет изменены значения полей user_login и user_surname на указанные значения.

SQL запрос: DELETE

DELETE FROM table_name WHERE id=3

В таблице table_name будет удалена запись с id номером 3.

  1. Все названия полей рекомендуются писать маленькими буквами и если надо, разделять их через принудительный пробел «_» для совместимости с разными языками программирования, таких как Delphi, Perl, Python и Ruby.
  2. SQL команды писать БОЛЬШИМИ буквами для удобочитаемости. Помните всегда, что после вас могут читать код и другие люди, а скорее всего вы сами через N количество времени.
  3. Называть поля с начала существительное, а потом действие. Например: city_status, user_login, user_name.
  4. Стараться избегать слов резервных в разных языках которые могут вызывать проблемы в языках SQL, PHP или Perl, типа (name, count, link). Например: link можно использовать в MS SQL, но в MySQL зарезервировано.

Данный материал является короткой справкой для повседневной работы и не претендует на супер мега авторитетный источник, коим является первоисточник SQL запросов той или иной базы данных.

Запросов - структурированных запросов к базе данных. Почему именно курс программирования ? Несмотря на то, что многие “буквоеды” будут утверждать, что SQL – это не , а язык запросов , я считаю, что курсы по его изучению можно и нужно относить к курсам программирования. Во-первых, не называть же их курсами составления запросов, поскольку так их могут перепутать с курсами для начинающих чиновников или прокуроров. Во-вторых, работа с базами данных настолько тесно переплетается с , что невладение навыками SQL довольно сильно сужает область применения того или иного программиста. Ну и в-третьих, структурированные запросы (не обязательно к базам данных) уже давно не на подступах к границам языков программирования – они ее уже перешагнули, и примером этому может служить технология .

Все примеры построены вокруг запросов к трем таблицам,


содержащим следующую информацию:

  • D_STAFF - список сотрудников компании;

    • S_NAME – Ф.И.О.
    • S_POSITION – должность (справочник);
    • S_EXPERIENCE – стаж работы (целое количество лет);
    • S_CHIEF_ID – вышестоящий сотрудник компании (отношение “начальник”-“подчиненный”);
    • S_COMMENTS – примечание.


  • D_PROFIE – список профилей пользователей , которая, по легенде, развернута на территории рассматриваемого предприятия и помогает автоматизировать некоторые его бизнес-процессы. Этой системой могла бы быть как отечественная разработка “1С – Предприятие”, так и система на базе программного комплекса SAP R/3, являющегося наиболее ярким представителем такого класса программного обеспечения за рубежом;

    • XD_IID – Уникальный идентификатор записи;
    • P_NAME – наименование профиля (роли);
    • P_COMMENTS – примечание.


  • D_STAFF_PROFILE – таблица, связывающая сотрудников компании (D_STAFF) с профилями пользователей системы (D_PROFILE). Каждая запись в этой таблице - это связь, которая определяет возможность сотрудника входить в систему со всеми правами и разрешениями выбранного для него профиля. Каждый сотрудник может иметь несколько разрешенных ему профилей, а любой профиль может быть связан с несколькими различными сотрудниками. Таким образом, таблица D_STAFF_PROFILE определяет связь "многие-ко-многим".

Краткий обзор синтаксиса рассматриваемых SQL запросов

Обновление данных или команда UPDATE

Назначение команды UPDATE – обновление существующих записей в указанной таблице. Указываем, где и чего хотим изменить, а после ключевого слова WHERE устанавливаем критерии отбора обновляемых записей. В команде обновления данных, как и в других SQL запросах, можно использовать подзапросы: например, можно определить в качестве присваиваемого полю значения результат подзапроса, который возвращает только одну колонку и одну строчку.

UPDATE SET { = } или UPDATE SET { = (SELECT FROM WHERE)}

Добавление данных или команда INSERT

Добавление новых записей в указанную таблицу. Здесь тоже ничего сложного. Указываем таблицу, список полей и список добавляемых в эти поля значений. Что может дать использование SQL подзапроса тоже догадаться несложно - копирование выбранного с помощью SELECT массива данных в указанную таблицу (в перечисленные через запятую поля). Естественно, что количество и тип колонок в запросе SELECT должен соответствовать количеству и типу полей таблицы, куда производится вставка.

INSERT INTO [()] VALUES () или INSERT INTO [()] (SELECT FROM WHERE)

Удаление данных или команда DELETE

Удаление строк из одной таблицы или сразу из нескольких таблиц, строки которых объединены условиями. Здесь все также очевидно. Указываем, из какой таблицы удаляем данные, а в части WHERE отбираем удаляемые данные. Во втором варианте SQL запроса с использованием инструкции DELETE показан обобщенный синтаксис удаления записей сразу из нескольких таблиц. В условиях отбора (в части WHERE) также можно использовать подзапросы.

DELETE FROM или DELETE FROM

Если все более или менее понятно, то знакомимся с или и начинаем сам процесс обучения.

    Выполнение простейших SQL запросов с использованием команды SELECT. Определение простых и составных критериев отбора записей посредством конструкции WHERE. Применение операторов BETWEEN и LIKE. Построение иерархического запроса с использованием псевдонимов таблиц и полей.

На сегодняшний день курсы SQL "для чайников" становятся все более популярными. Это можно очень просто объяснить, ведь в современном мире все чаще можно встретить так называемые "динамичные" веб-сервисы. Они отличаются достаточно гибкой оболочкой и основываются на Все начинающие программисты, которые решили посвятить сайтов, прежде всего записываются на курсы SQL "для чайников".

Зачем изучать данный язык?

Прежде всего SQL учат с целью дальнейшего создания самых разнообразных приложений для одного из самых популярных на сегодняшний день движков блогов - WordPress. После прохождения нескольких простых уроков вы уже сможете создавать запросы любой сложности, что только подтверждает простоту этого языка.

Что такое SQL?

Или язык структурированных запросов, был создан с одной-единственной целью: определять предоставлять к ним доступ и обрабатывать их за достаточно короткие промежутки времени. Если вы знаете SQL-значение, тогда вам будет понятно, что этот сервер относят к так называемым "непроцедурным" языкам. То есть в его возможности входит всего лишь описание каких-либо компонентов или результатов, которые вы хотите увидеть в будущем на сайте. Но при не указывает на то, какие точно результаты собирается получить. Каждый новый запрос в этом языке является как бы дополнительной "надстройкой". Именно в таком порядке, в каком они введены в базе данных, запросы и будут исполняться.

Какие процедуры можно совершать с помощью этого языка?

Несмотря на свою простоту, база данных SQL позволяет создать достаточно много самых разнообразных запросов. Так что же вы сможете делать, если выучите этот важный в программировании язык?

  • создавать самые разнообразные таблицы;
  • получать, хранить и изменять полученные данные;
  • изменять структуры таблиц на свое усмотрение;
  • объединять полученную информацию в единые блоки;
  • вычислять полученные данные;
  • обеспечивать полную защиту информации.

Какие команды являются самыми популярными в данном языке?

Если вы решили посетить курсы SQL "для чайников", тогда вы получите подробную информацию о командах, которые используются в создании запросов с его помощью. Самыми распространенными на сегодняшний день являются такие:

  1. DDL - является командой, которая определяет данные. Она используется для того, чтобы создавать, изменять и удалять самые разнообразные объекты в базе.
  2. DCL - является командой, которая управляет данными. Ее используют для предоставления доступа разным пользователям к информации в базе, а также чтобы использовать таблицы или представления.
  3. TCL - команда, которая управляет разнообразного рода транзакциями. Ее главной целью является определение хода транзакции.
  4. DML - манипулирует полученными данными. В ее задачу входит позволение пользователю перемещать различную информацию из базы данных или вносить туда ее.

Типы привилегий, которые существуют в этом сервере

Под привилегиями подразумеваются те действия, которые может выполнить тот или иной пользователь в соответствии со своим статусом. Самой минимальной, безусловно, является обычный вход в систему. Конечно же, со временем привилегии могут меняться. Старые будут удаляться, а новые добавляться. На сегодняшний день, все те, кто проходит курсы SQL Server "для чайников", знают, что существует несколько типов разрешенных действий:

  1. Объектный тип - пользователю разрешается выполнять какую-либо команду только по отношению к определенному объекту, который находится в базе данных. При этом для разных объектов привилегии отличаются. Они также привязываются не только к тому или иному пользователю, но и к таблицам. Если кто-либо, пользуясь своими возможностями, создал таблицу, то он считается ее владельцем. Поэтому в его праве назначать новые привилегии для других пользователей, связанные с информацией в ней.
  2. Системный тип - это так называемые авторские права на данные. Пользователи, которые получили такие привилегии, могут создавать различные объекты в базе.

История создания SQL

Этот язык был создан исследовательской лабораторией IBM в 1970 году. В то время название его было несколько иным (SEQUEL), но через несколько лет использования его поменяли, немного сократив. Несмотря на это, даже сегодня многие известные мировые специалисты в области программирования все еще произносят название по старинке. Создана была SQL с одной-единственной целью - изобрести язык, который был бы настолько простым, что его могли бы без особых проблем выучить даже простые пользователи Интернета. Интересен тот факт, что на то время SQL был не единственным подобным языком. В Калифорнии еще одна группа специалистов разработала похожий Ingres, но он так и не стал широко распространенным. До 1980 года существовало несколько вариаций SQL, которые лишь в некоторой мере отличались друг от друга. Чтобы предотвратить замешательства, в 1983-м был создан стандартный его вариант, который популярен и сегодня. Курсы SQL "для чайников" позволяют узнать намного больше о сервисе и полностью изучить его за несколько недель.

Большинство современных веб приложений взаимодействуют с базами данных, обычно, с помощью языка под названием SQL. К счастью для нас, этот язык очень легко выучить. В этой статье мы рассмотрим простые SQL запросы и научимся их использовать для взаимодействия с MySQL базой данных.

Что Вам потребуется?

SQL (Structured Query Language) язык специально разработанный для взаимодействия с системами управления баз данных, таких как MySQL, Oracle, Sqlite и прочие... Для выполнения SQL запросов в этой статье я советую Вам установить MySQL на локальный компьютер. Также я рекомендую использовать phpMyAdmin в качестве визуального интерфейса.

Все это имеется во всеми любимом Денвере. Думаю, каждый должен знать, что это и где это взять:). Можно еще использовать WAMP или MAMP.

В денвере есть встроенная MySQL консоль. Ей мы и будем пользоваться.

CREATE DATABASE: создание базы данных

Вот и наш первый запрос. Мы создадим нашу первую БД для дальнейшей работы.

Для начала, откройте MySQL консоль и залогиньтесь. Для WAMP пароль по умолчанию пустой. То есть ничего:). Для MAMP - "root". Для Денвера необходимо уточнить.

После логина введите следующую строку и нажмите Enter:

CREATE DATABASE my_first_db;

Заметьте, что точка с запятой (;) добавляется в конце запроса, так же как и в других языках.

Также команды в SQL чувствительны к регистру. Пишем их большими буквами.

Опци онально: Character Set и Collation

Если Вы хотите установить character set (набор символов ) и collation (сравнение ) можно написать следующую команду:

CREATE DATABASE my_first_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Находится список наборов символов, которые поддерживаются в MySQL.

SHOW DATABASES: выводит список всех БД

Эта команда используется для вывода всех имеющихся БД.

DROP DATABASE: удаление БД

Вы можете удалить существующую БД с помощью этого запроса.

Будьте осторожны с этой командой, так как она выполняется без предупреждения. Если в Вашей БД есть данные, они будут все удалены.

USE: Выбор БД

Технически это не запрос, а оператор и он не требует точки с запятой в конце.

Он сообщает MySQL выбрать БД для работы по умолчанию для текущей сессии. Теперь мы готовы создавать таблицы и делать прочие вещи с БД.

Что же такое таблица в БД?

Вы можете представить таблицу в БД в виде Excel файла.

Также как и на картинке, у таблиц есть названия колонок, ряды и информация. С помощью SQL запросов мы можем создавать такие таблицы. Мы также можем добавлять, считывать, вносить обновления и удалять информацию.

CREATE TABLE: Создание таблицы

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

Следующий запрос создаст таблицу с 2-мя колонками.

CREATE TABLE users (username VARCHAR(20), create_date DATE);

Обратите внимание, что мы можем писать наши запросы в несколько строк и с табуляциями для отступов.

Первая строка простая. Мы просто создаем таблицу с названием "users ". Далее в скобках, через запятую, идет список всех колонок. После каждого названия колонки у нас идут типы информации, такие как VARCHAR или DATE.

VARCHAR(20) означает, что колонка имеет тип строки и может быть максимум 20 символов в длину. DATE также тип информации, который используется для хранения дат в таком формате: "ГГГГ - ММ-ДД ".

PRIMARY KEY ( первичный клю ч)

Перед тем как мы выполним следующий запрос, мы также должны включить колонку для "user_id ", которая будет нашим первичным ключом. Вы можете воспринимать PRIMARY KEY как информацию, которая используется для идентифицирования каждого ряда таблицы.

CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(20), create_date DATE);

INT делает 32 битный целый тип (например, числа). AUTO_INCREMENT автоматически генерирует новое значение ID каждый раз, когда мы добавляем новые ряды информации. Это не обязательно, но делает весь процесс проще.

Эта колонка не обязательна должна быть целым значением, но оно чаще всего используется. Наличие Первичного Ключа также не является обязательным, однако рекомендуется для архитектуры и производительности БД.

Давайте выполним запрос:

SHOW TABLES: показать все таблицы

Этот запрос позволяет получить список таблиц, которые находятся в БД.

EXPLAIN: Показать структуру таблиц

Для показа структуры существующей таблицы Вы можете пользоваться этим запросом.

Колонки отображаются со всеми свойствами.

DROP TABLE: удалить таблицу

Также как и DROP DATABASES, этот запрос удаляет таблицу и ее содержание без предупреждения.

ALTER TABLE: изменить таблицу

Этот запрос также может содержать сложную структуру из-за большего количестве изменений, который он может сделать с таблицей. Давайте посмотрим на примеры.

(если Вы удалили таблицу в прошлом шаге, создайте ее снова для тестов)

ДОБАВЛЕНИЕ КОЛОНКИ

ALTER TABLE users ADD email VARCHAR(100) AFTER username;

Благодаря хорошей читабельности SQL, я думаю, что нет смысла ее подробно объяснять. Мы добавляем новую колонку "email " после "username ".

УДАЛЕНИЕ КОЛОНКИ

Это было также очень легко. Используйте этот запрос с осторожностью, так как можно удалить данные без предупреждения.

Восстановите только что удаленную колонку для дальнейших экспериментов.

ВНЕСЕНИЕ ИЗМЕНЕНИЯ В КОЛОНКУ

Иногда Вы можете захотеть внести изменения в свойства колонки, и Вам не надо ее полностью удалять для этого.

Этот запрос переименовал колонку пользователь в "user_name " и изменил ее тип с VARCHAR(20) на VARCHAR(30). Такое изменение не должны изменить данные в таблице.

INSERT: Добавление информации в таблицу

Давайте добавим некоторую информацию в таблицу используя следующий запрос.

Как Вы можете увидеть, VALUES () содержит список значений, разделенных запятыми. Все значения заключены в одинарные колонки. И значения должны быть в порядке колонок, которые были определены при создании таблицы.

Заметьте, что первое значение NULL для поля PRIMARY KEY под названием "user_id ". Мы делаем это для того, чтобы ID было сгенерировано автоматически, так как колонка имеет свойство AUTO_INCREMENT. Когда информация добавляется первый раз ID будет 1. Следующий ряд - 2, и так далее...

АЛЬТЕРНАТИВНЫЙ ВАРИАНТ

Есть еще один вариант запроса для добавления рядов.

В этот раз мы используем ключевое слово SET вместо VALUES, и у него нет скобок. Есть несколько нюансов:

Колонку можно пропустить. К примеру, мы не присвоили значение для "user_id ", которое по умолчанию получит свое AUTO_INCREMENT значение. Если Вы пропустите колонку с типом VARCHAR, тогда будет добавлено пустая строка.

К каждой колонке необходимо обращаться по имени. Из за этого их можно упоминать в любом порядке, в отличии от прошлого варианта.

АЛЬТЕРНАТИВНЫЙ ВАРИАНТ 2

Вот еще вариант.

Опять же, поскольку есть упоминания названия колонки, можно задавать значения в любом порядке.

LAST_INSERT_ID()

Вы можете использовать этот запрос для получения ID, которое было AUTO_INCREMENT для последнего ряда текущей сессии.

NOW()

Теперь настало время показать, как Вы можете использовать функцию MySQL в запросах.

Функция NOW() выводит текущую дату. Так что Вы можете использовать ее для автоматического установления даты колонки на текущую при вставке нового ряда.

Заметьте, что мы получили 1 предупреждение, но не обращайте на него внимания. Причина этому то, что NOW() также служит для вывода временной информации.

SELECT: Чтение данных из таблицы

Если мы добавляем информацию в таблицу значит логично было бы научиться ее оттуда считывать. Именно в этом нам и поможет запрос SELECT.

Ниже представлен самый простой возможный запрос SELECT для чтения таблицы.

В этом случае звездочка (*) означает то, что мы запросили все поля из таблицы. Если Вы хотите только определенные колонки, запрос будет выглядеть так.

Условие WHERE

Чаще всего мы заинтересованы не во всех колонках, а только в некоторых. К примеру, давайте предположим, что нам необходимы только электронный адрес для пользователя "nettuts ".

WHERE позволяет устанавливать условия в запросе и делать подробные выборки.

Заметьте, что для равенства использоваться один знак равно (=), а не два, как в программировании.

Вы можете также использовать сравнения.

AND или OR могут быть использованы для объединения условий:

Заметьте, что числовые значения не должны находиться в кавычках.

IN()

Это полезно для выборки по нескольким значениям

LIKE

Позволяет делать "wildcard" запросы

Значок % используется в качестве "wildcard". То есть на его месте может быть что-угодно.

Условие ORDER BY

Если Вы хотите получить результат в упорядоченном виде по какому либо критерию

Порядок по умолчанию ASC (от меньшегок большему). Для обратного используется DESC.

LIMIT ... OFFSET ...

Вы можете ограничить количество полученных результатов.

LIMIT 2 берет только 2 первых результата. LIMIT 1 OFFSET 2 получает 1 результат после первых 2-х. LIMIT 2, 1 означает тоже самое (только обратите внимание сначала идет offset а потом limit ).

UPDATE: Внести изменения в информацию в таблице

Этот запрос используется для изменения информации в таблице.

В большинстве случаев он используется вместе с условием WHERE, так как Вы скорее всего захотите внести изменения в определенные колонки. Если не будет условия WHERE изменения затронут все ряды.

Вы также можете использовать LIMIT для ограничения количества рядов, в которые необходимо внести изменения.

DELETE: Удаление информации из таблицы

Также как и UPDATE, этот запрос используется с WHERE:

Для удаления содержания таблицы можно сделать просто так:

DELETE FROM users;

Но лучше использовать TRUNCATE

Кроме удаления этот запрос также сбрасывает значения AUTO_INCREMENT и при добавлении рядов снова, отсчет начнется с нуля. DELETE такого не делает и отсчет продолжается.

Отключение Строчных Значений и Специальных Слов

Строчные значения

Некоторые символы необходимо отключать (escape), или же могут быть проблемы.

Для этого используется задний слеш (\).

Специальные слова

Поскольку в MySQL есть много специальных слов (SELECT или UPDATE), чтобы избежать ошибок при их использовании необходимо использовать кавычки. Но не обычные кавычки, а вот такие (`).

То есть Вам необходимо будет добавить колонку с именем " delete", это необходимо сделать так:

Заключение

Спасибо, что дочитали до конца. Надеюсь, Вам эта статья была полезна. Это еще не конец! Будет продолжение:).




Top