Программирование >>  Программный интерфейс приложений 

1 ... 22 23 24 [ 25 ] 26 27 28 ... 264


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%

+-+-

1 last name I

first name

1 1 1 Wasliington

George

1 Wilson 1

woodrow

1 Eisenliover

Dwiglit D.

+-+-

Вот запрос на выборку фамилий, которые содержат точно четыре буквы.

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;

1 COUNT(*)

COUNT(suffix)

COUNT(death)

1 41

36 1

Отсюда видно, что всего в истории США был 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

1 sex

1 COONT(♦)

1 F

1 15

1 M

1 16



1 ... 22 23 24 [ 25 ] 26 27 28 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика