Какой рейтинг вас больше интересует?
|
Еще вопросы/ответы на собеседовании по MySQL (часть 2)2013-06-19 01:06:00 (читать в оригинале)Продолжаю размещать переводы с англоязычного сайта www.techinterviews.com, посвященного вопросам на собеседовании для программистов. Ответы приведены такие же как на исходном сайте. Что значит флаг –i-am-a-dummy при старте MySQL ? Он заставляет отвергать команды UPDATE и DELETE когда выражение WHERE в них не наличествует. Таким образом не дает стереть все строки таблицы в случае неопытных или рассеяных программистов. При исполнении команды DELETE я получил ошибку ограничения внешнего ключа. Что мне делать ? Это значит, что те данные, которые вы пытаетесь удалить все еще остаются "живыми" в другой таблице. Например, вы имеете две таблицы университеты и студенты. В таблице студенты есть ссылка на поле ID таблицы университеты. Которое значит внешний ключ - связь между студентом и университетом в который он ходит. Удаление из таблицы университеты может не удаться, если на удаляемую строку есть ссылки из таблицы студенты. Правильное действие в таком случае сначала стереть те строки, которые ссылаются на университеты из таблицы со студентами, а потом уже стирать университеты. Еще одним способом может считаться отключение проверки внешних ключей перед командой DELETE с последующим включением, когда удаление завершено. Это делается так: SET foreign_key_checks=0 Это может быть очень удобным и быстрым при массовом переносе данных из разных таблиц. Но в таких случаях нужно внимательно следить за целостностью данных (внешних ключей). Иначе это приведет к ошибкам во время работы с БД и/или потерям данных. Если ваши внешние ключи оформлены с выражением ON DELETE CASCADE, то данные в зависимых таблицах будут удалены автоматически. Когда бы вы использовали ORDER BY в выражении DELETE ? Тогда, когда вы не стираете по ID строки. Например в случае следующего запроса: DELETE FROM techinterviews_com_questions ORDER BY timestamp LIMIT 1 Это удалит самый последний вопрос из добавленных в таблицу techinterviews_com_questions. Как бы вы просмотрели все опреденные для заданной таблицы индексы ? SHOW INDEX FROM techinterviews_questions Как бы вы изменили тип колонки с VARCHAR(10) на VARCHAR(50) ? ALTER TABLE techinterviews_questions CHANGE techinterviews_content techinterviews_CONTENT VARCHAR(50) Как бы вы удалили колонку ? ALTER TABLE techinterviews_answers DROP answer_user_id Как бы вы изменили/перенесли таблицу на движок InnoDB ? ALTER TABLE techinterviews_questions ENGINE innodb Когда вы создали таблицу и потом запустили SHOW CREATE TABLE на ней. То вы увидите не дословно те же конструкции, которыми вы создавали ее. Что MySQL модифицировал автомтически в вашей, только что созданной таблице ? - VARCHAR-ы с длинной менее 4-х символов становятся CHAR-ами - CHAR-ы с длинной более 3 символов сьановятсяVARCHAR-ми - NOT NULL добавляется к колонкам объявленным как PRIMARY KEYs - Значения по умолчанию, такие как NULL специфицируются каждой колонке
|
Категория «Фотографы»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.