20 бесплатных онлайн-курсов по sql [2021]
Содержание:
Sql Server Advanced Tutorial
It is an advanced SQL tutorial section. Here, you learn about View, Stored procedures, triggers, functions, Cursors, Etc.
- Change Data Capture
- Table partition
- Table Partitioning using Management Studio
- SQL Try Catch
- Views
-
User Defined Functions
- Alter User Defined Functions
- Stored Procedures
- Introduction to Stored Procedures
- Select Statement Inside the Stored procedure Example
- Insert Statement Inside a Stored Procedure Example
- Update Statement within the Stored Procedure
- Input Parameters in a Stored Procedures
- Output Parameters in a Stored Procedure
- Return Values in a Stored Procedure
- Insert Stored Procedure output into Temporary Table
- Useful System Stored Procedures
- Triggers
- Introduction to Triggers
- After Insert
- Instead Of Insert
- After Update
- Instead Of Update
- After Delete
- Instead Of Delete
- Cursors
- Static Cursor
- Dynamic Cursor
- Forward_Only Cursor
- Fast_Forward Cursor
- Keyset
- Transactions
- Transactions
- Nested Transactions
- ACID Properties
PostgreSQL
PostgreSQL является еще одним выдающимся решением с открытым исходным кодом, работающим во всех основных операционных системах, включая Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) и Windows. PostgreSQL полностью отвечает принципам ACID (атомарность, согласованность, изолированность, устойчивость).
Достоинства
- Возможность создания пользовательских типов данных и методов запросов;
- Среда разработки баз данных выполняет хранимые процедуры более чем на десятке языков программирования: Java, Perl, Python, Ruby, Tcl, C/C ++ и собственный PL/pgSQL;
- GiST (система обобщенного поиска): объединяет различные алгоритмы сортировки и поиска: B-дерево, B+-дерево, R-дерево, деревья частичных сумм и ранжированные B+ -деревья;
- Возможность создания для большего параллелизма без изменения кода Postgres, например, CitusDB.
Недостатки
- Система MVCC требует регулярной «чистки»: проблемы в средах с высокой скоростью транзакций;
- Разработка осуществляется обширным сообществом: слишком много усилий для улучшений.
Дополнительные обучающие программы
Кроме первой десятки есть и другие предложения. У представленных онлайн-курсов разная ценовая политика, перечень вопросов, поднимаемых во время занятий, и продолжительность. Поэтому легче выбрать какую-то одну программу.
Как стать аналитиком данных – Школа анализа данных
Как стать аналитиком данных – это полгода обучения работе с БД. Уже с первого дня студенты начинают практиковаться с помощью онлайн-тренажеров. Под конец учебы участников онлайн-курса будет ждать готовое портфолио и диплом, подтверждающий прохождение обучения.
В программе:
- язык программирования Python;
- закономерности в потоке информации;
- использование средств визуализации;
- основы статистики;
- подготовка информации для анализа;
- извлечение информации из БД;
- метрики и основные инструменты анализа бизнес-показателей;
- A/B-тестирование;
- автоматизация процессов анализа сведений;
- создание дашбордов.
Полная стоимость – 84 000 руб. Можно выплачивать по 14 000 руб. в месяц, а можно заплатить всю сумму сразу и получить скидку. При единоразовом платеже сумма составит 70 000 руб. Также есть и бесплатные материалы.
SQL базовый – ITVDN
Онлайн-курс SQL базовый будет полезен как начинающему специалисту, так и программисту с опытом, которому необходимо обновить или углубить знания об этом языке программирования.
Какие темы рассматриваются в видеоуроках:
- принципы проектирования БД;
- создание и оптимизация запросов;
- SQL-сервер, его архитектура;
- понятие БД и СУБД;
- структура и таблицы БД;
- типы сведений;
- основная терминология.
Стоимость можно узнать после регистрации на платформе и подачи заявки.
Интерактивные онлайн-курсы по SQL – LearnDB
Интерактивные онлайн-курсы по SQL основаны на постепенном выполнении практических заданий. Студенты учатся использовать язык программирования и создавать простые и сложные запросы.
В программе:
- написание запросов;
- агрегатные, строковые и математические функции;
- операции над множествами;
- возможности СУБД;
- подзапросы во фразе FROM;
- возможности WITH.
Для прохождения курса необходимо оформить подписку. Ее цена за 1 месяц – 300 руб., за год – 900 руб.
Курс SQL и PostgreSQL для начинающих – beONmax
Курс SQL и PostgreSQL для начинающих рассчитан на новичков и на более опытных специалистов, которые уже знают хотя бы один язык программирования. Включает в себя более 120 видеоуроков и 18 практик.
- запросы и подзапросы;
- проектирование БД;
- создание таблиц;
- соединения;
- ошибки и их обработка;
- индексы;
- оконные функции;
- импорт информации;
- транзакции;
- триггеры и безопасность.
По окончании выдается сертификат.
Чтобы получить доступ к материалам и заданиям, необходимо оформить подписку. Ее стоимость на 1 месяц – 7,8 $, на полгода – 11,8 $, на год – 15,8 $.
Нетология
Сайт: https://netology.ruСтоимость: 23 900 р.
«SQL и получение данных»
Научат получать данные для анализа без помощи разработчиков. Объяснят, как пользоваться инструментами, которые упростят работу с отчётами.
Программа обучения SQL — первый шаг в профессиональном росте дата саентистов и аналитиков данных в сильных командах и проектах. Уже через 5 лет, по словам экспертов активно развивающихся отраслей без владения SQL невозможно будет вырасти выше уровня junior.
Преимущества:
- 8 часов в неделю интенсивных уроков и практики с экспертами отрасли
- 3 инструмента — SQL, PostegreSQL и MongoDB, применение их на практике
- Итоговый проект — защитившись, слушатель получит практический кейс для прокачки резюме
В ходе программы обучения слушатель:
- Овладеет языком запросов SQL
- Познакомится с разнообразным окружением БД: git, виртуальные машины, linux
- Углубит знания SQL
- Перейдёт от исполнения запросов к написанию функций
- Найдёт общий язык с разработчиками
- Улучшит понимание процессов инжиниринга данных
Выдается диплом установленного образца от известного онлайн-университета по итогам курса.
Как хранится информация в БД
В основе всей структуры хранения лежат три понятия:
- База данных;
- Таблица;
- Запись.
База данных
База данных — это высокоуровневное понятие, которое означает объединение совокупности данных, хранимых для выполнения одной цели.
Если мы делаем современный сайт, то все его данные будут храниться внутри одной базы данных. Для сайта онлайн-дневника наблюдений за погодой тоже понадобится создать отдельную базу данных.
Таблица
По отношению к базе данных таблица является вложенным объеком. То есть одна БД может содержать в себе множество таблиц.
Аналогией из реального мира может быть шкаф (база данных) внутри которого лежит множество коробок (таблиц).
Таблицы нужны для хранения данных одного типа, например, списка городов, пользователей сайта, или библиотечного каталога.
Таблицу можно представить как обычный лист в Excel-таблице, то есть совокупность строк и столбцов.
Наверняка каждый хоть раз имел дело с электронными таблицами (MS Excel).
Заполняя такую таблицу, пользователь определяет столбцы, у каждого из которых есть заголовок. В строках хранится информация.
В БД точно также: создавая новую таблицу, необходимо описать, из каких столбцов она состоит, и дать им имена.
Запись
Запись — это строка электронной таблицы.
Это неделимая сущность, которая хранится в таблице. Когда мы сохраняем данные веб-формы с сайта, то на самом деле добавляем новую запись в какую-то из таблиц базы данных. Запись состоит из полей (столбцов) и их значений. Но значения не могут быть какими угодно.
Определяя столбец, программист должен указать тип данных, который будет храниться в этом столбце: текстовый, числовой, логический, файловый и т.д. Это нужно для того, чтобы в будущем в базу не были записаны данные неверного типа.
Соберем всё вместе, чтобы понять, как будет выглядеть ведение дневника погоды при участии базы данных.
- Создадим для сайта новую БД и дадим ей название «weather_diary».
- Создадим в БД новую таблицу с именем «weather_log» и определим там следующие столбцы:
- Город (тип: текст);
- День (тип: дата);
- Температура (тип: число);
- Облачность (тип: число; от 0 (нет облачности) до 4 (полная облачность));
- Были ли осадки (тип: истина или ложь);
- Комментарий (тип: текст).
- При сохранении формы будем добавлять в таблицу weather_log новую запись, и заполнять в ней все поля информацией из полей формы.
Теперь можно быть уверенными, что наблюдения наших пользователей не пропадут, и к ним всегда можно будет получить доступ.
Реляционная база данных
Английское слово „relation“ можно перевести как связь, отношение.
А определение «реляционные базы данных» означает, что таблицы в этой БД могут вступать в отношения и находиться в связи между собой.
Что это за связи?
Например, одна таблица может ссылаться на другую таблицу. Это часто требуется, чтобы сократить объём и избежать дублирования информации.
В сценарии с дневником погоды пользователь вводит название своего города. Это название сохраняется вместе с погодными данными.
Но можно поступить иначе:
- Создать новую таблицу с именем „cities“.
- Все города в России известны, поэтому их все можно добавить в одну таблицу.
- Переделать форму, изменив поле ввода города с текстового на поле типа «select», чтобы пользователь не вписывал город, а выбирал его из списка.
- При сохранении погодной записи, в поле для города поставить ссылку на соответствующую запись из таблицы городов.
Так мы решим сразу две задачи:
- Сократим объём хранимой информации, так как погодные записи больше не будут содержать название города;
- Избежим дублирования: все пользователи будут выбирать один из заранее определённых городов, что исключит опечатки.
Связи между таблицами в БД бывают разных видов.
В примере выше использовалась связь типа «один-ко-многим», так как одному городу может соответствовать множество погодных записей, но не наоборот!
Бывают связи и других типов: «один-к-одному» и «многие-ко-многим», но они используются значительно реже.
SQL Keywords
Keyword | Description |
---|---|
ADD | Adds a column in an existing table |
ADD CONSTRAINT | Adds a constraint after a table is already created |
ALTER | Adds, deletes, or modifies columns in a table, or changes the data type of a column in a table |
ALTER COLUMN | Changes the data type of a column in a table |
ALTER TABLE | Adds, deletes, or modifies columns in a table |
ALL | Returns true if all of the subquery values meet the condition |
AND | Only includes rows where both conditions is true |
ANY | Returns true if any of the subquery values meet the condition |
AS | Renames a column or table with an alias |
ASC | Sorts the result set in ascending order |
BACKUP DATABASE | Creates a back up of an existing database |
BETWEEN | Selects values within a given range |
CASE | Creates different outputs based on conditions |
CHECK | A constraint that limits the value that can be placed in a column |
COLUMN | Changes the data type of a column or deletes a column in a table |
CONSTRAINT | Adds or deletes a constraint |
CREATE | Creates a database, index, view, table, or procedure |
CREATE DATABASE | Creates a new SQL database |
CREATE INDEX | Creates an index on a table (allows duplicate values) |
CREATE OR REPLACE VIEW | Updates a view |
CREATE TABLE | Creates a new table in the database |
CREATE PROCEDURE | Creates a stored procedure |
CREATE UNIQUE INDEX | Creates a unique index on a table (no duplicate values) |
CREATE VIEW | Creates a view based on the result set of a SELECT statement |
DATABASE | Creates or deletes an SQL database |
DEFAULT | A constraint that provides a default value for a column |
DELETE | Deletes rows from a table |
DESC | Sorts the result set in descending order |
DISTINCT | Selects only distinct (different) values |
DROP | Deletes a column, constraint, database, index, table, or view |
DROP COLUMN | Deletes a column in a table |
DROP CONSTRAINT | Deletes a UNIQUE, PRIMARY KEY, FOREIGN KEY, or CHECK constraint |
DROP DATABASE | Deletes an existing SQL database |
DROP DEFAULT | Deletes a DEFAULT constraint |
DROP INDEX | Deletes an index in a table |
DROP TABLE | Deletes an existing table in the database |
DROP VIEW | Deletes a view |
EXEC | Executes a stored procedure |
EXISTS | Tests for the existence of any record in a subquery |
FOREIGN KEY | A constraint that is a key used to link two tables together |
FROM | Specifies which table to select or delete data from |
FULL OUTER JOIN | Returns all rows when there is a match in either left table or right table |
GROUP BY | Groups the result set (used with aggregate functions: COUNT, MAX, MIN, SUM, AVG) |
HAVING | Used instead of WHERE with aggregate functions |
IN | Allows you to specify multiple values in a WHERE clause |
INDEX | Creates or deletes an index in a table |
INNER JOIN | Returns rows that have matching values in both tables |
INSERT INTO | Inserts new rows in a table |
INSERT INTO SELECT | Copies data from one table into another table |
IS NULL | Tests for empty values |
IS NOT NULL | Tests for non-empty values |
JOIN | Joins tables |
LEFT JOIN | Returns all rows from the left table, and the matching rows from the right table |
LIKE | Searches for a specified pattern in a column |
LIMIT | Specifies the number of records to return in the result set |
NOT | Only includes rows where a condition is not true |
NOT NULL | A constraint that enforces a column to not accept NULL values |
OR | Includes rows where either condition is true |
ORDER BY | Sorts the result set in ascending or descending order |
OUTER JOIN | Returns all rows when there is a match in either left table or right table |
PRIMARY KEY | A constraint that uniquely identifies each record in a database table |
PROCEDURE | A stored procedure |
RIGHT JOIN | Returns all rows from the right table, and the matching rows from the left table |
ROWNUM | Specifies the number of records to return in the result set |
SELECT | Selects data from a database |
SELECT DISTINCT | Selects only distinct (different) values |
SELECT INTO | Copies data from one table into a new table |
SELECT TOP | Specifies the number of records to return in the result set |
SET | Specifies which columns and values that should be updated in a table |
TABLE | Creates a table, or adds, deletes, or modifies columns in a table, or deletes a table or data inside a table |
TOP | Specifies the number of records to return in the result set |
TRUNCATE TABLE | Deletes the data inside a table, but not the table itself |
UNION | Combines the result set of two or more SELECT statements (only distinct values) |
UNION ALL | Combines the result set of two or more SELECT statements (allows duplicate values) |
UNIQUE | A constraint that ensures that all values in a column are unique |
UPDATE | Updates existing rows in a table |
VALUES | Specifies the values of an INSERT INTO statement |
VIEW | Creates, updates, or deletes a view |
WHERE | Filters a result set to include only records that fulfill a specified condition |
❮ Previous
Next ❯
MySQL
Самый именитый представитель нашего обзора программ для разработки базы данных. Бесплатная база данных MySQL существует с 1995 года и теперь принадлежит компании Oracle. СУБД имеет открытый исходный код. Также существует несколько платных версий, которые предлагают дополнительные функции, такие как гео-репликация кластера и автоматическое масштабирование.
Поскольку MySQL является отраслевым стандартом, она совместима практически со всеми операционными системами и написана на языках C и C ++. Это решение является отличным вариантом для международных пользователей. Сервер СУБД может выводить клиентам сообщения об ошибках на нескольких языках.
Достоинства
- Проверка на стороне сервера;
- Может использоваться как локальная база данных;
- Гибкая система привилегий и паролей;
- Безопасное шифрование всего трафика паролей;
- Библиотека, которая может быть встроена в автономные приложения;
- Предоставляет сервер в качестве отдельной программы для сетевого окружения клиент/сервер.
Недостатки практической разработки и администрирования баз данных MySQL Приобретена компанией Oracle:
- пользователи полагают, что MySQL больше не подпадает под категорию бесплатного и открытого программного обеспечения;
- больше не поддерживается сообществом;
- пользователи не могут исправлять ошибки и патчи;
- проигрывает другим решениям из-за медленных обновлений.
SQL Справочник
SQL Ключевые слова
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 Функции
Функции строк
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
Функции чисел
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
Функции дат
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
Функции расширений
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 функции
Функции строк
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
Функции чисел
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
Функции дат
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR
Функции расширений
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME
MS Access функции
Функции строк
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase
Функции чисел
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val
Функции дат
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year
Другие функции
CurrentUser
Environ
IsDate
IsNull
IsNumeric
SQL ОператорыSQL Типы данныхSQL Краткий справочник
Шаг 2. Избавляемся от дубликатов в столбцах
Как было оговорено выше, столбцы “username” и “following_username” содержат дубликаты данных. Они возникли в результате того, что я хотел отобразить отношения между твиттами и пользователями. Давайте улучшим нашу структуру БД, разделив существующую таблицу на две: в одной будем хранить информацию, а в другой — отношения между записями.
Поскольку @Brett_Englebert подписан на @RealSkipBayless, то в таблице “following” отобразим это следующим образом: имя @Brett_Englebert поместим в колонку “from_user”, а @RealSkipBayless в “to_user.” Давайте посмотрим, как будет выглядеть таблица “following” после разделения Таблицы 1:
Таблица 2. following
from_user | to_user |
---|---|
_DreamLead | Scootmedia |
_DreamLead | MetiersInternet |
GunnarSvalander | klout |
GunnarSvalander | zillow |
GEsoftware | DayJobDoc |
GEsoftware | byosko |
adrianburch | CindyCrawford |
adrianburch | Arjantim |
AndyRyder | MichaelDell |
AndyRyder | Yahoo |
Brett_Englebert | RealSkipBayless |
Brett_Englebert | stephenasmith |
NimbusData | dellock6 |
NimbusData | rohitkilam |
SSWUGorg | drsql |
SSWUGorg | steam_games |
Таблица 3. users
full_name | username | text | created_at |
---|---|---|---|
Boris Hadjur | _DreamLead | What do you think about #emailing #campaigns #traffic in #USA? Is it a good market nowadays? do you have #databases? | Tue, 12 Feb 2013 08:43:09 +0000 |
Gunnar Svalander | GunnarSvalander | Bill Gates Talks Databases, Free Software on Reddit http://t.co/ShX4hZlA #billgates #databases | Tue, 12 Feb 2013 07:31:06 +0000 |
GE Software | GEsoftware | RT @KirkDBorne: Readings in #Databases: excellent reading list, many categories: http://t.co/S6RBUNxq via @rxin Fascinating. | Tue, 12 Feb 2013 07:30:24 +0000 |
Adrian Burch | adrianburch | RT @tisakovich: @NimbusData at the @Barclays Big Data conference in San Francisco today, talking #virtualization, #databases, and #flash memory. | Tue, 12 Feb 2013 06:58:22 +0000 |
Andy Ryder | AndyRyder5 | http://t.co/D3KOJIvF article about Madden 2013 using AI to prodict the super bowl #databases #bus311 | Tue, 12 Feb 2013 05:29:41 +0000 |
Andy Ryder | AndyRyder5 | http://t.co/rBhBXjma an article about privacy settings and facebook #databases #bus311 | Tue, 12 Feb 2013 05:24:17 +0000 |
Brett Englebert | Brett_Englebert | #BUS311 University of Minnesota’s NCFPD is creating #databases to prevent “food fraud.” http://t.co/0LsAbKqJ | Tue, 12 Feb 2013 01:49:19 +0000 |
Brett Englebert | Brett_Englebert | #BUS311 companies might be protecting their production #databases, but what about their backup files? http://t.co/okJjV3Bm | Tue, 12 Feb 2013 01:31:52 +0000 |
Nimbus Data Systems | NimbusData | @NimbusData CEO @tisakovich @BarclaysOnline Big Data conference in San Francisco today, talking #virtualization, #databases,& #flash memory | Mon, 11 Feb 2013 23:15:05 +0000 |
SSWUG.ORG | SSWUGorg | Don’t forget to sign up for our FREE expo this Friday: #Databases, #BI, and #Sharepoint: What You Need to Know! http://t.co/Ijrqrz29 | Mon, 11 Feb 2013 22:15:37 +0000 |
Уже лучше. Теперь в таблице “users” (Таблица 3) у нас хранится только информация о твиттах, а в таблице following (Таблица 2) — зависимость пользователей.
Основатель теории реляционных баз данных, Эдгар Кодд, назвал бы этот процесс (удаления повторений из столбцов таблиц) приведением БД к первой нормальной форме.
Несоответствие функций
SQL Server предоставляет ряд системных функций для выполнения различных операций. Нужно убедиться, что они используются правильно. Некорректная функция может не возвращать ошибку, но при этом возвращать неправильные результаты.
Например, функция ISNUMERIC печально известна тем, что возвращает непредсказуемые результаты, что продемонстрировано в приведенном ниже примере:
DECLARE @a TABLE(ColA VARCHAR(10)); INSERT INTO @a VALUES ('abc'), ('123'), ('$456'), ('22:35:27'); SELECT ColA, CASE WHEN ISNUMERIC(ColA) = 1 THEN CAST(ColA AS INT) END AS TestResults FROM @a;
Мы создаем переменную таблицы TSQL и заполняем ее разными типами значений, которые передаются в виде строк. Затем используем функцию ISNUMERIC для проверки, является ли значение числовым. Если это так (функция возвращает 1), пытаемся преобразовать значение в тип данных INT. Но в данном случае, когда ядро базы данных достигает значения $456, оно сбрасывается и возвращается сообщение об ошибке:
Conversion failed when converting the varchar value '$456' to data type int.
Проблема заключается в том, что функция ISNUMERIC иногда вызывает числовое значение, которое не может быть преобразовано в числовой тип данных, как для $456. Она даже интерпретирует такие значения, как 7e9 и $., как числовые. Лучшим решением данной проблемы является использование функции TRY_CONVERT:
DECLARE @a TABLE(ColA VARCHAR(10)); INSERT INTO @a VALUES ('abc'), ('123'), ('$456'), ('22:35:27'); SELECT ColA, CASE WHEN TRY_CONVERT(int, ColA) IS NOT NULL THEN CAST(colA AS INT) END AS TestResults FROM @a;
Преобразование данных является довольно сложным разделом в SQL Server, поэтому вы должны быть внимательны.
При работе с системными функциями вам придется иметь дело с различными функциями, которые могут использоваться для выполнения аналогичных операций или могут возвращать похожие типы информации. Например, можно использовать функцию CAST или CONVERT для преобразования типа данных значения. Функция CAST является частью стандартов ANSI, но имеет ограниченные возможности.
Функция TSQL CONVERT не предусмотрена стандартами, но она предоставляет ряд параметров для форматирования значений даты и времени. Хотя во многих случаях лучше оставить форматирование на уровне приложений
Независимо от этого нужно будет принять решение, какие из функций использовать, и насколько важно для вас соответствие кода стандартам ANSI
Другим примером взаимозаменяемых функций являются COUNT и EXISTS, когда они используются для подтверждения существования определенных данных. Например, следующий оператор IF проверяет, содержит ли таблица Person строки, имеющие значение EM в столбце PersonType:
IF(SELECT COUNT(*) FROM Person.Person WHERE PersonType = 'EM') > 0 SELECT FirstName, LastName FROM Person.Person WHERE PersonType = 'EM';
Хотя этот оператор работает отлично, можно увеличить производительность, использовав функцию EXISTS, особенно для больших наборов данных:
IF EXISTS(SELECT * FROM Person.Person WHERE PersonType = 'EM') SELECT FirstName, LastName FROM Person.Person WHERE PersonType = 'EM';
Неправильное использование функции — это не всегда проблема функции. Например, в зависимости от ситуации использование функции SCOPE_IDENTITY() выдает более точную информацию, чем системная переменная @@IDENTITY. В обоих случаях возвращается последнее значение идентификатора, сгенерированное для таблицы в текущей сессии. Но функция SCOPE_IDENTITY() применяется только к определенной области, а переменная @@ IDENTITY этого не делает, что может влиять на правильность возвращаемого значения. Дополнительные сведения об этой проблеме вы найдете в разделе документации SQL Server SCOPE_IDENTITY (Transact-SQL).
Использование системных функций TSQL не должно быть произвольным. Необходимо тщательно взвесить, какие из них задействовать.
АНО ДПО «ШАД»
Сайт: https://praktikum.yandex.ruСтоимость: по запросу
За 6 месяцев обучения по 10 часов в неделю слушатель освоит востребованные навыки аналитика данных и соберёт портфолио проектов.
Погружение в IT-профессию подразумевает постоянный контакт с изучаемыми технологиями, выполнение практических заданий и общение с наставником. Для этого создали собственную среду обучения.
С первого дня учится на практике. Дают знания небольшими частями, которые нужно сразу применить, написав собственный код в онлайн-тренажёре.
Команда наставников проверяет и комментирует работы, помогает разобраться в сложностях и обучает собственным профессиональным приёмам.
Стоимость:
- «Вводный курс» – бесплатно. Слушатель поймёт, что представляет собой анализ данных, какие процессы он в себя включает и чем занимается аналитик. Изучит азы важнейшего инструмента — языка программирования Python и SQL. Можно оценить свои силы, мотивацию, запас времени, и решить, нужно ли идти дальше
- «Платное продолжение» – 60 000 р. Закончив бесплатный курс, можно пойти дальше. С этого момента слушатель полноценно осваивает профессию аналитика
Сертификат — это официальный документ о дополнительном образовании. Чтобы его получить, необходимо сдать итоговый проект. Для работодателя это показатель, что слушатель достаточно знает об аналитике данных и самостоятельно выполнил проекты из портфолио.