SQL — Урок 1. Создание базы данных и таблиц
Итак, вы установили MySQL, и мы начинаем осваивать язык SQL. В уроке 3 по основам баз данных, мы создали концептуальную модель маленькой БД для форума. Пришло время реализовать ее в СУБД MySQL.
Для этого прежде всего надо запустить сервер MySQL. Идем в системное меню Пуск — Программы — MySQL — MySQL Server 5.1 — MySQL Command Line Client. Откроется окно, предлагающее ввести пароль.
Нажимаем Enter на клавиатуре, если вы не указывали пароль при настройке сервера или указываем пароль, если вы его задавали. Ждем приглашения mysql>.
Нам надо создать базу данных, которую мы назовем forum. Для этого в SQL существует оператор create database. Создание базы данных имеет следующий синтаксис:
create database имя_базы_данных;
Максимальная длина имени БД составляет 64 знака и может включать буквы, цифры, символ «_» и символ «$». Имя может начинаться с цифры, но не должно полностью состоять из цифр. Любой запрос к БД заканчивается точкой с запятой (этот символ называется разделителем — delimiter). Получив запрос, сервер выполняет его и в случае успеха выдает сообщение «Query OK . «
Итак, создадим БД forum:
Нажимаем Enter и видим ответ «Query OK . «, означающий, что БД была создана:
Вот так все просто. Теперь в этой базе данных нам надо создать 3 таблицы: темы, пользователи и сообщения. Но перед тем, как это делать, нам надо указать серверу в какую именно БД мы создаем таблицы, т.е. надо выбрать БД для работы. Для этого используется оператор use. Синтаксис выбора БД для работы следующий:
use имя_базы_данных;
Итак, выберем для работы нашу БД forum:
Нажимаем Enter и видим ответ «Database changed» — база данных выбрана.
Выбирать БД необходимо в каждом сеансе работы с MySQL.
Для создания таблиц в SQL существует оператор create table. Создание базы данных имеет следующий синтаксис:
create table имя_таблицы (имя_первого_столбца тип, имя_второго_столбца тип, . имя_последнего_столбца тип );
Требования к именам таблиц и столбцов такие же, как и для имен БД. К каждому столбцу привязан определенный тип данных, который ограничивает характер информации, которую можно хранить в столбце (например, предотвращает ввод букв в числовое поле). MySQL поддерживает несколько типов данных: числовые, строковые, календарные и специальный тип NULL, обозначающий отсутствие информации. Подробно о типах данных мы будем говорить в следующем уроке, а пока вернемся к нашим таблицам. В них у нас всего два типа данных — целочисленные значения (int) и строки (text). Итак, создадим первую таблицу — Темы:
Нажимаем Enter — таблица создана:
Итак, мы создали таблицу topics (темы) с тремя столбцами:
id_topic int — id темы (целочисленное значение),
topic_name text — имя темы (строка),
id_author int — id автора (целочисленное значение).
Аналогичным образом создадим оставшиеся две таблицы — users (пользователи) и posts (сообщения):
Итак, мы создали БД forum и в ней три таблицы. Сейчас мы об этом помним, но если наша БД будет очень большой, то удержать в голове названия всех таблиц и столбцов просто невозможно. Поэтому надо иметь возможность посмотреть, какие БД у нас существуют, какие таблицы в них присутствуют, и какие столбцы эти таблицы содержат. Для этого в SQL существует несколько операторов:
show databases — показать все имеющиеся БД,
show tables — показать список таблиц текущей БД (предварительно ее надо выбрать с помощью оператора use),
describe имя_таблицы — показать описание столбцов указанной таблицы.
Давайте попробуем. Смотрим все имеющиеся базы данных (у вас она пока одна — forum, у меня 30, и все они перечислены в столбик):
Теперь посмотрим список таблиц БД forum (для этого ее предварительно надо выбрать), не забываем после каждого запроса нажимать Enter:
В ответе видим названия наших трех таблиц. Теперь посмотрим описание столбцов, например, таблицы topics:
Первые два столбца нам знакомы — это имя и тип данных, значения остальных нам еще предстоит узнать. Но прежде мы все-таки узнаем какие типы данных бывают, какие и когда следует использовать.
А сегодня мы рассмотрим последний оператор — drop, он позволяет удалять таблицы и БД. Например, давайте удалим таблицу topics. Так как мы два шага назад выбирали БД forum для работы, то сейчас ее выбирать не надо, можно просто написать:
drop table имя_таблицы;
Теперь снова посмотрим список таблиц нашей БД:
Наша таблица действительно удалена. Теперь давайте удалим и саму БД forum (удаляйте, не жалейте, ее все равно придется переделывать). Для этого напишем:
drop database имя_базы данных;
И убедитесь в этом, сделав запрос на все имеющиеся БД:
У вас, наверно, нет ни одной БД, у меня их стало 29 вместо 30.
На сегодня все. Мы научились создавать базы данных и таблицы, удалять их и извлекать информацию об имеющихся базах данных, таблицах и их описаниях.
Онлайн-курс. Освойте востребованную профессию с зарплатой от 70 000 руб в месяц!
Теперь нажмите кнопку, что бы не забыть адрес и вернуться к нам снова.
admin@site-do.ru
site-do.ru © 2009-2019 Копировать материалы сайта запрещено!
За нарушение авторских прав предусмотрена уголовная ответственность!
Телефон редакции +7(499)346-89-56
127051, г.Москва, Цветной бульвар, д. 11, стр. 6, офис 405.
Как создать чистую базу данных
Независимо от того, какой вы разработчик, время от времени мы сталкиваемся с API, который возвращает данные таким образом, что нам не нужно тратить много времени на их понимание. Но получение такого чистого и последовательного результата требует времени, усилий и опыта. Поговорим говорить коротко и по существу.
Терминология
Таблица: это набор данных
Первичный ключ: Это уникальный идентификатор таблицы
Атрибут: означает свойство ваших данных. Например, name . user
Тип данных: Типы данных представляют различные типы ваших данных. Например-string, int, timestamp и т. Д.
1. Слова должны быть разделены подчеркиванием
Если ваше имя атрибута содержит более 1 слова, отделите его snake_case . Не используйте camelCase или любой другой случай для согласованности.
wordcount или WordCount
word_count
Причина
- Улучшает читабельность
- Имена могут стать более независимыми от платформы
2. Типы данных не должны быть именами
Никогда не используйте типы данных в качестве имени столбца. Это происходит в основном для параметров метки времени. Дайте ему осмысленное имя.
Плохо
timestamp or text
Хорошо
created_at or description
Причина
- Использование типов данных может создать путаницу в конце приложения.
- Предоставление собственного имени дает больше контекста для использования параметра.
3. Имена атрибутов должны быть строчными
Не используйте имена в верхнем регистре для своих атрибутов.
Плохо
Description
Хорошо
description
Причина
- Позволяет избежать путаницы с ключевыми словами SQL в верхнем регистре
- Это может улучшить скорость набора текста
4. Напишите полные слова
Не пытайтесь сократить имена столбцов ради пространства или любой другой логики. Старайтесь быть как можно более понятными.
Плохо
mid_name
Хорошо
middle_name
Причина
Это правило способствует самодокументированному дизайну
5. Но используйте общие сокращения
Исключение из правила-4-это когда у вас есть широко распространенная аббревиатура. В таких ситуациях выбирайте короткий.
Хорошо
i18n
Но если вы окажетесь в замешательстве, перейдите к полному имени. Это инвестиции, которые вы делаете на будущее.
6. Избегайте наличия чисел в имени столбца
Верьте или нет, я видел это достаточно. Никогда не используйте числа в имени столбца.
Плохо
address1 , address2
Хорошо
primary_address, secondary_address
Причина
Это признак очень плохой нормализации. Старайтесь избегать этого.
7. Используйте короткие имена таблиц
Будьте очень осторожны при именовании таблиц, потому что длинные имена таблиц могут оказать плохое влияние в будущем.
Плохо
site_detail
Хорошо
site
Причина
Короткие имена таблиц помогут вам при создании реляционных столбцов и связывающих таблиц.
8. Ищите зарезервированные слова
В каждой базе данных есть несколько зарезервированных слов. Определите их и избегайте.
Плохо
user lock table etc
Список зарезервированных слов для некоторых популярных баз данных
9. Сингулярные имена для таблиц
Всегда старайтесь использовать имена для таблиц в единственном числе. Это спорный вопрос, и у разных людей разные мнения. Но придерживайтесь одного.
Плохо
users and orders
Хорошо
user and order
Причина
- Это способствует согласованности с первичными ключами и таблицами подстановки
- Плюрализация иногда может быть сложной. Таким образом, наличие особых имен таблиц может упростить программирование.
10. Таблицы ссылок должны иметь алфавитный порядок
При создании таблицы соединений объедините имена двух таблиц в алфавитном порядке.
Плохо
book_author
Хорошо
author_book
11. Имена столбцов в единственном числе
Обычно это лучший способ, если вы не нарушаете правила нормализации данных.
Плохо
books
Хорошо
book
12. Имя первичного ключа
Если это один столбец, то он должен быть назван как id
CREATE TABLE order ( id bigint PRIMARY KEY, order_date date NOT NULL );
13. Имя внешнего ключа
Это должно быть имя другой таблицы и упомянутого поля. Например, если вы ссылаетесь на person внутри вашего team_member таблица, то вы можете сделать это так.
CREATE TABLE team_member ( person_id bigint NOT NULL REFERENCES person(id), );
14. Не указывайте в конце имен столбцов типы хранимых в них данных
Нет смысла суффиксировать имена столбцов типами данных. Избегайте этого.
Плохо
name_tx
Хорошо
name
15. Индексы должны иметь как имя таблицы, так и столбца
Если вы создаете индекс, за именем таблицы следуют имена столбцов, на которые вы ссылаетесь
CREATE TABLE person ( id bigserial PRIMARY KEY, first_name text NOT NULL, last_name text NOT NULL, ); CREATE INDEX person_ix_first_name_last_name ON person (first_name, last_name);
16. Имена столбцов типа даты
Суффикс ваших имен столбцов типа даты с _on или _date .
Например, если у вас есть столбец для хранения обновленной даты, делайте так,
Хорошо
updated_on или updated_date
17. Имена столбцов типа даты и времени
Если у вашего имени столбца есть время, то суффикс их с _at или _time .
Например, если вы хотите сохранить время заказа, то
Плохо
ordered
Хорошо
ordered_at or order_time
18. Имена столбцов логического типа
Если у вас есть имена столбцов логического типа, то префикс их is_ или has_ .
Хорошо
is_admin или has_membership
Заключение
Если вы уже работаете над проектом, придерживайтесь соглашения, которому уже следует проект. Потому что
Единственное, что хуже плохого соглашения, — это несколько соглашений
Разрабатывая базу данных с нуля, имея в виду эти правила, вы заложите крепкий фундамент на будущее.
Каковы ваши мысли? Есть ли правило, с которым вы не согласны? Я более чем рад продуктивному разговору в комментариях!
- api
- базы данных
- нормализация данных
Как фронтендеру за 20 секунд создать базу данных для своего приложения
Фронтенд-разработчики часто сталкиваются с необходимостью добавить на сайт какие-то данные: фрагменты текста, фотографии, списки или профили пользователей. Но возникает ситуация – надо продумать интерфейс, но пока нет навыков в создании баз данных и добавлении в них информации. Ведь БД сложные, даже бесплатную MongoDB или MySQL установить и заставить работать – нехилый квест. Но есть парочка удобных решений, позволяющих оперативно добыть базу с нужной информацией или даже создать свою.
JSON Placeholder
Существует веб-ресурс JSON Placeholder, имитирующий полноценную базу данных на базе JSON-файлов. К ней можно получить доступ простым запросом к БД через fetch. В JavaScript это делается следующим образом:
export const accessData = async(< fetch >) => < const resDB = await fetch("https://jsonplaceholder.typicode.com/posts"); const DB = await resDB.json(); return < props: < DB >> >
Вместо ссылки на конкретные данные можно выбрать любую из доступных на сайте. Например, ссылку на фотографии вместо постов (они найдутся, если пролистать страницу чуть ниже).
В нашем случае в переменной dataRes будет доступен массив из данных в формате JSON, а именно постов, которые можно обрабатывать стандартными JavaScript-скриптами. Можно будет обращаться к объекту, используя привычный синтаксис, и вставлять данные на свой сайт.
Например, если в запрошенном объекте есть ключ с названием name, то можно обратиться к нему в коде через команду в духе:
dataRes.name
И эту переменную можно вставлять в любой участок кода. Он будет отображаться в структуре вашего сайта без необходимости использовать полноценную базу данных и делать дополнительный GET-запрос. Это очень удобно для проверки гипотез и создания MVP.
И что важно, JSON-сервер полностью поддерживает REST API, то есть можно взаимодействовать с ним, как с реальной БД, используя команды GET, SET и т.п.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Локальный JSON-сервер для хранения БД
Ок, у нас есть куча разных массивов с рандомными данными, но все они – болванка, и не более того. Шаблоны с четко определенными свойствами и правилами. Мы ведь тестируем именно свой код, и зачастую нам нужен уникальный контент, особенно когда нужно протестировать поиск конкретной информации, которую нельзя найти в плейсхолдерах.
Благо, что JSON Placeholder построен на приложении json-server и базе данных lowDB. Обе технологии доступны бесплатно для некоммерческого использования, поэтому можно быстро собрать свой JSON-сервер. Это будет практически полноценная база данных. Не супербыстрая и суперэффективная, но для создания MVP и тестирования идей работает на ура. Чтобы начать использовать собственную БД на основе JSON-файлов надо:
- Установить json-server через npm (менеджер пакетов для Node.js):
npm install -g json-server
- Потом создать свою базу данных в формате json (можно назвать файл как вздумается).
- Внутри надо добавить глобальный объект, а внутрь ключи с массивами данных. Например:
< "posts": [ < "id": 1, "title": "json-server", "author": "typicode" >], "comments": [ < "id": 1, "body": "some comment", "postId": 1 >], "profile": < "name": "typicode" >>
А потом можно запустить собственный локальный сервер. Открываем директорию, где лежит JSON-файл, в командной строке, а потом вводим в нее:
json-server --warch *название файла с базой данных*.json
После этого по адресу http://localhost:3000 будет доступна полноценная БД на базе JSON, которую можно будет запросить через fetch.
Создаем JSON-сервер на бесплатном хостинге
Ок, у нас теперь есть своя база данных, но она находится в локальной среде. То есть опубликованный в сети сайт не сможет получить к ней доступ. Поэтому нам нужен какой-то хостинг, чтобы наш MVP можно было смело показать заказчику, а он не столкнулся с кучей undefined вместо реальных файлов и текстов на странице.
Нашелся добрый человек с ником jesperorb, который превратил JSON-server из локального хранилища данных в проект для публикации на Heroku – бесплатном хостинге для веб-приложений.
Если у вас уже есть база данных в json-файле, то для публикации ее в сети нужно проделать следующее:
- Заходим в GitHub-репозиторий jesperorb.
- Нажимаем на кнопку Code в правом верхнем углу.
- Указываем имя для нового репозитория и нажимаем на Create Repository From Template.
После этого в вашем профиле на GitHub появится новый репозиторий с компонентами, необходимыми для запуска JSON-сервера на стороннем хосте.
Теперь надо экспортировать наш сервер в онлайн-пространство.
Будем экспортировать в Heroku, потому что это полностью бесплатный хостинг для приложений. Но у него есть один серьезный недостаток – приложение может быть активно не более 18 часов в сутки. Также оно будет отключаться спустя 30 минут неиспользования. Поэтому ваш сайт будет загружаться немного медленнее, чем мог бы, используя вы платный хост.
- Создаем аккаунт на сайте Heroku.
- Устанавливаем на компьютер клиент для работы с сервисом через командную строку.
- Открываем командную строку и вводим туда команду:
heroku login
- Утилита откроет браузер, чтобы вы могли войти в сервис под своим аккаунтом.
- Создаем новый Heroku-проект при помощи команды:
heroku create *название проекта*
- По сути, это репозиторий в GitHub с вашей базой данных, который можно пушить в Heroku при появлении изменений в самой БД.
- Вводим команду, находясь в директории с нашим JSON-сервером:
git push heroku master
- И в конце вводим следующую команду, чтобы открыть свое приложение и убедиться в его работоспособности:
heroku open
Теперь у нас есть база в сети, защищенная по протоколу HTTPS, а также возможность удаленно подключаться к ней с других сайтов и приложений. Подключиться к ней можно через тот же fetch-запрос:
export const accessData = async(< fetch >) => < const resDB = await fetch("https://demo-db-server-master.herokuapp.com/data"); const DB = await resDB.json(); return < props: < DB >> >
Готово. Пользуйтесь новой бесплатной БД с полноформатной поддержкой REST API. А в следующий раз я расскажу, как бесплатно и за минуту разместить в сети собственное приложение или сайт.
Как создать базу данных MySQL
В этой статье мы покажем, как создать базу данных MySQL, добавить в неё таблицу и заполнить данными при помощи командной строки. Для примера будем делать список товаров для книжного магазина.
Что внутри
- Подключиться к серверу и зайти в MySQL
- Создать базу данных
- Создать таблицу
- Создать запись в таблице
- Отредактировать запись
- Удалить строку, таблицу и базу данных
- Выйти из MySQL
Подключиться к серверу и зайти в MySQL
Сначала подключитесь к серверу по SSH. Обычно хостинг-провайдеры присылают логин и пароль для подключения в письме об активации хостинга. У нас это письмо называется по-разному в зависимости от типа хостинга: «Ваш виртуальный хостинг готов к использованию», «Это ваш VPS готов?» или «Выделенный сервер заказывали?».
После подключения к серверу авторизуйтесь как пользователь MySQL:
mysql -u имя_пользователя -p
Если подключаетесь к MySQL впервые, в системе будет только один пользователь — root. Пароль от root лежит в конфигурационном файле .my.cnf. Вы можете открыть его с помощью команды cat:
cat .my.cnf
В файле будет стандартный пароль. Он может оказаться нерабочим, если его поменяли вручную и забыли обновить в файле. В этом случае попробуйте сбросить пароль.
Создать базу данных
Все команды в MySQL должны заканчиваться точкой с запятой. Этот знак означает окончание запроса. Без него MySQL-сервер не поймёт, что перед ним команда, поэтому после нажатия клавиши Enter ничего не произойдёт.
Если забыли закончить команду по правилам, вводить её заново не обязательно. Просто поставьте точку с запятой в следующей строке и снова нажмите Enter.
Перед тем как создать новую базу данных, проверьте список всех бд на MySQL-сервере при помощи команды SHOW DATABASES:
SHOW DATABASES;
Результат будет выглядеть примерно так:
Чтобы создать базу данных MySQL, используйте команду CREATE DATABASE:
CREATE DATABASE название_базы_данных ;
Для нашего примера с книжным магазином подойдёт название bookstore:
CREATE DATABASE bookstore;
Просто создать базу данных недостаточно. Чтобы с ней работать, нужно также выбрать её отдельной командой. Это придётся делать каждый раз после подключения к MySQL.
USE bookstore;
Создать таблицу
Информация внутри базы данных MySQL хранится в таблицах. Их нужно создавать отдельно с помощью команды CREATE TABLE. Вы вводите одной командой всю структуру таблицы:
CREATE TABLE название_таблицы (
название_столбца ПАРАМЕТР ,
название_столбца ПАРАМЕТР ,
название_столбца ПАРАМЕТР
);
Параметр — это правило для информации внутри столбца. С его помощью можно сделать поле обязательным для заполнения, разрешить использовать в столбце только цифры или наоборот — только буквы.
Вот небольшой список часто используемых параметров:
- AUTO_INCREMENT — автоматически нумеровать каждую новую запись. Можно сделать отдельный столбец с нумерацией строк в таблице;
- CHAR — можно использовать только символы;
- INT — можно использовать только целые числа;
- NOT NULL — поле не должно быть пустым;
- PRIMARY KEY — в каждой строке должны быть только уникальные значения.
Обычно параметры перечисляют один за другим прямо в строке со столбцом, как в примере выше. Но есть одно исключение — параметр PRIMARY KEY. Когда он присутствует в команде больше одного раза, MySQL-сервер показывает ошибку.
Поэтому, если в таблице уникальные значения должны быть в нескольких столбцах, запишите PRIMARY KEY отдельной строкой и добавьте названия столбцов в скобках:
PRIMARY KEY ( название_столбца , название_столбца , название_столбца )
Теперь давайте создадим первую таблицу с названием books и четырьмя столбцами: номер записи, название книги, автор и цена. Команда для создания такой таблицы будет выглядеть так:
CREATE TABLE books( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, title CHAR(100) NOT NULL, author CHAR(40) NOT NULL, price INT NOT NULL );
Создать запись в таблице
Таблицу создали, остаётся наполнить её информацией. Это делают при помощи команды INSERT. Вы вводите одной командой значения сразу для всей строки:
INSERT INTO название_таблицы ( название_столбца1 , название_столбца2 , название_столбца3 ) VALUES (“ значение1 “, “ значение2 “, “ значение3 “);
Заметьте, что значения, которые вы хотите поместить в столбцы, нужно брать в кавычки , а названия таблиц и столбцов — нет.
Столбец id не указываем, потому что в нём будут только цифры, которые MySQL добавит автоматически, благодаря параметру AUTO_INCREMENT.
Подставим значения для первой строки:
INSERT INTO books (title,author,price) VALUES("Green Mile","Stephen King","17");
Потом добавим ещё одну строку:
INSERT INTO books (title,author,price) VALUES("The Casal Vacancy", "J.K.Rowling", "23");
И посмотрим, как теперь выглядит таблица:
SELECT * FROM books;
Результат должен быть таким:
Отредактировать запись
Если вы случайно ввели значение с опечаткой, используйте команду UPDATE, чтобы отредактировать конкретное поле:
UPDATE название_таблицы SET название_столбца = “ новое_значение ” WHERE название_столбца = “ значение “;
После SET укажите название столбца, в котором хотите изменить значение. А после WHERE — название какого-то другого столбца из этой же строки. Это нужно, чтобы помочь MySQL-серверу понять, куда именно вписывать новое значение.
Подставим реальные значения, чтобы исправить опечатку в слове Casal в названии второй книги:
UPDATE books SET title = "The Casual Vacancy" WHERE ;
А после снова просмотрим таблицу и убедимся, что опечатки больше нет:
Удалить строку, таблицу и базу данных
Удаление в MySQL не требует дополнительного подтверждения. Всё удаляется с первого раза и отменить это нельзя, поэтому используйте команды аккуратно.
Если какая-то строка в таблице больше не нужна, удалите её с помощью команды DELETE FROM:
DELETE FROM название_таблицы WHERE название_столбца = “ значение_столбца “;
Допустим, книги “The Casual Vacancy” на самом деле нет в продаже. Удалим строку с ней.
DELETE FROM books WHERE ;
Если хотите очистить все строки сразу, но сохранить структуру таблицы, используйте команду TRUNCATE:
TRUNCATE TABLE название_таблицы ;
Чтобы полностью удалить таблицу, используйте команду DROP:
DROP TABLE название_таблицы ;
Похожая команда удалит базу данных MySQL:
DROP DATABASE название_базы_данных ;
Выйти из MySQL
В конце работы отключитесь от MySQL-сервера: