Какой рейтинг вас больше интересует?
|
Еще вопросы/ответы на собеседовании по MySQL (часть 1)2013-06-15 18:32:00 (читать в оригинале)Продолжаю размещать переводы с англоязычного сайта www.techinterviews.com, посвященного вопросам на собеседовании для программистов. Ответы приведены такие же как на исходном сайте. Что такое DDL, DML and DCL? Как вы видете существует большое разнообразие SQL комманд. Для удобства работы их можно разделить на 3 большие подгруппы. Data Definition Language (DDL) это команды, которые имеют дело с схемами БД и описанием того как данные должны размещаться в БД. Такие выражения языка как CREATE TABLE или ALTER TABLE принадлежат DDL. Data manipulation language (DML) имеет дело с манипуляцией данными и включает наиболее общие выражения языка, такие как SELECT, INSERT, UPDATE и т.п. Data Control Language (DCL) включает такие команды как GRANT, которые в основном касаются прав, разрешений и другого контроля над БД. Как бы вы получили количество строк выдаваемых запросом ? Запрос SELECT COUNT (user_id) FROM users вернет только количество user_id-ов. Если значение колонки повторяется, как вы найдете уникальные значения ? Использование DISTINCT в запросе вам поможет. Тогда запрос будет таким: SELECT DISTINCT user_firstname FROM users; Вы можете также найти количество уникальных значений в колонке таким запросом: SELECT COUNT (DISTINCT user_firstname) FROM users; Как вернуть сотню книг начиная с 25-ой ? SELECT book_title FROM books LIMIT 25, 100 Первое значение команды LIMIT это смещение, а второе количество. Вы написали поисковый движок, который возвращает, по 10 значений за раз, в то же время вам хочется узнать сколько строк всего. Как это вывести вашему пользователю ? SELECT SQL_CALC_FOUND_ROWS page_title FROM web_pages LIMIT 1,10; SELECT FOUND_ROWS(); Второй запрос (никогда не используйте в таком случае COUNT()) скажет вам как много результатов всего, так что вы можете показать фразу "Найдено 13,450,600 результатов, показаны 1-10" Запомните, что FOUND_ROWS не обращает внимание на ваши LIMIT выражения и всегда возвращает полное число строк обработанных запросом. Как бы вы написали запрос выборки всех команд выигравших 2, 4, 6 или 8 игр ? SELECT team_name FROM teams WHERE team_won IN (2, 4, 6, 8) Как бы вы получили всех пользователей у которых номер телефона NULL ? SELECT user_name FROM users WHERE ISNULL(user_phonenumber) Что значит следующий запрос: SELECT user_name, user_isp FROM users LEFT JOIN isps USING (user_id) ? Он эквивалентен такому запросу: SELECT user_name, user_isp FROM users LEFT JOIN isps WHERE users.user_id=isps.user_id Как узнать какой авто инкремент был использован при последнем INSERT-е ? SELECT LAST_INSERT_ID() - запрос вернет значение назначенное функции auto_increment. Помните, что вы не должны указывать имя таблицы. А если вам надоело учиться, то покатайтесь со своими детьми на роликах. Здесь можно заказать детские ролики в Украине.
|
Категория «Художники»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.