7 584
订阅者
无数据24 小时
-7307 天
-4 03830 天
帖子存档
7 584
Тип данных DATETIME
Давние подписчики этого канала уже знают, что это, пост служит информацией для новеньких, а также как примечание в будущем, когда будем разбирать элементы SQL, связанные с датой и временем.
Тип данных DATETIME представляет собой набор цифр и символов и используется для величин, содержащих информацию как о дате, так и о времени.
Указывается он так: сперва цифры года, затем месяца и только потом дня, а после идут часы, минуты, секунды. Не путайте!
Выглядит это так:
YYYY-MM-DD HH:MM:SS.
Также DATETIME может включать в себя наносекунды, соответственно это будет выглядеть: YYYY-MM-DD HH:MM:SS[.NNN].
Либо это может быть отдельно дата, или время. В общем, множество вариаций.
#совет #код7 584
Нормализация и денормализация (Часть 1)
Сейчас мы с вами поговорим о довольно важной части не только баз данных и SQL, но и всего программирования в целом.
Есть два диаметрально противоположных термина - нормализация и денормализация, сперва мы расскажем о первом.
Если очень коротко и грубо говоря, то нормализация - это приведение базы данных к нормальному состоянию, удаляя из нее лишние части.
Сама по себе нормальность делится на три уровня. Вот они:
• Первая нормальная форма (1НФ) выполняется, если все значения атрибутов (читай, колонок таблицы) атомарны, то есть неделимы.
• Вторая нормальная форма (2НФ) означает, что выполнены требования 1НФ, при этом все атрибуты целиком зависят от составного ключа и не зависят ни от какой его части.
• Третья нормальная форма (3НФ) означает, что выполнены требования 2НФ, при этом в между атрибутами отношения нет транзитивных зависимостей.
Такими образом, мы приводим базу данных к определенному уровню нормальности. Но что такое денормализация и почему это хорошо, а не плохо? Об этом поговорим в следующей части.
#совет #код
7 584
Тип данных TEXT
Ладно, давайте тогда сразу перейдем к типам данных.
Первым будет тип данных TEXT, и с ним не все так просто, как может показаться на первый раз. Дело в том, что его можно разделить на несколько подтипов, а именно:
• TINYTEXT: представляет текст длиной до 255 байт;
• TEXT: представляет текст длиной до 65 КБ;
• MEDIUMTEXT: представляет текст длиной до 16 МБ;
• LARGETEXT: представляет текст длиной до 4 ГБ.
На этом, в принципе, по этому типу все.
#совет #код
7 584
MySQL (Часть 2)
И вновь я напоминаю вам о нашем старом посте про одну из популярнейших баз данных. Он находится здесь. Мне также есть, что про него рассказать.
MySQL поддерживает 6 типов данных. Это:
• CHAR/VARCHAR;
• TEXT;
• DATETIME;
• TINYINT;
• FLOAT.
Пожалуй, стоит подробнее разобрать те типы данных, которые ранее на этом канале не упоминались. А вы как думаете?
#совет #инструмент
7 584
Функция CHARINDEX
Ещё одна функция, похожая на предыдущую.
Функция CHARINDEX возвращает местоположение подстроки в строке. Поиск не чувствителен к регистру, как и в случае с PARTINDEX.
Выглядит это так:
CHARINDEX( substring, string, [start_position] )
Где:
substring - подстрока, которую вы хотите найти;
string – строка в которой происходит поиск;
start_position - необязательный, позиция в строке, с которой начнется поиск.
Вы можете посмотреть на функцию постом выше и эту и увидеть нормальное такое сходство. Вы правы. Но в чем разница?
Главное отличие PARTINDEX от CHARINDEX заключается в том, что поисковая строка может содержать подстановочные знаки — % и _. При этом концевые знаки % являются обязательными.
Как пример разницы, вернём имена кораблей, которые содержат последовательность из трех символов, первый и последний из которых есть "e":
SELECT name
FROM Ships
WHERE PATINDEX('%e_e%', name) > 0;
Вот так мы изучили одну функцию и закрепили в голове другую.
#совет #код7 584
Вам нравится читать контент на этом канале?
Возможно, вы задумывались о том, чтобы купить на нем рекламу?
Следуйте 3 простым шагам, чтобы сделать это:
1) Регистрируйтесь по ссылке: https://telega.in/c/HOwTo_SQL
2) Пополняйтесь удобным способом
3) Размещайте рекламное сообщение
Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.
7 584
Функция PATINDEX
Что ни день - то новая функция, предыдущую можете глянуть здесь.
Функция PATINDEX возвращают местоположение шаблона в строке. Поиск не чувствителен к регистру.
Выглядит это так:
PATINDEX( '%pattern%', string )
Вы можете наблюдать в строке выше pattern - шаблон, который вы хотите найти. шаблон должен быть окружен символами %, или другими, об этом подробнее, а также о другой функции, мы поговорим в дальнейшем.
#совет #код7 584
Ограничение UNIQUE
Пора заканчивать с этим списком ограничений, и вот последнее из них.
Ограничение UNIQUE позволяет идентифицировать каждую запись в таблице.
Если помещается ограничение столбца UNIQUE в поле при создании таблицы, база данных отклонит любую попытку ввода в это поле для одной из строк, значения, которое уже представлено в другой строке.
Это ограничение может применяться только к полям, которые были объявлены как непустые (NOT NULL), так как не имеет смысла позволить одной строке таблицы иметь значение NULL, а затем исключать другие строки с NULL значениями как дубликаты.
Пример на SQL SERVER:
CREATE TABLE Student ( Kod_stud integer
NOT NULL UNIQUE, Fam char (30)
NOT NULL UNIQUE, Adres char (50), Ball decimal);
В результате, когда обьявляется поле Fam уникальным, две Смирновых Марии могут быть введены различными способами — например, Смирнова Мария и Смирнова М. Столбцы (не первичные ключи), чьи значения требуют уникальности, называются ключами-кандидатами или уникальными ключами.
Далее нас ждёт завершение списка функций.
#совет #код7 584
Самое крупное хранилище инструментов, шпаргалок и лайфхаков для сисадминов:
https://t.me/sysadmin_library
Каждый день канал пополняется 3-мя постами.
7 584
Ограничение FOREIGN KEY
Ещё одно ограничение из этого поста.
Внешние ключи позволяют установить связи между таблицами. Внешний ключ устанавливается для столбцов из зависимой, подчиненной таблицы, и указывает на один из столбцов из главной таблицы. Как правило, внешний ключ указывает на первичный ключ из связанной главной таблицы.
Для создания ограничения внешнего ключа после FOREIGN KEY указывается столбец таблицы, который будет представляет внешний ключ. А после ключевого слова REFERENCES указывается имя связанной таблицы, а затем в скобках имя связанного столбца, на который будет указывать внешний ключ. После выражения REFERENCES идут выражения ON DELETE и ON UPDATE, которые задают действие при удалении и обновлении строки из главной таблицы соответственно.
Выглядит это так:
[CONSTRAINT имя_ограничения]
FOREIGN KEY (столбец1, столбец2, ... столбецN)
REFERENCES главная_таблица (столбец_главной_таблицы1, столбец_главной_таблицы2, ... столбец_главной_таблицыN)
[ON DELETE действие]
[ON UPDATE действие]
Таким образом, создаётся зависимость одной таблицы от другой.
#совет #код7 584
Ограничение PRIMARY KEY
Предпоследнее ограничение из этого поста.
Оператор PRIMARY KEY (Первичный ключ) — это параметр, который устанавливается для однозначной идентификации той или иной записи в таблице. Значения SQL PRIMARY KEY должны быть всегда уникальны, а так же не содержать значений NULL.
Любая таблица обязана иметь Первичный ключ, по которому можно однозначно идентифицировать записи в ней.
Как это выглядит на MySQL:
CREATE TABLE table_name (
Id int NOT NULL,
PRIMARY KEY (Id)
)
#совет #код7 584
Обучение SQL с нуля до Senior Developer
Никаких регистраций и вебинаров. Просто переходи по ссылке и читай канал:
@seniorsql
7 584
Команда DESCRIBE
Иногда нам нужно узнать структуру созданной таблицы. Для этого можно воспользоваться команой DESCRIBE. Выглядит это так:
DESCRIBE table name;
Где table name – название таблицы, структуру которой мы запрашиваем.
Команда DESCRIBE – это внутренняя команда системы управления базами данных MySQL, то есть она не входит в стандарт SQL.
Пример:
DESCRIBE authors;
В результате интерпретатор MySQL выведет таблицу authors.
#совет #код7 584
Связанные подзапросы
Помимо тех двух типов подзапросов, отдельно выделим этот тип.
Связанным подзапросом мы называем тот подзапрос, который содержит ссылку на таблицу, которая была объявлена во внешнем запросе.
Пример: ссылка.
#совет #код
7 584
Функция NOW
Давно у нас не было функций, связанных со временем. Предыдущую можно глянуть здесь.
Функция NOW() возвращает текущую дату и время.
Дата и время возвращаются притом, как (строка) "YYYY-MM-DD HH-MM-SS" или как (числовое) YYYYMMDDHHMMSS.uuuuuu.
Пример:
SELECT * FROM workers WHERE date > NOW();
В результате
выбираются все работники, у которых дата больше текущей.
#совет #код7 584
Ограничение UNIQUE
Ещё одно ограничение из этого поста.
Ограничение UNIQUE можно использовать для обеспечения того, чтобы в указанные столбцы, не входящие в состав первичного ключа, не вводились повторяющиеся значения.
Пример с командой CREATE TABLE:
CREATE TABLE Persons (
ID int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
Результат - уникальное ограничение для столбца "ID" при создании таблицы "Persons".
#совет #код7 584
Будни аналитика данных: какие задачи решает и с кем работает
Чтобы понять, подходит ли вам профессия, важно увидеть, как она устроена изнутри. Примерьте на себя роль аналитика данных с чатботом «Один день из жизни аналитика». Он основан на реальных задачах аналитика с вариантами их решения.
Вы увидите, как устроен день такого специалиста, ближе познакомитесь с его ежедневными задачами и разберёте несколько кейсов. А также получите рекомендации, как выбрать подходящую профессию в сфере работы с данными.
Запустите бота, чтобы провести рабочий день с задачами аналитика – https://netolo.gy/iGI
7 584
Подзапросы в SQL (Часть 2)
Мне есть, чем дополнить свой старый пост. О том, что такое подзапросы, а также о примере такого, можете узнать в первой части.
Помимо определения, стоит сказать, что существует два типа подзапросов, а именно: коррелированные и некоррелированные.
Коррелированный подзапрос - это запрос, который выбирает данные из таблицы со ссылкой на внешний запрос. Он не считается независимым запросом, поскольку ссылается на другую таблицу или столбец в таблице.
Некоррелированный подзапрос - этот запрос является независимым запросом, в котором выходные данные подзапроса подставляются в основной запрос.
#совет #код
7 584
Ограничение CHECK
Из поста выше сразу взял первое не разобранное ограничение и бегу вам о нём рассказать!
Ограничение CHECK используется для ограничения диапазона значений, который может быть помещен в столбец.
Если вы определяете ограничение CHECK для одного столбца, оно допускает только определенные значения для этого столбца. Если вы определяете ограничение CHECK для таблицы, оно может ограничить значения в определенных столбцах на основе значений в других столбцах в строке.
Пример с командой CREATE TABLE: ссылка.
#совет #код
