|
Программирование >> Программный интерфейс приложений
mysql> SELECT last name, first naine FROM president ->WHERE last name = %W% Empty set (0.00 sec) Это типичная ошибка при работе с шаблонами. Такой запрос даст результат только в том случае, если существует столбец, в действительности содержащий W% или w% . Вот запрос на выборку фамилий, в которых встречается W или w. mysql> SELECT last naine, first name FROM president ->WHERE last name LIKE %W%
Вот запрос на выборку фамилий, которые содержат точно четыре буквы. mysql> SELECT last name, first name FROM president ->WHERE last name LIKE СУБД MySQL имеет также и другую форму выборки по шаблону с помощью расширенных регулярных выражений. Регулярные выражения описаны в приложении В, Операторы и функции . Получение итоговых результатов Одна из самых полезных возможностей СУБД MySQL (как впрочем и всех других СУБД) - обработка огромных объемов данных и суммирование их. По мере ознакомления с СУБД MySQL она становится мощным союзником в деле получения итогов и сумм, особенно принимая во внимание тот факт, что это очень нудная, требующая много времени и являющаяся источником ошибок работа, особенно если делать ее вручную. Простым примером этого может служить необходимость определения значений, которые представлены в таблице. Для удаления повторений воспользуемся ктючевым словом distinct. Например, перечень штатов, в которых когда-либо рождались президенты США. mysql> SELECT DISTINCT state FROM president ORDER BY state; state I AK CA GA lA IL KY MA MO NC NE NH NJ NY OH PA SC TX VA VT О другом способе получения итогов очень легко догадаться - это использование функции count (). Выражение сошт {*) выдает количество строк, выбранных запросом. Если запрос не содержит предложения where, выражение c0unt{*) будет подсчитывать количество строк, содержащихся в таблице. Этот запрос покажет, сколько было президентов в истории США. raysql> SELECT COUNT(*) FROM president; COUNT(*) При наличии предложения where функция COUNT {*) покажет, сколько строк удовлетворяет критерию выборки. raysql> SELECT COUNT(*) FROM event WHERE type = Q; COUNT(*) Функция count (*) подсчитывает каждую выбранную строку. Напротив, count jcol name) подсчитывает только строки, содержащие ненулевые значения в данном столбце. Этот запрос отчетливо покажет эту разницу. mysql> SELECT COUNT(*), COUNT(suffix) , COUNT(death) FROM president;
Отсюда видно, что всего в истории США был 41 президент, только один из них имел приставку к своему имени, и большинства из них уже нет в живых. В версиях, выше 3.23.2, уже можно совмещать функцию count(*) с ключевым словом distinct для подсчета количества точных ответов. например, для подсчета количества штатов, в которых когда-либо рождались президенты. raysql> SKLKCT COUNT(DISTINCT state) FROM president; I COONT(DISTINCT state) I 19 I +-+ Можно производить подсчеты и по отдельным категориям. Например, общее число учащихся по вашему предмету можно определить таким запросом. mysql> SKLKCT COUNT(*) FROM student; I COONT(*) I +-+ 31 I -+ Ho сколько из них мальчиков и девочек? mysql> SKLKCT COUNT(*) FROM student WHERE sex i COONT(*) 1 I 15 I mysql> SKLKCT COtJNT(*) FROM student WHERE sex = I COONT(*) I +-+ 16 I -+ Несмотря на то, что такой метод применим, он не иллюстративен и не очень подходит для случая, когда столбцы имеют несколько различных значений. Предположим, что необходимо определить, сколько президентов родилось в каждом штате. В соответствии с вышеприведенным методом сначала с помощью запроса SELECT DISTINCT state FROM president нужно узнать, сколько таких штатов, а затем сделать запрос select count(*) для каждого полученного штата. Очевидно, что это излишне трудоемкая процедура. К счастью, СУБД MySQL позволяет производить подсчет с помощью одного лишь запроса. Количество девочек и мальчиков можно одновременно подсчитать следующим образом. COUNT(*) FROM student GROUP BY sex; mysql> SKLKCT sex, + I I
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |