Начало работы с MySQL
⇐ ПредыдущаяСтр 2 из 2 1) Запустить командную строку,выбрав в системном меню Пуск – Программы – MySQL – MySQL Server 6.0 – MySQL Command Line Client. Открывшееся окно выглядеть так, как это показано на рис. 1. Рис.1
2) На предложение ввести пароль нажмите клавишу <Enter>. После того как появилось приглашение mysql> выглядеть так, как показано на рис.2.
Рис.2
Построение простых запросов
FROM n Выбрать все данные из таблицы поставщиков (ключевые слова SELECT … FROM …): SELECT * FROM P; -- получим новую таблицу. n В результате получим новую таблицу, содержащую полную копию данных из исходной таблицы P.
WHERE
n Выбрать все строки из таблицы поставщиков, удовлетворяющих некоторому условию (ключевое слово WHERE …):
SELECT * FROM P WHERE P.PNUM > 2; -- выбрать все строки, удовлетворяющих условию n В качестве условия в разделе WHERE можно использовать сложные логические выражения, использующие поля таблиц, константы, сравнения (>, <, = и т.д.), скобки, союзы AND и OR, отрицание NOT. GROUP BY Упорядочение результатов запроса (ключевое слово ORDER BY …): Использовать GROUP BY имеет смысл только вместе с одной из аналитических групповых функций MAX() - максимальное значение в колонке MIN()- минимальное значение в колонке COUNT() - количество значений в колонке SUM() - сумма всех значений в колонке AVG() - среднее значение SELECT PD.PNUM, --выбранная колонка. SUM(PD.VOLUME) AS SM --сумма всех значений в колонке. FROM PD --получим новую таблицу. GROUP BY PD.DNUM; --упорядочить результата запроса. Этот запрос будет выполняться следующим образом. · Сначала строки исходной таблицы будут сгруппированы так, чтобы в каждую группу попали строки с одинаковыми значениями DNUM. · Потом внутри каждой группы будет просуммировано поле VOLUME.
· От каждой группы в результирующую таблицу будет включено по одной строке. Исходная таблица PD
Результат после группировки:
HAVING
n Получить номера деталей, суммарное поставляемое количество которых превосходит 400 (ключевое слово HAVING …): SELECT PD.DNUM, SUM(PD.VOLUME) AS SM GROUP BY PD.DNUM HAVING SUM(PD.VOLUME) > 400; -- отбор групп.
В результате получим следующую таблицу из исходной таблицы PD: Замечание. В одном запросе могут встретиться как условия отбора строк в разделе WHERE, так и условия отбора групп в разделе HAVING. Условия отбора групп нельзя перенести из раздела HAVING в раздел WHERE. Аналогично и условия отбора строк нельзя перенести из раздела WHERE в раздел HAVING, за исключением условий, включающих поля из списка группировки GROUP BY.
4.4 Выполнение операций с несколькими таблицами SELECT Оператор SELECT позволяет выбирать значения полей из нескольких таблиц. SELECT -- оператор выбирает требуемые таблицы. P.PNUM, P.PNAME, PD.DNUM, PD.VOLUME FROM P, PD WHERE P.PNUM = PD.PNUM;
Исходные таблицы P и PD:
В результате получим новую таблицу, в которой строки с данными о поставщиках соединены со строками с данными о поставках деталей: Замечание. Соединяемые таблицы перечислены в разделе FROM оператора, условие соединения приведено в разделе WHERE. Раздел WHERE, помимо условия соединения таблиц, может также содержать и условия отбора строк.
UNION n Получить имена поставщиков, имеющих статус, больший 3 или поставляющих хотя бы одну деталь номер 2 (объединение двух подзапросов - ключевое слово UNION):
SELECT P.PNAME FROM P WHERE P.STATUS > 3 UNION -- результат после объединения SELECT P.PNAME FROM P, PD WHERE P.PNUM = PD.PNUM AND PD.DNUM = 2; n Результирующие таблицы объединяемых запросов должны быть совместимы, т.е. иметь одинаковое количество столбцов и одинаковые типы столбцов в порядке их перечисления. n Не требуется, чтобы объединяемые таблицы имели бы одинаковые имена колонок.
n Это отличает операцию объединения запросов в SQL от операции объединения в реляционной алгебре. n Наименования колонок в результирующем запросе будут автоматически взяты из результата первого запроса в объединении.
NATURAL JOIN Естественное соединение таблиц (ключевое слово NATURAL JOIN): SELECT P.PNUM, P.PNAME, PD.DNUM, PD.VOLUME FROM P NATURAL JOIN PD; --соединение таблицы P и PD; Замечание. В разделе FROM не указано, по каким полям производится соединение. NATURAL JOIN автоматически соединяет по всем одинаковым полям в таблицах. В результате после соединения таблицы P и PD:
OUTER JOIN LEFT OUTER JOIN (можно использовать просто LEFT JOIN)
SELECT *
INNER JOIN Этот тип объединения позволяет извлекать строки, которые обязательно присутсвуют во всех объединяемых таблицах. В простейшем случае (без указания условий отбора), выборка вернёт т.н. декартово произведение, в котором каждая строка одной таблицы будет сопоставлена с каждой строкой другой таблицы: mysql> SELECT * FROM nomenclature INNER JOIN description;+----+-----------+----+---------------------+| id | name | id | description |+----+-----------+----+---------------------+| 1 | Книга | 1 | Замечательная книга || 2 | Табуретка | 1 | Замечательная книга || 3 | Карандаш | 1 | Замечательная книга || 1 | Книга | 3 | Красный карандаш || 2 | Табуретка | 3 | Красный карандаш || 3 | Карандаш | 3 | Красный карандаш || 1 | Книга | 5 | Зелёная машинка || 2 | Табуретка | 5 | Зелёная машинка || 3 | Карандаш | 5 | Зелёная машинка |+----+-----------+----+---------------------+9 rows in set (0.00 sec)
Читайте также: A) внезапное начало Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|