... существует большое разнообразие
комманд. Для удобства ...
Продолжаю размещать переводы с англоязычного сайта 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. Помните, что вы не должны указывать имя таблицы.
А если вам надоело учиться, то покатайтесь со своими детьми на роликах. Здесь можно заказать детские ролики в Украине.
инъекции, подделка межсайтовых ...
experts here? Which ...
При разработке одного из проектов столкнулся с необходимостью настроить вывод постов в двух ...
При разработке одного из проектов столкнулся с необходимостью настроить вывод постов в двух вариантах:
- Расширенный — Название, крупное изображение, анонс, некоторые ссылки
- Компактный — Название, маленькое изображение
Причиной тому был тот факт, что некоторым пользователям удобнее, когда на страничке отображается несколько последних записей и их краткое содержание, а некоторым — большое количество записей, без анонса.
В таком случае необходимо каждому пользователю дать возможность переключать вид так, как ему будет удобно.
Общий алгоритм следующий:
- При загрузке страницы проверяется состояние параметра style в базе
- В зависимости от параметра посты выводятся в том или ином формате
- При нажатии на флажок переключения вида запускается функция getPage
- Функция getPage принимает значение переключателя и отправляет данные на обработку и ОЖИДАЕТ ЗАВЕРШЕНИЯ ОБРАБОТКИ
- Файл style_updater.php принимает данные и обновляет Базу данных.
- После этого функция getPage перезагрузит страницу
Подробности
Так сложилось, что по долгу службы столкнулся со следующей задачей: нужно было быстро и как можно ...