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

**URL:** <https://forum.itvdn.com/t/urok-1-vvedenie-v-sql/1858>\
**Category:** SQL Essential\
**Created:** [06.06.2018 10:53:40 UTC](https://forum.itvdn.com/t/urok-1-vvedenie-v-sql/1858 "2018-06-06T10:53:40Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![musiienko1999](https://forum.itvdn.com/user_avatar/forum.itvdn.com/musiienko1999/32/740_2.png) [@musiienko1999](https://forum.itvdn.com/u/musiienko1999)\
**Post date:** [06.06.2018 10:53:40 UTC](https://forum.itvdn.com/t/urok-1-vvedenie-v-sql/1858/1 "2018-06-06T10:53:40Z")

</div>

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

* * *

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

В случае если вы совсем новечёк в программировании и данный курс - первое, что попалось вам на глаза, с чего вы и захотели начать - настоятельно рекоммендуем Вам сначала пройти курс [C# Starter](https://itvdn.com/ru/video/csharp-starter) и [C# Essential](https://itvdn.com/ru/video/csharp-essential) от нашего немалоизвестного тренера Александра Шевчука.

Данный курс [SQL Essential](https://itvdn.com/ru/video/sql-essential) доступно и очень докладно выложен на канале [ITVDN](https://itvdn.com/ru). В теме SQL Essential я буду постоянно ссылаться на данный курс (некоторые вставки кода и скриншоты будут именно оттуда), по этому, для лучшего усвоения материала, советуем вам закрепить знания просмотром курса видеоуроков от тренера-консультанта Давида Боярова.

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

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

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

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

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

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

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

* * *

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

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

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

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

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

 ![](https://monosnap.com/image/JGcQr7VeOrj7yp8sIqsXU7n9sNjp49)

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

![](https://monosnap.com/image/bTCoXrXU8TXLOssqUrhJQYAgUut5sc)

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

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

* * *

### **SQL**

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

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

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

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

* * *

---

<div class="post-metadata">

**Author:** ![musiienko1999](https://forum.itvdn.com/user_avatar/forum.itvdn.com/musiienko1999/32/740_2.png) [@musiienko1999](https://forum.itvdn.com/u/musiienko1999)\
**Post date:** [06.06.2018 13:27:57 UTC](https://forum.itvdn.com/t/urok-1-vvedenie-v-sql/1858/2 "2018-06-06T13:27:57Z")

</div>

### **Transact-SQL**

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

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

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

![](https://monosnap.com/image/yuIvvJB79tNTBKumcl6QCOAmMGkB10)

В SQL-Server присутствуют несколько основных типов данных: целые, с фиксированной/плавающей запятой, дата/время, текст и двоичные данные. Подробнее о каждом из них вы можете узнать в 1м видеоуроке [SQL Essential](https://itvdn.com/ru/video/sql-essential?position=919).

В T-SQL так же есть множество [различных типов данных](https://itvdn.com/ru/video/sql-essential?position=1178): целые, вещественные, текстовые, дата/время и двоичные типы. Мы познакомимся с некоторыми из них уже на практике в коде. Некоторые типы можно преобразовывать явно, нектоторые - неявно, а некоторые вообще преобразовывать не нужно. Табличка с данной информацией есть в материалах к [видеоуроку](https://itvdn.com/ru/video/sql-essential).

* * *

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

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

Для того что б начать работу с SSMS сначала нужно провести базовые манипуляции с настраиванием сервера. После того как вы создали новый сервер (или подключились к существующему) - нажмите ![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGEAAAAZCAYAAAAhd0APAAAEMElEQVRoQ%202ZTUhUURTH/2/EjSt3QSNTQ/RFtAlTCkXEoUUIlpYlJUEUUvkVikmLFq00FD%20ThKhFSUkfZlkUDEQURRrVJheZjD58RNAuIaWYF%20e%20d2eub2be3Dc6KPTeau7MmXvOPb/zdWeUbzM/dbjPqnpA%20TSpuRBWFQHgQlhlAKRemZz6oS/%20%20bsGTPl/TXAhrAH2ziDoOuwaCH2a4fFAd7uMI7TOIEDHwzuDCAaDMUqysrJwpu4CNm3dAQ8UhF0S0iAcQdB1HedOHUZP3%200YBQ11x5GZmYlTp2uwc1cRdAVQoEgb8j8LrigEcmRGRgYqKytRECh3IUhGVsoQKPL5Q5khrun9q9fvQVGsmfAB3RWdCBY3Yaw2VzCR3r8PX28byr2SlkuKaY9aUXNrNiodo1tyozSKpQzBziYCkhjCfYT8s/AfuYPG3XyX9EAwAPhw6cFZ5JmqxvurcBnWIEijhyW2ThmCNfKtWWEHwde6B6%20GgZaOMhiBnwYI2iga6jUcEwAYNmp42NwHnF/5rJPwd1yRlCEsJxOo7OSMVGEopwM9BwiDBQJz4F1MMyWFLJLRX4W3%20Tx74siPeNEjlriJAZS%20z7OUPcNqygZD93dLGUxuR55pK4qB4EtgkzWrSe%20wF4ORAEuOxhYClfRwOAydphwdoPWLx7cQ2FeJ%20tpoTxDV8P5gmwms9osHTvQawMQAGrQy9HhHo06l94ZVoKCOQaSycwXGa/6wUjR3KC6EqLwdBAsQbgcD14lQtRlAFtgEOBosyQGQhC2EsB7GzPRXhKY%20Izs7G/O/5rFu/QZs3r4L4cU/CTUk6wmRBhw5AKIRCTELTBXUTA9qaOgySpjW34q5fF7ScvE%20XnmxyQQpCInsqBVsZcwJ1jj2srL3Ad3NGg47yIKkEOhecPNaO6pPNEYc/vzZEEorTrL7QrxHPhN4fW6GeqQJaDOnI3Z4u1p%20CGoXHZScP4qc814MmXCWDFZSPcHai4R1Qjti%20xeH2oK%20mIyUyQXbTOCXs0AggC3bdmJ2ZgpPx8bY5PP39%20LyM4Fx4JG/AScjZUpId0ELO%20wbLClD9%20Z8COWULSlF/CtsEpo5KtRnasrNuLGRT0fGWuWTGmVPm5rEjjhDBJ2hS4MfKnwpNHwpCFZvE4REmUCyfr8fTRfb4fF4LF%20NPwUZoyTMw4tghHJETZcBe4cifp%20wruOERcw9ARy2Kcwc/9pYFBci8FKN3leWDAj0OcGzlqNos0919E0Koam2GgsLC5Hj0Y24d/CubZbRz0bUxGMvazLJmWaZmMxbGX2pNGSu2X5EVYAvH1/jyeMRqKoKn8%20HkpIS5Bbsd3%20SENmxciTee5yBtc8ENpwqoN4gPmsywp2de4WkzR4TspQ4h7s7uqw53NsVl/SAC0HSUekUc//oT6d3Jfd2IUg6Kp1i/wCYIfe3jiNMMAAAAABJRU5ErkJggg==) и можно начинать)

Для того что бы создать БД, с которой после мы будем работать необходимо установить конфигурации двух файлов: .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
```
