Сегодня 29 ноября, пятница ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7276
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
coding4.net
coding4.net
Голосов: 1
Адрес блога: http://www.coding4.net/
Добавлен: 2012-06-11 20:16:46
 

Еще вопросы/ответы на собеседовании по MySQL (часть 2)

2013-06-19 01:06:00 (читать в оригинале)


MySQL

Продолжаю размещать переводы с англоязычного сайта 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 специфицируются каждой колонке


Тэги: sql, вопрос, собеседование

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по количеству голосов (152) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.