Запросы к базе данных и команда Select

www.karman.com.ua
портал о хостинге в Украине
Хостинг + Украина = Karman.com.ua

PHPMyAdmin и MySQL

/

Часто задаваемые вопросы


Запросы к базе данных и команда Select 

Еще по теме:
  Как лучше продвигать, 1 сайт под 15 Запросов или, 5 сайтов, каждый под 3 Запроса?
  Спасибо команде HvOSTING!
  Посоветуйте поднять посещаемость моего сайта по ключевым Запросам
  поисковые Запросы, ключевые слова - позиции в выдаче поиска
  Как сделать сайт расширив круг поисковых Запросов
  Подбор ключевых слов и поисковых Запросов для оптимизации сайта
  Как установить и настроить базу данных MySQL?
  Экспорт: Я слышал, phpMyAdmin может экспортировать данные в файлы Microsoft Excel files, как я могу осуществить такой экспорт?

Я не ставлю целью углубляться в изучение языка SQL,об этом вы можете прочитать в любом руководстве по SQL Server,MySQL в основном поддерживает все основные команды стандарта ANSI 92,но команда Select заслуживает того,чтобы посвятить ей отдельную главу. Команда Select используется для запросов к базе данных с целью извлечения из нее информации.Синтаксис команды следующий:

SELECT [STRAIGHT_JOIN] [DISTINCT | ALL] select_expression,...
[FROM tables... [WHERE where_definition] [GROUP BY column,...]
[ORDER BY column [ASC | DESC], ...] HAVING full_where_definition
[LIMIT [offset,] rows] [PROCEDURE procedure_name]]
[INTO OUTFILE 'file_name'... ]

Как видно из вышеприведенного,вместе с командой Select используются ключевые слова,использование которых очень влияет на ответ сервера.Рассмотрим каждое из них.

DISTINCT..
Пропускает строки,в которых все выбранные поля идентичны,то есть устраняет дублирование данных.

WHERE.
Предложение команды Select,которое позволяет устанавливать предикаты,условие которых может быть верным или неверным для любой строки таблицы.Извлекаются только те строки,для которых такое утверждение верно.Например:

SELECT u_id,lname from publishers WHERE city ='New York';

Выводит колонки u_id и lname из таблицы publishers для которых значение в столбце city-New York.Это дает возможность сделать запрос более конкретным.

Реляционные операторы.
Реляционный оператор - математический символ который указывает на определенный тип сравнения между двумя значениями. Реляционные операторы которыми располагает MySQL :


= Равнo
> Больше
< Меньше
>= Больше или равно
<= Меньше или равно
< > Не равно
Эти операторы имеют стандартные значения для числовых значений.

Предположим что вы хотите увидеть всех заказчиков с оценкой(rating) выше 200. Так как 200 - это скалярное значение, как и значение в столбце оценки, для их сравнения вы можете использовать реляционный оператор.

SELECT * FROM Customers WHERE rating > 200;

Булевы операторы.
Основные Булевы операторы также распознаются в MySQL. Выражения Буля - являются или верными или неверными, подобно предикатам. Булевы операторы связывают одно или более верных/неверных значений и производят единственное верное или неверное значение. Стандартными операторами Буля распознаваемыми в SQL являются:AND,OR и NOT.

Предположим вы хотите видеть всех заказчиков в Далласе,которые имеют рейтинг выше 200:

SELECT * FROM Customers WHERE city = 'Dallas' AND rating > 200;

При использовании оператора AND,должны быть выполнены оба условия,то есть должны быть выбраны все заказчики из Далласа,рейтинг которых больше 200.

При использовании оператора OR,должно выполниться одно из условий.Например:

SELECT * FROM Customers WHERE city = 'Dallas ' OR rating > 200;

В данном случае будут выбраны все заказчики из Далласа и все имеющие рейтинг больше 200,даже если они и не из Далласа.

NOT может использоваться для инвертирования значений Буля.Пример запроса с NOT:

SELECT * FROM Customers WHERE city = 'Dallas' OR NOT rating > 200;

При таком запросе будут выбраны все заказчики из Далласа и все заказчики,рейтинг которых меньше 200.В этом запросе оператор NOT применяется только к выражению rating >200.Можно сделать более сложный запрос:

SELECT * FROM Customers WHERE NOT( city = 'Dallas' OR rating > 200 );

В этом запросе NOT применен к обеим выражениям в скобках.В данном случае,сервер читает выражения в скобках,определяет, соответствует ли истине равенство city = 'Dallas' или равенство rating > 200.Если любое условие верно, выражение Буля внутри круглых скобок верно. Однако, если выражение Буля внутри круглых скобок верно,предикат как единое целое неверен, потому что NOT преобразует верно в неверно и наоборот.То есть,будут выбраны все заказчики не находящиеся в Далласе и рейтинг которых меньше 200.

IN.
Оператор IN определяет набор значений в которое данное значение может или не может быть включено.Например,запрос

SELECT * FROM Salespeople WHERE city = 'Barcelona' OR city = 'London';

может быть переписан более просто:

SELECT * FROM Salespeople WHERE city IN ( 'Barcelona', 'London' );

IN определяет набор значений с помощью имен членов набора заключенных в круглые скобки и отделенных запятыми.Затем он проверяет различные значения указанного,пытаясь найти совпадение со значениями из набора. Если это случается, то предикат верен. Когда набор содержит значения номеров а не символов, одиночные кавычки опускаются.

BETWEEN.
Оператор BETWEEN похож на оператор IN. В отличии от определения по номерам из набора, как это делает IN, BETWEEN определяет диапазон, значения которого должны уменьшаться что делает предикат верным. Вы должны ввести ключевое слово BETWEEN с начальным значением, ключевое AND и конечное значение. В отличие от IN, BETWEEN чувствителен к порядку, и первое значение в предложении должно быть первым по алфавитному или числовому порядку.Например:

SELECT * FROM Salespeople WHERE comm BETWEEN .10 AND .12;
SELECT * FROM Salespeople WHERE city BETWEEN 'Berlin' AND 'London';

LIKE.
LIKE применим только к полям типа CHAR или VARCHAR, с которыми он используется чтобы находить подстроки. Т.е. он ищет поле символа чтобы видеть, совпадает ли с условием часть его строки.В качестве условия он использует групповые символы(wildkards) - специальные символы которые могут соответствовать чему-нибудь. Имеются два типа групповых символов используемых с LIKE:

символ подчеркивания ( _ ) замещает любой одиночный символ.

знак '%',замещающий любое количество символов.
Если мы зададим следующие условия:

SELECT * FROM Customers WHERE fname LIKE 'J%';

то будут выбраны все заказчики,чьи имена начинаются на J:John,Jerry,James и т.д.

COUNT.
Агрегатная функция,производит подсчет значений в столбце или числа строк в таблице.При работе со столбцом использует DISTINCT в качестве аргумента:
SELECT COUNT ( DISTINCT snum ) FROM Orders;
При подсчете строк имеет синтаксис:

SELECT COUNT (*) FROM Customers;

GROUP BY.
Предложение GROUP BY позволяет определять подмножество значений в особом поле в терминах другого поля, и применять функцию агрегата к подмножеству. Это дает возможность объединять поля и агрегатные функции в едином предложении SELECT. Например, предположим что вы хотите найти наибольшую сумму приобретений полученную каждым продавцом. Вы можете сделать раздельный запрос для каждого из них, выбрав MAX () из таблицы для каждого значения поля. GROUP BY позволит Вам поместить их все в одну команду:


SELECT snum, MAX (amt) FROM Orders GROUP BY snum;

HAVING.
HAVING определяет критерии используемые чтобы удалять определенные группы из вывода, точно также как предложение WHERE делает это для индивидуальных строк.Например:


SELECT cid,cname,price,max(price) //max()-это тоже агрегатная функция
FROM customers HAVING max(price)>500;
HAVING действует сходно с WHERE,но с WHERE нельзя использовать агрегатные функции.

ORDER BY.
Эта команда упорядочивает вывод запроса согласно значениям в том или ином количестве выбранных столбцов. Многочисленные столбцы упорядочиваются один внутри другого,также как с GROUP BY.

EXISTS.
Используется в подзапросах.

SELECT cnum, cname, city FROM Customers WHERE EXISTS
(SELECT * FROM Customers WHERE city = " San Jose' );
Он берет подзапрос как аргумент и оценивает его как верный если тот производит любой вывод или как неверный если тот не делает этого.Этим он отличается от других операторов предиката, в которых он не может быть неизвестным. Например, мы можем решить, извлекать ли нам некоторые данные из таблицы Заказчиков если, и только если, один или более заказчиков в этой таблице находятся в San Jose.

UNI0N.
UNI0N отличается от подзапросов тем что в нем ни один из двух ( или больше ) запросов не управляются другим запросом. Все запросы выполняются независимо друг от друга, а уже вывод их - объединяется.Например:

SELECT snum, sname FROM Salespeople WHERE city = 'London' UNI0N
SELECT cnum, cname FROM Customers
WHERE city = 'London';
Предложение UNI0N объединяет вывод двух или более SQL запросов в единый набор строк и столбцов.

DESC,ASC.
DESC-DESCEDENT,вывод данных в обратном порядке(по алфавиту и численным значениям).По умолчанию используется ASC.

Ну вот вкратце и все.MySQL поддерживает почти все основные команды SQL Server,так что более подробно о команде SELECT вы можете прочитать в любом учебнике по языку SQL.


Чтобы обсудить это в форуме, нажмите здесь.


Хостинг-источник: http://karman.com.ua, http://gsub.kiev.ua/Arts/?action=view&aid=468
  Каждый раз, когда я хочу вставить или изменить запись, либо удалить таблицу или базу данных, появляется 404-я ошибка (page not found) как с HTTP, так и с cookie аутентификацией, мне предлагается снова
  Мой MySQL сервер иногда останавливает Запросы и возвращает сообщение 'Errorcode: 13'. Что это значит?


Есть вопросы о хостинге и о сайтах?
и получи ответ от профессионалов, которые обожают помогать людям :).
Еще по теме:
  В MySQL 4, Я вижу множество баз данных, которые мне не принадлежат, и я не могу получить доступ к ним.
  Закладки (Bookmarks): Где я могу хранить закладки? Почему я не могу видеть некоторые закладки ниже окна Запросов? Что является переменной?
  Что происходит с нижним подчеркиванием в названии базы данных при создании привилегий?
  Как создать PDF схему моей базы данных?
  Как использовать связанные таблицы в Запросах по образцу?
  Как я могу восстановить базу данных или таблицу с помощью дампа? Как запустить ".sql" файл?
  Как я могу резервировать (бэкапить) свою базу данных или таблицу?
  При использовании Firefox, не могу удалять записи или базы данных с помощью PHPMyAdmin.
  При использовании Netscape 4.75 я получаю пустые строки между каждой строкой данных в экспортируемом CSV файле.
  При использовании Mozilla 0.9.7 возникает проблема с отправкой Запроса преобразования из блока Запросов.
  Допустимо ли позволять пользователям создавать свои собственные базы данных?
  Я получаю ошибку когда ввожу USE перед именем базы данных, содержащим дефис.
  Невозможно импортировать дампы, созданные с помощью mysqldump, входящего в состав дистрибутива MySQL-сервера.
© СПД Праведно-Счастливый Аладдин Ярославович, 2004-2008. Все права защищены. При цитировании материалов ссылка на www.karman.com.ua обязательна. Редакция "Кармана" может не разделять точку зрения авторов статей, сообщений и ответственности за их содержание не несет.

Быстрый переход к содержимому сайта Karman.com.ua:
Новости, советы, углубленные знания, знания для новичков, законодательство, интересные скрипты, фотогалереи, отчеты, статьи о хостинге: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
Часто задаваемые общие вопросы о хостинге, про FTP, PHPMyAdmin и MySQL, CPanel, Предустановленные скрипты, WHM, Cron, .htaccess, SSH, Паролирование директорий, О доменах, о работе с сайтом, о Раскрутке сайта, об Электронной почте, про Основы web-программирования: 0, 1
Энциклопедия основных терминов хостинга, программного обеспечения, железной стороны хостинга, технологий, электронной почты и доменов: 0, 1, 2, 3, 4, 5, 6
Сайты о хостинге (форумы, хостинг-провайдеры, студии веб-дизайна, домен-регистраторы, инструментарии в помощь вебмастеру): 0, 1, 2

Rambler's Top100