30 лучших курсов по sql: бесплатное и платное обучение с нуля

А что там внутри. Пример нормализации

Разберём устройство реляционной БД подробнее на примере. Позже это поможет нам понимать и сравнивать базы разных типов.

Допустим, у нас есть база данных, в которой всего одна таблица — Messages. В ней хранится информация о телефонных разговорах клиентов и операторов компании по ремонту техники.

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

Телефон у компании многоканальный. Поэтому одному и тому же оператору могут звонить разные клиенты, а один и тот же клиент может попадать на разных операторов с разными вопросами.

Системы баз SQL, о которых вы должны знать

Система баз — программа, позволяет разработчику работать с базами с помощью пользовательского интерфейса. Системы баз часто имеют готовые шаблоны, конструкторы и конструкторы.

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

Теперь давайте рассмотрим некоторые из наиболее распространенных систем баз SQL. Системы ранжируются наоснове оценок популярности DB-двигателей. Рейтинг учитывает следующие переменные::

База Oracle

Oracleсчитается ведущей системой баз SQL в мире. Он пользуются в широком спектре отраслей промышленности, но особенно популярен в области хранения информации и обработки онлайн-транзакций.

MySQL

Система баз с открытым исходнымкодом доступна бесплатно частным лицам и предприятиям. Он очень популярен среди малого бизнеса и стартапов, потому, там нет лицензионного сбора. Из-за своей модели с открытым исходным кодом, язык применяют во многих программах и дополнениях с открытым исходным кодом.

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

Сервер Microsoft SQL

SQL Server — специальная система управления базами от Microsoft. База работает на основных версиях операционных систем Windows. Он применяется в потребительском программном обеспечении, а в частности на серверах, работающих под управлением Windows. Он имеет внушительную базу пользователей.

PostgreSQL

Основной конкурент MySQL,PostgreSQL— еще очередная бесплатная система баз с открытым исходным кодом. Он широко употребляется технологическими стартапами ради своей модели свободного лицензирования. Поддерживает основные операционные системы-MacOS, Windows и Linux.

Он уделяет громадное внимание соблюдению стандартного синтаксиса, чем другие базы. Другие базы (например, SQL Server) значительно изменяют стандарт, это затрудняет их изучение

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

SQL References

SQL Keywords
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE

MySQL Functions
String Functions
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER

Numeric Functions
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE

Date Functions
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK

Advanced Functions
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION

SQL Server Functions
String Functions
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER

Numeric Functions
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN

Date Functions
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR

Advanced Functions
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME

MS Access Functions
String Functions
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase

Numeric Functions
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val

Date Functions
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year

Other Functions
CurrentUser
Environ
IsDate
IsNull
IsNumeric

SQL Quick Ref

Best Way to Learn SQL Tutorial

This section of SQL Tutorial explains about the creating Databases, Tables. Next, inserting, updating, selecting data from tables using filters, sorting, etc.

Learn SQL Database

A SQL Database helps us to organize the data logically using tables. The main advantage of storing data in a database is its efficient and fast retrieval of data. 

  1. Install SQL Server Software
  2. Install the Adventure Works Database
  3. Sql Data
  4. SQL Attach Database
  5. SQL Detach Database
  6. SQL Restore Database
  7. SQL Create, Rename, and Delete a Database
  8. SQL Rename Database along with Files
  9. Get SQL Database Names

SQL Server Tutorial on Tables

For a database designer, designing tables and their structure is an essential aspect. Here itself, one has to decide the tables, relationships, and data normalization. It includes many elements, this section of SQL Server tutorial explains the creating, renaming, and altering regular Tables and their columns, derived tables, and temporary tables.

  1. SQL Create Table
  2. SQL ALTER Table
  3. SQL Rename Table
  4. Get SQL Table Names
  5. SQL Add Column
  6. SQL Rename Column
  7. Get SQL Column Names
  8. SQL Local and Global Temporary Tables
  9. SQL Table Variable
  10. SQL Derived Tables

Learn SQL Statements

SQL Server provides various statements for creating a new database, table structures, Select Statement. The SQL SELECT statement, which retrieves and returns data from the database, is the most commonly used. This SQL tutorial section explains all those DDL and DML commands available to work with the database.

  1. DML, DDL, DCL, and TCL Commands
  2. SELECT Statement
  3. ALIAS Column
  4. SQLSelect Distinct Statement
  5. SQL Select Into Statement
  6. SQL Insert Into Select Statement
  7. SQL Insert Statement
  8. Update Statement
  9. Delete Statement
  10. Truncate Table
  11. Bulk Insert Statement
  12. Query Builder
  13. Pivot
  14. UnPivot
  15. SQL Merge
  16. SQL SubQuery
  17. SQL CASE Statement
  18. Common Table Expressions (CTE)

SQL Constraints and Indexes Tutorial

The SQL Server constraints are the rules that will apply to table data. While we are inserting or deleting a record in a table, SQL checks these constraints and rejects the records that won’t meet the rules. Flor example, unique constraints won’t allow duplicates. This SQL Server tutorial section covers all the Indexes and the constraints or keys

  1. SQL Primary Key
  2. SQL Foreign Key
  3. SQL Referential Integrity
  4. SQL Check Constraint
  5. SQL Default Constraint
  6. SQL Unique Constraint
  7. SQL Clustered Index
  8. SQL Non-Clustered Index
  9. SQL Filtered Index

Working with Nulls

While viewing the SQL data or working with data, Nulls are a bit problematic. Sometimes, we need to replace those Nulls or skip those entries. To resolve these problems, SQL has powerful functions that can work with Null values. So use this section to learn SQL Server Null functions.

  1. SQL Coalesce
  2. IS NULL
  3. IS NOT NULL
  4. ISNULL

Как хранится информация в БД

В основе всей структуры хранения лежат три понятия:

  • База данных;
  • Таблица;
  • Запись.

База данных

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

Таблица

По отношению к базе данных таблица является вложенным объеком. То есть одна БД может содержать в себе множество таблиц.
Аналогией из реального мира может быть шкаф (база данных) внутри которого лежит множество коробок (таблиц).
Таблицы нужны для хранения данных одного типа, например, списка городов, пользователей сайта, или библиотечного каталога.
Таблицу можно представить как обычный лист в Excel-таблице, то есть совокупность строк и столбцов.
Наверняка каждый хоть раз имел дело с электронными таблицами (MS Excel).
Заполняя такую таблицу, пользователь определяет столбцы, у каждого из которых есть заголовок. В строках хранится информация.
В БД точно также: создавая новую таблицу, необходимо описать, из каких столбцов она состоит, и дать им имена.

Запись

Запись — это строка электронной таблицы.
Это неделимая сущность, которая хранится в таблице. Когда мы сохраняем данные веб-формы с сайта, то на самом деле добавляем новую запись в какую-то из таблиц базы данных. Запись состоит из полей (столбцов) и их значений. Но значения не могут быть какими угодно.
Определяя столбец, программист должен указать тип данных, который будет храниться в этом столбце: текстовый, числовой, логический, файловый и т.д. Это нужно для того, чтобы в будущем в базу не были записаны данные неверного типа.

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

  1. Создадим для сайта новую БД и дадим ей название «weather_diary».
  2. Создадим в БД новую таблицу с именем «weather_log» и определим там следующие столбцы:
    • Город (тип: текст);
    • День (тип: дата);
    • Температура (тип: число);
    • Облачность (тип: число; от 0 (нет облачности) до 4 (полная облачность));
    • Были ли осадки (тип: истина или ложь);
    • Комментарий (тип: текст).
  3. При сохранении формы будем добавлять в таблицу weather_log новую запись, и заполнять в ней все поля информацией из полей формы.

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

Реляционная база данных

Английское слово „relation“ можно перевести как связь, отношение.
А определение «реляционные базы данных» означает, что таблицы в этой БД могут вступать в отношения и находиться в связи между собой.
Что это за связи?
Например, одна таблица может ссылаться на другую таблицу. Это часто требуется, чтобы сократить объём и избежать дублирования информации.
В сценарии с дневником погоды пользователь вводит название своего города. Это название сохраняется вместе с погодными данными.
Но можно поступить иначе:

  1. Создать новую таблицу с именем „cities“.
  2. Все города в России известны, поэтому их все можно добавить в одну таблицу.
  3. Переделать форму, изменив поле ввода города с текстового на поле типа «select», чтобы пользователь не вписывал город, а выбирал его из списка.
  4. При сохранении погодной записи, в поле для города поставить ссылку на соответствующую запись из таблицы городов.

Так мы решим сразу две задачи:

  • Сократим объём хранимой информации, так как погодные записи больше не будут содержать название города;
  • Избежим дублирования: все пользователи будут выбирать один из заранее определённых городов, что исключит опечатки.

Связи между таблицами в БД бывают разных видов.
В примере выше использовалась связь типа «один-ко-многим», так как одному городу может соответствовать множество погодных записей, но не наоборот!
Бывают связи и других типов: «один-к-одному» и «многие-ко-многим», но они используются значительно реже.

SQL Syllabus

Database Fundamentals

Lesson 1 What is a Database? — Definition, Meaning, Types, Example
Lesson 2 What is SQL? — Learn SQL Basics, SQL Full Form & How to Use
Lesson 3 MySQL Workbench Tutorial for Beginners — How to Install MySQL Workbench & Use

Database Design

Lesson 1 Database Design Tutorial — Learn Data Modeling
Lesson 2 What is Normalization? — 1NF, 2NF, 3NF, BCNF Database Example
Lesson 3 What is ER Modeling? — Learn with Example

SQL Basics

Lesson 1 MySQL Create Table — How to Create Database in MySQL
Lesson 2 MySQL SELECT Statement — Learn with Example
Lesson 3 MySQL WHERE Clause — AND, OR, IN, NOT IN Query Example
Lesson 4 MySQL INSERT INTO Query — How to add Row in Table (Example)
Lesson 5 MySQL DELETE Query — How to Delete Row from a Table
Lesson 6 MySQL UPDATE Query — Learn with Example

Data Sorting

Lesson 1 ORDER BY in MySQL — DESC & ASC Query with EXAMPLE
Lesson 2 SQL GROUP BY and HAVING Clause — Learn with Example
Lesson 3 MySQL Wildcards Tutorial — Like, NOT Like, Escape, ( % ), ( _ )
Lesson 4 MYSQL Regular Expressions (REGEXP) — What is, Syntax and Examples

Functions

Lesson 1 MySQL Functions — String, Numeric, User-Defined, Stored
Lesson 2 MySQL Aggregate Functions Tutorial — SUM, AVG, MAX, MIN , COUNT, DISTINCT

Must Know Stuff!

Lesson 1 MySQL IS NULL & IS NOT NULL Tutorial — Learn with Example
Lesson 2 MySQL AUTO_INCREMENT — Learn with Example
Lesson 3 MYSQL — ALTER, DROP, RENAME, MODIFY — What is, Syntax with Examples
Lesson 4 MySQL LIMIT & OFFSET — Learn with Example

Most Dreaded Topics!

Lesson 1 MySQL SubQuery Tutorial — Learn with Example
Lesson 2 MySQL JOINS Tutorial — INNER, OUTER, LEFT, RIGHT, CROSS
Lesson 3 MySQL UNION — Complete Tutorial
Lesson 4 MySQL Views — How to Create View from Tables with Examples
Lesson 5 MySQL Index Tutorial — Create, Add & Drop

What Next!

Lesson 1 Your First Application using MySQL and PHP — Getting Started!
Lesson 2 Oracle MySQL 5.6 Certification — Oracle MySQL 5.6 Study Guide
Lesson 3 SQL vs MySQL — What’s the Difference Between SQL and MySQL?
Lesson 4 Best SQL Tools — 25 Best SQL Tools, Database Software & IDE
Lesson 5 SQL Query Builders & Editor — 10 Best SQL Query Builders & Editor
Lesson 6 Free SQL Courses — 11 Best Free SQL Courses & Certification
Lesson 7 SQL Books — 14 Best SQL Books for Beginners and Experts
Lesson 8 SQL Cheat Sheet — SQL Commands Cheat Sheet
Lesson 9 SQL Interview Questions — Top 50 SQL Interview Questions and Answers
Lesson 10 SQL Tutorial PDF — Download SQL Tutorial PDF for Beginners

SQL References

SQL Keywords
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE

MySQL Functions
String Functions
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER

Numeric Functions
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE

Date Functions
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK

Advanced Functions
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION

SQL Server Functions
String Functions
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER

Numeric Functions
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN

Date Functions
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR

Advanced Functions
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME

MS Access Functions
String Functions
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase

Numeric Functions
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val

Date Functions
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year

Other Functions
CurrentUser
Environ
IsDate
IsNull
IsNumeric

SQL Quick Ref

Портал «sql-ex.ru»

Сайт: http://www.sql-ex.ruСтоимость: бесплатно
«Практическое владение языком SQL»

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

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

Упражнения имеют разный уровень сложности (от 1 до 5), который проставлен во втором столбце списка упражнений. Предлагаются упражнения на выборку данных (оператор SELECT) и упражнения на модификацию данных (операторы INSERT, UPDATE, DELETE и MERGE). По результатам решения задач на сайте ведется рейтинг участников.

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

По результатам тестирования на сайте можно заказать сертификат «SQL Data Manipulation Language Specialist», подтверждающий квалификацию. Качество сертификата поддерживается периодической заменой задач и повышением сертификационных требований.

Что такое нормализация

Чтобы уменьшить размер реляционной базы (не хранить избыточные данные) и избежать противоречивости (аномалий) при работе с ними, отношения в базе нормализуют. Проще говоря — разбивают их на взаимосвязанные таблицы. Это называется декомпозицией.

Избыточность данных — это когда одни и те же данные хранятся в базе сразу в нескольких местах.

Проверим наш пример на избыточность

Каждая строка таблицы Messages содержит имя клиента и никнейм оператора, а также их телефоны. Причём в 1-й и 3-й строках мы видим звонки от одного и того же клиента, а в 1-й и во 2-й — ответы одного и того же менеджера. То есть в 1-й и 3-й строках дублируются имя и телефон клиента — Васи, а в 1-й и 2-й — никнейм менеджера «Оператор1».

Чтобы избавиться от дублирования информации, выделим сущности Клиент и Оператор. И вынесем специфичные для каждой атрибуты в отдельные таблицы.

В первой (Clients) будут храниться имена и телефоны клиентов, а во второй (Operators) — операторов. Кроме того, каждой записи в этих таблицах мы присвоим атрибут id — так называемый первичный ключ (его значение уникально, то есть не может повторяться в пределах таблицы). С его помощью мы установим связь с записями таблицы Messages.

Для этого к каждой записи в Messages (напомним, она всё ещё представляет сущность «звонок») добавим два новых атрибута (внешних ключа): id_client и id_oper. Они будут ссылаться на первичные ключи из таблиц Clients и Operators соответственно. Столбцы с именами и телефонами из таблицы Messages уберём.

И вот что получим:

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

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

Виды нереляционных баз данных

Базы NoSQL делятся на четыре основные категории (в зависимости от решаемых с их помощью задач).

Ключ-значение

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

Такая СУБД не поддерживает связи между объектами, выполняет лишь операции поиска значений по ключу, добавления и удаления записи.

Например:

key value
user1 {Кузнецов В., отдел маркетинга}
user2 {name:Лена, position:секретарь}
user3 {ООО «Вектор»}
user4 {Трофимова Таня, отд.2, дизайнер}
user5 {Галина Николаевна, гл. бух.}
user6 {65,84,236}

Базы «ключ-значение» часто используют для кэширования данных и организации очередей.

Их достоинства — быстрый поиск и простое масштабирование.

Их недостаток — нельзя производить операции со значениями. Например — сортировать их или анализировать.

Одна из самых популярных — Redis. Её используют Uber, Slack, Stack Overflow, сайты гостиниц и туристические, социальная сеть Twitter.

Документоориентированные СУБД

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

Если провести аналогию с реляционными СУБД, то коллекциям соответствуют таблицы, а документам — строки в них.

Например, фрагмент документа с информацией о фильмах:

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

Одна из самых популярных — MongoDB (там можно создавать процедуры на JavaScript).

Колоночные

Эти базы отличаются от реляционных лишь способом хранения данных на накопителе.

Если реляционная база создаёт для каждой таблицы по файлу, то в колоночной отдельный файл создаётся для каждого столбца таблицы.

Например, если реляционная таблица выглядит так:

name color property
волк серый зубастый
коза белая рогатая
капуста зелёная

То те же записи колоночной базы будут выглядеть примерно так:

name волк коза капуста
color серый белая зелёная
property зубастый рогатая

Что это даёт? Представьте, что вам нужны только названия объектов, а их свойства вас не интересуют.

При выполнении запроса в реляционной таблице просматривается каждая запись и из неё выбираются нужные данные. В колоночной базе с диска будет считана только одна колонка с названиями. Это сокращает время выполнения запроса, причём намного.

Колоночные базы применяются в различных каталогах и архивах данных, работа с которыми основана на подобных выборках.

Одна из самых популярных СУБД такого типа — Apache Cassandra.

Графовые

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

Вершины (или узлы графа) — это объекты (сущности), а рёбра графа — взаимосвязи между ними.

Для чего применяется

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

В финансовой индустриибанковские приложения и платежные системы, наподобие Stripe, хранят и обрабатывают информацию о финансовых операциях и пользователях. За процессами стоит сложная база. Кроме того, банковские системы баз имеют дополнительные требования безопасности, системы требуют соблюдения самых высоких уровней риска в используемом коде SQL.

Музыкальные приложения, наподобие SpotifyиPandora активно используют базы. Помимо прочего, помогают дополнения хранить обширные библиотеки музыкальных файлов и альбомов различных исполнителей, оперировать ими, с целью отыскать информацию, которую ищет пользователь, хранить инфу о пользователях и их предпочтениях и т. д.

Платформы социальных сетейпредполагают огромную обработку информации. ПриложенияInstagramиSnapchat, используют SQL для хранения информации профиля пользователя, наподобие биография и местоположение, с целью обновления базы дополнения, когда пользователь создает публикацию или делится фотографией.

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

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

Добавить комментарий

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

Adblock
detector