sql — вопросы с ответами

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

Основы

Данные являются основной частью многих мобильных и веб-приложений. Например, такая платформа, как Facebook, содержит информацию о профиле пользователя, включая данные о его друзьях и сообщениях. Для хранения этих данных и создается система базы данных. SQL – это язык программирования, который позволяет программистам работать с этими данными.

Хотя приложение может быть запрограммировано на языке вроде Python, PHP или Ruby, базы данных не настроены на их понимание. Исторически базы данных понимают только SQL (хотя в последние годы такое положение дел начало меняться). Из-за этого изучение SQL является фактически необходимостью, если вы собираетесь работать в веб-разработке или разработке приложений.

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

Есть несколько часто используемых команд SQL, с которыми вы должны быть знакомы для работы с базой данных. При работе с базами данных программист может писать такие команды, как:

  • CREATE DATABASE – создать базу данных;
  • CREATE TABLE – создать таблицу;
  • SELECT – найти/извлечь определенные данные из базы данных;
  • UPDATE – внести коррективы и редактировать данные;
  • DELETE – удалить определенные данные.

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

Вот несколько коротких примеров:

CREATE DATABASE name_of_a_database – creates a database;

CREATE TABLE name_of_a_table (

column1 data_type,

column2 data_type,

columnX data_type );

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

  • Пользователи – эта база данных будет хранить всю информацию о профилях пользователей;
  • Интересы – эта база данных будет содержать все различные интересы, которые могут быть использованы для отслеживания увлечений пользователей;
  • Географические местоположения – эта база данных будет содержать все города мира, в которых живут пользователи Facebook.

Второй запрос отвечает за создание новой таблицы внутри конкретной базы данных.

В каких сферах деятельности используется SQL

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

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

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

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

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

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

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

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

  1. Количество упоминаний системы на веб-сайтах, измеренное как количество результатов в поисковых запросах.
  2. Общий интерес к системе или частота поисков в Google Trends.
  3. Частота технических дискуссий о системе.
  4. Количество предложений работы, в которых упоминается система.
  5. Количество профилей в профессиональных сетях, в которых упоминается система.
  6. Актуальность в социальных сетях.

Oracle Database

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

MySQL

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

Microsoft SQL Server

SQL Server – это специальная система управления базами данных SQL от Microsoft. Эта база данных работает во всех основных версиях операционных систем Windows. Она используется в потребительском программном обеспечении, а также на веб-серверах под управлением Windows. У него большая база пользователей.

PostgreSQL

PostgreSQL, основной конкурент MySQL, является еще одной бесплатной системой баз данных с открытым исходным кодом. Он широко используется технологическими стартапами из-за модели бесплатной модели распространения. PostgreSQL поддерживает все основные операционные системы: MacOS, Windows и Linux. В PostgreSQL делается больший акцент на следование стандартному синтаксису SQL, по сравнению с другими базами данных. Другие базы данных (например, SQL Server) значительно модифицируют стандарт SQL, усложняя их изучение.

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

Таблицы SQL

База данных может состоять из множества таблиц, а таблица в базе данных состоит из пересекающихся столбцов и строк, образующих сетку. Понять можно представив шахматную доску. В верхней строке шахматной доски расположены метки для данных, которые вы хотите сохранить, например, Имя, Возраст, Пол, Цвет глаз и т. Д. Во всех строках ниже хранится информация. Каждая строка представляет собой одну запись (в данном случае все данные в одной строке принадлежат одному и тому же лицу), и каждый столбец содержит данные определенного типа, как указано их меткой.

Понимание реляционных баз данных SQL

Так что же такое «реляционная» база данных и как она использует эти таблицы? Итак, реляционная база данных позволяет нам «связывать» данные из одной таблицы в другую. Скажем, например, мы делали базу данных для автосалона. Мы могли бы составить одну таблицу для всех деталей каждой продаваемой нами машины. Однако контактная информация для «Форда» будет одинаковой для всех автомобилей этого производителя, поэтому нам не нужно вводить эти данные более одного раза.

Что мы можем сделать, это создать вторую таблицу, называемую производителями. В этой таблице мы могли бы перечислить Ford, Volkswagen, Chrysler и т. п. Здесь мы могли бы указать адрес, номер телефона и другую контактную информацию для каждой из этих компаний. Затем вы можете динамически вызывать контактную информацию из нашей второй таблицы для каждого автомобиля в нашей первой таблице. Вам нужно будет ввести эту информацию только один раз, несмотря на то, что она доступна для каждого автомобиля в базе данных. Это экономит не только время, но и ценное пространство базы данных, поскольку повторение этих данных не требуется.

Типы данных SQL

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

  • INTEGER: хранит целые числа, как положительные, так и отрицательные. К примеру: 2, 45, -16 и 23989. Возрастная категория клиентов могла бы быть целым числом;
  • FLOAT: хранит числа, когда вам нужно использовать десятичные дроби. К примеру: 2.5, -.664, 43.8882 или 10.00001;
  • DATETIME: хранит дату и время в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС;
  • VARCHAR: хранит ограниченное количество текста или отдельных символов;
  • BLOB: хранит двоичные данные, отличные от текста, например, загружаемые файлы.
19 ответов
С учетом следующего кода: DB::table('users')->get(); Я хочу получить необработанную строку запроса SQL, которую построил построитель запросов выше, поэтому в этом примере это будет SELECT * FROM users. Как это сделать?
laravel-4
14 авг. 2013, в 16:14
40 ответов
У меня есть файл .sql с экспортом из phpMyAdmin. Я хочу импортировать его на другой сервер с помощью командной строки. У меня установлена Windows Server 2008 R2. Я поместил файл .sql на диск C и попробовал эту команду database_name < file.sql Это не работает, я получаю синтаксические ошибки. ...
import
command-line
16 июль 2013, в 00:25
12 ответов
Я пытаюсь узнать лучший способ писать запросы. Я также понимаю важность того, чтобы быть последовательным. До сих пор я случайно использовал одинарные кавычки, двойные кавычки и обратные тики без какой-либо реальной мысли. Пример: $query = 'INSERT INTO table (id, col1, col2) VALUES (NULL, val1, va...
quotes
04 июль 2012, в 02:42
20 ответов
Как я могу reset auto_increment поля? Я хочу, чтобы он снова начал отсчет с 1.
auto-increment
19 янв. 2012, в 06:55
30 ответов
У меня есть эта таблица для документов (упрощенная версия здесь): +------+-------+--------------------------------------+ | id | rev | content | +------+-------+--------------------------------------+ | 1 | 1 | ... | | 2 | 1...
aggregate-functions
greatest-n-per-group
12 окт. 2011, в 19:42
6 ответов
Есть ли возможность впрыска SQL даже при использовании функции mysql_real_escape_string()? Рассмотрим эту ситуацию с образцом. SQL построен в PHP следующим образом: $login = mysql_real_escape_string(GetFromPost('login')); $password = mysql_real_escape_string(GetFromPost('password')); $sql = "SELECT...
security
sql-injection
21 апр. 2011, в 08:51
3 ответа
Какая разница между INNER JOIN, LEFT JOIN, RIGHT JOIN и FULL JOIN в MySQL?
join
outer-join
inner-join
18 апр. 2011, в 18:32
10 ответов
Я хочу добавить строку в таблицу базы данных, но если строка существует с тем же уникальным ключом, я хочу обновить строку. Например, insert into table (id, name, age) values(1, "A", 19) Предположим, что уникальный ключ id, а в моей базе данных есть строка с id = 1. В этом случае я хочу обновить эт...
insert-update
17 нояб. 2010, в 14:37
7 ответов
Я пытался выяснить, как я могу сделать запрос с MySQL, который проверяет, содержит ли значение (строка $haystack) в определенном столбце определенные данные (строка $needle), например: mysql_query(" SELECT * FROM `table` WHERE `column`.contains('{$needle}') "); В PHP функция называется substr($hays...
string-comparison
08 апр. 2010, в 18:02
17 ответов
Есть ли способ захватить имя столбца таблицы в mysql? используя php
06 окт. 2009, в 17:11
11 ответов
Я начал с googling и нашел эту статью , которая рассказывает о таблицах мьютекса. У меня есть таблица с ~ 14 миллионами записей. Если я хочу добавить больше данных в том же формате, есть ли способ гарантировать, что запись, которую я хочу вставить, уже не существует без использования пары запросов (...
performance
primary-key
01 сен. 2009, в 08:58
10 ответов
Для простоты предположим, что все соответствующие поля NOT NULL. Ты можешь сделать: SELECT table1.this, table2.that, table2.somethingelse FROM table1, table2 WHERE table1.foreignkey = table2.primarykey AND (some other conditions) Или еще: SELECT table1.this, table2.that, tabl...
join
inner-join
19 июнь 2009, в 15:26
2 ответа
Как можно выполнить следующее в Magento? Отобразите сообщение "Hello World", используя подход контроллера/представления/модели. Итак, если бы я пошел в http://example.com/myController, он отобразил бы строку "Hello World". Возможность показать эту строку в шаблоне моего веб-сайта (например, заголов...
magento
controller
23 фев. 2009, в 08:27
9 ответов
Используя MySQL, я могу сделать что-то вроде: SELECT hobbies FROM peoples_hobbies WHERE person_id = 5; и получим: shopping fishing coding но вместо этого я просто хочу 1 строку, 1 col: shopping, fishing, coding Причина в том, что я выбираю несколько значений из нескольких таблиц, и после всех об...
group-concat
10 нояб. 2008, в 02:17
28 ответов
Если пользовательский ввод вставлен без изменения в SQL-запрос, приложение становится уязвимым для SQL-инъекции, как в следующем примере: $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')"); Это потому, что пользователь может ввести ч...
security
sql-injection
13 сен. 2008, в 00:47
Наверх
Меню