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

MySQL является открытым программным обеспечением, созданным для управления реляционными базами данных и основанном на языке запросов структуры (SQL). Стандартные команды SQL, такие как ADD, DROP, INSERT и UPDATE, могут использоваться в MySQL.

Составляющие

База данных

База данных – это просто набор структурированных данных. Представьте, как вы делаете селфи: вы нажимаете кнопку и фотографируете себя. Ваша фотография – это данные, а галерея вашего телефона – это база данных. База данных – это место, в котором хранятся и структурируются данные. Слово «реляционный» означает, что данные, хранящиеся в наборе данных, организованы в виде таблиц. Каждая таблица связана в некотором роде. Если программное обеспечение не поддерживает реляционную модель данных, просто назовите ее СУБД (Система управления базами данных).

Открытый исходный код

Наличие открытого исходного кода означает, что вы можете свободно использовать и изменять его. Любой пользователь сможет без каких-либо затрат установить такое программное обеспечение. Вы также можете изучить и модифицировать исходный код, чтобы он мог лучше соответствовать вашим потребностям. Однако GPL (GPU Public License) также определяет, что конкретно вы можете сделать в зависимости от дополнительных условий. Впрочем, доступна и коммерчески лицензированная версия на случай, если вам нужно более гибкие условия владения и расширенная поддержка.

Модель клиент-сервер

Компьютеры, которые устанавливают и запускают программное обеспечение СУБД, называются клиентами. Когда им нужно получить доступ к данным, они подключаются к серверу РСУБД. Это и называется моделью «клиент-сервер».

MySQL является одним из многих вариантов программного обеспечения СУБД. Считается, что RDBMS и MySQL одинаковы из-за популярности MySQL. Вспомните несколько крупных веб-приложений, таких как Facebook, Twitter, YouTube, Google и Yahoo! – все они используют MySQL для хранения данных. Хотя изначально он был создан для ограниченного использования, теперь это программное обеспечение совместимо со многими важными компьютерными платформами, такими как Linux, macOS, Microsoft Windows и Ubuntu.

SQL

MySQL и SQL – это две разные вещи. Следует помнить, что MySQL является одной из самых популярных торговых марок программного обеспечения СУБД, которая реализует модель клиент-сервер. Итак, как клиент и сервер взаимодействуют в среде СУБД? Они используют специфичный для домена язык – язык структурированных запросов (SQL). Если вы когда-либо сталкивались с другими именами, в которых есть SQL, такими как PostgreSQL и сервер Microsoft SQL, они, скорее всего, являются брендами, которые также используют синтаксис SQL. Программное обеспечение СУБД часто пишется на других языках программирования, но всегда использует SQL в качестве основного языка для взаимодействия с базой данных. Сам MySQL написан на C и C++. Подумайте о странах Южной Америки, все они географически различны и имеют разную историю, но все их жители в основном говорят по-испански.

Инженер-компьютерщик Эдгар Кодд разработал SQL в начале 1970-х годов на основе реляционной модели IBM. Он стал более широко использоваться в 1974 году и быстро заменил аналогичные, тогда устаревшие языки, ISAM и VISAM. SQL разрабатывался, чтобы сообщать серверу, что делать с данными. Это что-то вроде вашего пароля или кода WordPress. Вы вводите его в систему, чтобы получить доступ к области панели управления. В этом случае операторы SQL могут указать серверу выполнить определенные операции:

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

Как работает MySQL?

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

  1. MySQL создает базу данных для хранения и манипулирования данными, определяя отношения каждой таблицы.
  2. Клиенты могут делать запросы, вводя определенные SQL-операторы на MySQL.
  3. Серверное приложение ответит запрошенной информацией и появится на стороне клиента.

Вот и все. Со стороны клиентов обычно подчеркивается, какой MySQL GUI использовать. Чем легче и удобнее графический пользовательский интерфейс, тем быстрее и проще будут выполняться операции по управлению данными. Некоторыми из самых популярных графических интерфейсов MySQL являются MySQL WorkBench, SequelPro, DBVisualizer и Navicat DB Admin Tool. Некоторые из них бесплатны, а некоторые коммерческие, некоторые работают исключительно для macOS, а некоторые совместимы с основными операционными системами. Клиенты должны выбирать графический интерфейс в зависимости от своих потребностей. Для управления веб-базами данных, включая сайт WordPress, наиболее очевидным шагом является phpMyAdmin.

Почему MySQL так популярен?

MySQL действительно не единственная (Реляционная) СУБД на рынке, но является одной из самых популярных и занимает второе место после Oracle Database. Это обуславливается тем, что она может использовать такие важные параметры, как количество упоминаний в результатах поиска, профессиональные профили в LinkedIn и частота технических дискуссий на интернет-форумах. Тот факт, что многие крупные технологические гиганты полагаются на MySQL, еще больше укрепляет его заслуженную позицию. Почему так? Вот некоторые причины:

Гибкость и простота в использовании

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

Высокая производительность

Широкий спектр кластерных серверов поддерживает MySQL. Независимо от того, храните ли вы огромные объемы данных электронной коммерции или выполняете тяжелые бизнес-аналитические операции, MySQL может помочь вам с этим с оптимальной скоростью.

Промышленный стандарт

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

Безопасность

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

Типы данных MySQL

  1. Числовой – эти типы данных включают целые числа различных размеров, числа с плавающей точкой (действительные) различной точности и отформатированные числа.
  2. Текстовая строка – эти типы данных имеют фиксированное или различное количество символов. Этот тип данных также имеет строку переменной длины, которая называется CHARACTER LARGE OBJECT (CLOB), которая используется для указания столбцов с большими текстовыми значениями.
  3. Битовая строка – эти типы данных имеют либо фиксированную длину, либо переменную длину битов. Существует также тип данных битовой строки переменной длины, называемый BINARY LARGE OBJECT (BLOB), который доступен для указания столбцов с большими двоичными значениями, таких как изображения.
  4. Булевские значения (Boolean) – этот тип данных имеет значения TRUE или FALSE. Поскольку SQL имеет значения NULL, используется трехзначная логика, которая UNKNOWN.
  5. Дата и время – тип данных DATE имеет: год, месяц и день в формате ГГГГ-ММ-ДД. Аналогично, тип данных TIME имеет компоненты час, минута и секунда в формате HH: MM: SS. Эти форматы могут меняться в зависимости от конкретных требований.
  6. Timestamp & Interval – тип данных TIMESTAMP включает минимум шесть позиций для десятичных долей секунд и необязательный квалификатор WITH TIME ZONE в дополнение к полям DATE и TIME. Тип данных INTERVAL указывает относительное значение, которое можно использовать для увеличения или уменьшения абсолютного значения даты, времени или отметки времени.

Лучшие GUI для MySQL

Workbench

Этот визуальный интерфейс проектирования баз данных, разработанный Sun Systems/Oracle, объединяет разработку, администрирование, проектирование, создание и обслуживание SQL. Все перечисленные функции доступны в графической среде. Workbench является производной от DBDesigner 4, первоначально опубликованной fabFORCE.net в качестве пакета инструментов GUI.

Распространение: Лицензия GPL

Поддерживаемые платформы: Microsoft Windows, Mac OS X и Linux

Sequel Pro

Sequel Pro, созданный The Sequel Project, является бесплатным приложением с открытым исходным кодом, которое пришло на смену CocoaMySQL. Поскольку это проект на основе Какао, Sequel Pro доступен только для OS X. Sequel Pro позволяет вам управлять базами данных MySQL либо локально, либо через удаленное соединение. В нем можно добавлять или удалять базы данных, а также осуществлять управление таблицами, полями и индексами. Вы можете добавлять, редактировать и удалять строки, выполнять пользовательские запросы и выгружать все из таблиц во все базы данных.

Распространение: GNU GPL 2.0

Поддерживаемые платформы: Mac OS X 10.6 Snow Leopard или новее

HeidiSQL

HeidiSQL является клиентом с открытым исходным кодом для MySQL. После аутентификации в базе данных MySQL через локальное или удаленное соединение пользователи могут управлять своей базой данных во время сеанса. Хотя набор его функций не такой большой, как у других клиентов, его достаточно для выполнения наиболее распространенных задач и некоторых сложных операций с базами данных, таблицами и записями. Он все еще находится в разработке, а потому его функционал продолжает расширяться. Java-версия существовала для совместимости с любой системой, но этот проект был заброшен еще в 2010 году. Поэтому пользователям Linux лучше всего использовать Wine для запуска версии Windows.

Распространение: GNU General Public License

Поддерживаемые платформы: Windows XP, Vista, 7, 8, 10 (может работать на любом Linux с Wine)

15 ответов
Каковы технические причины того, почему нельзя использовать функции mysql_*? (например, mysql_query(), mysql_connect() или mysql_real_escape_string())? Почему я должен использовать что-то еще, даже если они работают на моем сайте? Если они не работают на моем сайте, почему я получаю такие ошибки, ка...
database
12 окт. 2012, в 12:33
32 ответа
Что это? Это ряд ответов о предупреждениях, ошибках и уведомлениях, с которыми вы можете столкнуться при программировании PHP, и не знаете, как их исправить. Это также Вики Сообщества, поэтому каждый приглашен принять участие в добавлении и поддержании этого списка. Почему это? Такие вопросы, ка...
debugging
warnings
07 окт. 2012, в 16:50
12 ответов
Я пытаюсь узнать лучший способ писать запросы. Я также понимаю важность того, чтобы быть последовательным. До сих пор я случайно использовал одинарные кавычки, двойные кавычки и обратные тики без какой-либо реальной мысли. Пример: $query = 'INSERT INTO table (id, col1, col2) VALUES (NULL, val1, va...
quotes
04 июль 2012, в 02: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
33 ответа
Я пытаюсь выбрать данные из таблицы MySQL, но я получаю одно из следующих сообщений об ошибке: mysql_fetch_array() ожидает, что параметр 1 будет ресурсом, boolean или mysqli_fetch_array() ожидает, что параметр 1 будет mysqli_result, boolean given или Вызов функции-члена fetch_array() для ло...
04 июнь 2010, в 10:37
9 ответов
Я действительно не нашел нормального примера PHP файла, в котором используются транзакции MySQL. Можете ли вы показать мне простой пример этого? И еще один вопрос. Я уже много программировал и не использовал транзакции. Могу ли я поместить функцию PHP или что-то в header.php, что если один mysql_que...
transactions
25 апр. 2010, в 14:09
11 ответов
Я начал с googling и нашел эту статью , которая рассказывает о таблицах мьютекса. У меня есть таблица с ~ 14 миллионами записей. Если я хочу добавить больше данных в том же формате, есть ли способ гарантировать, что запись, которую я хочу вставить, уже не существует без использования пары запросов (...
performance
primary-key
01 сен. 2009, в 08:58
20 ответов
Учитывая массив идентификаторов $galleries = array(1,2,5), я хочу иметь SQL-запрос, который использует значения массива в своем предложении WHERE, например: SELECT * FROM galleries WHERE id = /* values of array $galleries... eg. (1 || 2 || 5) */ Как я могу сгенерировать эту строку запроса для испол...
arrays
25 май 2009, в 19:37
2 ответа
Как можно выполнить следующее в Magento? Отобразите сообщение "Hello World", используя подход контроллера/представления/модели. Итак, если бы я пошел в http://example.com/myController, он отобразил бы строку "Hello World". Возможность показать эту строку в шаблоне моего веб-сайта (например, заголов...
magento
controller
23 фев. 2009, в 08:27
21 ответ
Как использовать функцию json_encode() с результатами запросов MySQL? Нужно ли выполнять итерацию по строкам или я могу просто применить его ко всему объекту результатов?
20 дек. 2008, в 20:05
12 ответов
Мне интересно, есть ли "лучший" выбор для сортировки в MySQL для общего веб-сайта, на котором вы не уверены на 100% того, что будет введено? Я понимаю, что все кодировки должны быть такими же, как MySQL, Apache, HTML и все внутри PHP. В прошлом я установил PHP для вывода в "UTF-8", но какая сортиров...
encoding
collation
15 дек. 2008, в 06:26
16 ответов
Я настраиваю новый сервер и хочу полностью поддерживать UTF-8 в моем веб-приложении. Я пытался сделать это в прошлом на существующих серверах, и мне всегда приходилось прибегать к ISO-8859-1. Где именно мне нужно установить кодировку/кодировки? Я знаю, что мне нужно настроить Apache, MySQL и PHP д...
10 нояб. 2008, в 19:45
17 ответов
У меня есть столбец datetime в MySQL. Как преобразовать его в дисплей как mm/dd/yy H: M (AM/PM) с помощью PHP?
datetime
25 сен. 2008, в 23:32
28 ответов
Если пользовательский ввод вставлен без изменения в SQL-запрос, приложение становится уязвимым для SQL-инъекции, как в следующем примере: $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')"); Это потому, что пользователь может ввести ч...
security
sql-injection
13 сен. 2008, в 00:47
13 ответов
В нашем месте мы разделились между использованием mysqli и PDO для таких вещей, как подготовленные заявления и поддержка транзакций. Некоторые проекты используют один, другой - другой. Существует мало реалистичной вероятности того, что мы когда-либо переходим к другой РСУБД. Я предпочитаю PDO по той...
mysqli
pdo
17 авг. 2008, в 10:42
Наверх
Меню