Продажа мужской одежды
фитнесклуб, карта фитнес клуба, fitnes
Pioneer DEH-7200SD
  • 200916 Aug

    SELECT применяется для извлечения строк, выбранных из одной или нескольких таблиц. То есть SELECT - это основной оператор "вывода" данных из базы MYSQL.

     


    Полный синтаксис SELECT-операции:


    SELECT [STRAIGHT_JOIN]
    [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
    [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]
    [DISTINCT | DISTINCTROW | ALL]
    select_expression,...
    [INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
    [FROM table_references
    [WHERE where_definition]
    [GROUP BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]
    [HAVING where_definition]
    [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]
    [LIMIT [offset,] rows | rows OFFSET offset]
    [PROCEDURE procedure_name(argument_list)]
    [FOR UPDATE | LOCK IN SHARE MODE]]

    Не паникуйте! 60% из синтаксиса Вы никогда в жизни не будете использовать. Жирным я выделил то, что действительно нужно при использовании.


    Описание функции на сайте dev.mysql.com сделано под разбирающегос я программиста а не для новичка. Поэтому начнем с простого.


    Самый простой SELECT-запрос


     


    SELECT * FROM table_name;

    Выводит все данные из таблицы "table_name"
    Чуть сложнее


    SELECT id,name FROM table_name;

    Выводятся только поля "id" и "name" из таблицы "table_name"


    Оператор WHERE


    Теперь добавляем оператор WHERE - добавляющий условия вывода


    SELECT id,name FROM table_name WHERE id>5

    Пераметр id должен быть больше 5


    SELECT id,name FROM table_name WHERE id>5 AND id<20

    Пераметр id должен быть больше 5 но меньше 20


    SELECT id,name FROM table_name WHERE name="Катя"

    Пераметр name должен быть равен строке "Катя", обратите внимание! Строки идут обязательно в кавычках, в то время как цифры могут идти без них. К тому же цифры в кавычках воспринимаются как строки и результат может не совпадать с ожиданием.


    SELECT id,name FROM table_name WHERE name<>"Катя"

    Пераметр name должен быть неравен строке "Катя"


    SELECT id,name FROM table_name WHERE id>5 AND id<20 AND name<>"Катя"

    Пераметр больше 5 но меньше 20 И name должен быть неравен строке "Катя"


    SELECT id,name FROM table_name WHERE (id>5 AND id<20) OR name<>"Катя"

    Пераметр больше 5 но меньше 20 ИЛИ name должен быть равен строке "Катя"


     


     


    Оператор ORDER BY - сортировка


    SELECT * FROM table ORDER BY id

    аналог этого запроса (ASC сортировка по возрастанию - по умолчанию)


    SELECT * FROM table ORDER BY id ASC

    Обратная сортировка


    SELECT * FROM table ORDER BY id DESC

    Две сортировки по возрастанию


    SELECT * FROM table ORDER BY id,name

    Различные сортировки


    SELECT * FROM table ORDER BY id DESC, name ASC

     


     


    Оператор LIMIT - ограничение вывода


    Оператор надо использовать если Ваша задача вывести определенное поличество строк.


    Допустим нужно вывести первую строку содержащию максимальный ID:


    SELECT * FROM table ORDER BY id DESC LIMIT 1;

    Две строки (1-2)


    SELECT * FROM table ORDER BY id DESC LIMIT 2;

    Десять строк (1-10)


    SELECT * FROM table ORDER BY id DESC LIMIT 10;

    Пропустить первые 5 строк и вывести 10 строк (6-15)


    SELECT * FROM table ORDER BY id DESC LIMIT 5,10;

    Пропустить 20 строк и вывести 6 (21-26)


    SELECT * FROM table ORDER BY id DESC LIMIT 20,6;

     


    Вывод данных из двух разных таблиц


    Для объединения данных используется оператор FROM и добавляются условия в WHERE. Условия нужны чтобы данные совмещались строго, чтобы не получилась чехарда.


    SELECT * FROM table1,table2 WHERE table1.id=table2.id

    Что изменилось в этом запросе? Названия полей указываются с название таблицы,это нужно для того чтобы четко указывать на ячейку нужной нам таблицы. Также мы поступаем если в обоих таблицах есть ячейки с одинаковым названием, а вывести нам нужно ячейку из таблицы table1


    SELECT table1.name, table2.id FROM table1,table2 WHERE table1.id=table2.id

     


    Послесловие


    Я рекомедую заключать названия столбцов и таблиц в "тильды". Вот пример:


    SELECT `id`,`name` FROM `table` WHERE `id`>5 ORDER BY `name` DESC

  • Комментарии

    • 1.
      Алексей пишет: Comment » 15 Ноя 09 в 22:30

      Спасибо, оказалось полезно
      PS. не нашел ссылку на rss :((
       

    • 2.
      adrei пишет: Comment » 06 Май в 01:24

       Молодец, нормально пояснено.

    • 3.
      Виталий пишет: Comment » 08 Июл в 01:04

      Вот этот пример ORDER BY id DESC, name ASC
      мне реально помог решить проблемку, спасибо!

  • Оставить комментарий

    (не публикуется)

В действии | Исходный код
  • UTF Windows Конвертер
  • СВЯЗЬ: ICQ: 4316764