Урок 1. Введение в SQL

Знакомство с SQL


Прежде всего хотелось бы уточнить, что для полного понимания данного курса Вам необходимо будет для начала изучить какой-то объектно-ориентированный язык программирования по крайней мере на базовом уровне. Так же для полноценного и качественного знакомства с SQL мы зайдём немного издалека.

В случае если вы совсем новечёк в программировании и данный курс - первое, что попалось вам на глаза, с чего вы и захотели начать - настоятельно рекоммендуем Вам сначала пройти курс C# Starter и C# Essential от нашего немалоизвестного тренера Александра Шевчука.

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

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

Итак, давайте-же определимся с некоторыми вещами, понимание которых нам необходимы для успешного усвоения данного материала:

База данных - это, преджде всего, место хранения наших данных.

В более широком понимании данного термина: База данных - это любое средство, которое позволяет хранить и обрабатывать данные. Это, своего рода, совокупность данных, организованных по правилам, которые, в свою очередь, предусматривают общие принципы манипулирования и хранения данных.

СУБД - Система Управления Базами Данных - это комплекс языковых и программных средств, предназначеный для создания, ведения и совместного использования баз данных многими пользователями.

Мы будем работать с СУБД Microsoft SQL Server. Основой данной СУБД является реляционная база данных.

RDB - Relational Database (реляционная база данных) - база данных, в которой данные представляют собой набор отношений. Совокупность связанных данных хранится в дмумерных таблицах.


Структура базы данных

Единичный факт - поле.

Все факты касательно одного объекта - запись.

Набор всех фактов - таблица.

Все таблицы - база данных.

Рассмотрим пример таблицы из презентации:

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

  • Имя
  • Тип данных
  • Допустимость пустого значения (NULL)

SQL

SQL - Structured Query Language - это информационно-логический язык, предназначеный для описания, изменения и извлечения данных, хранимых в реляционных базах данных.

SQL - это НЕ язык программирования.

Основной набор операций SQL:

  • Создание в БД новой таблицы
  • Добавление записей в таблице
  • Изменение записей в таблице
  • Удаление записей в таблице
  • Выборка записей в таблице

Transact-SQL

T-SQL (Transact-SQL) представляет собой реализацию стандартного стрктуированного языка запросов. Был изобретёно команией Microsoft.

В наших практических примерах мы будем оперировать именно языком T-SQL.

Оперирование с переменными осуществляется именно с помощью данного языка. Обратимся к коду:

В SQL-Server присутствуют несколько основных типов данных: целые, с фиксированной/плавающей запятой, дата/время, текст и двоичные данные. Подробнее о каждом из них вы можете узнать в 1м видеоуроке SQL Essential.

В T-SQL так же есть множество различных типов данных: целые, вещественные, текстовые, дата/время и двоичные типы. Мы познакомимся с некоторыми из них уже на практике в коде. Некоторые типы можно преобразовывать явно, нектоторые - неявно, а некоторые вообще преобразовывать не нужно. Табличка с данной информацией есть в материалах к видеоуроку.


Создание базы данных

Создавать БД мы будем программным путём, используя T-SQL и программную среду SSMS (SQL Server Management Studio).

Для того что б начать работу с SSMS сначала нужно провести базовые манипуляции с настраиванием сервера. После того как вы создали новый сервер (или подключились к существующему) - нажмите и можно начинать)

Для того что бы создать БД, с которой после мы будем работать необходимо установить конфигурации двух файлов: .mdf и .ldf.

.mdf файл - тот, в котором непосредственно лежит Ваша база данных

.ldf файл - отображает так называемый журнал.

Затем необходимо настроить кодировку по-умолчанию, что бы избежать возможных будущих проблем с ней. Оператор GO определяет конец одной инструкции, которая будет выполняться за 1 раз. Если на протяжении всего кода Вы несколько раз используете этот оператор - таким образом вы как-бы определите логические границы всех инструкций, и при выполнении все эти инструкции будут выполняться отдельно, независимо друг от друга (если там нет логической связи, конечно (если ошибка была в блоке создания БД, а следующей инструкцией вы пытаетесь к ней подключиться - не сработает ни одна инструкция и программная среда выдаст Вам соответствующее сообщение)).

CREATE DATABASE SQLEssentialDB001 -- создание базы данных.

ON -- настройка БД. Файл с расширением ".mdf".
(
NAME = 'SqlEssentialDB001',
FILENAME = 'G:\SQL Essential\SqlEssentialDB001.mdf',
SIZE = 10MB,
MAXSIZE = 100MB,
FILEGROWTH = 10MB
)

LOG ON -- настройка журнала БД. Файл с расширением ".ldf".
(
NAME = 'SqlEssentiaDB001',
FILENAME = 'G:\SQL Essential\SqlEssentialDB001.ldf',
SIZE = 5MB,
MAXSIZE = 50MB,
FILEGROWTH = 5MB
)

COLLATE Cyrillic_General_CI_AS; -- настройка кодировки по-умолчанию.

GO -- оператор окончания пакета инструкций.

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

Для этого используем команду USE:

USE SQLEssentialDB001

Затем непосредственно создание нашей таблицы используя команду CREATE:

CREATE TABLE Autopark
(
	CarID smallint IDENTITY NOT NULL, -- ключевое слово IDENTITY закрывает поле от ввода пользователя и сервер заполняет его автоматически.
	CarName char(25) NOT NULL,
	CarColor char(15) NULL,
	CarDate date NULL,
	CarPrice int NOT NULL
)
GO