основы sql. Основы языка sql аннотация
Скачать 88.91 Kb.
|
SELECT e.id, node1.x, node1.y, node2.x, node2.y, node3.x, node3.y FROM elements e, nodes node1, nodes node2, nodes node3 WHERE e.n1 = node1.id AND e.n2 = node2.id AND e.n3 = node3.id; +----+--------+--------+--------+--------+--------+--------+ | id | x | y | x | y | x | y | +----+--------+--------+--------+--------+--------+--------+ | 29 | 65.00 | -25.00 | 80.00 | -20.00 | 75.00 | -35.00 | | 30 | 65.00 | -25.00 | 75.00 | -35.00 | 60.00 | -39.00 | | 31 | 60.00 | -15.00 | 80.00 | -20.00 | 65.00 | -25.00 | | 1 | -87.50 | 20.00 | -80.00 | 20.00 | -80.00 | 15.00 | | 2 | -95.00 | 20.00 | -87.50 | 20.00 | -95.00 | 10.00 | | 3 | -87.50 | 20.00 | -80.00 | 15.00 | -95.00 | 10.00 | | 4 | -95.00 | 10.00 | -80.00 | 15.00 | -85.00 | -1.00 | | 25 | 65.00 | -25.00 | 60.00 | -39.00 | 50.00 | -25.00 | | 20 | 40.00 | -3.00 | 30.00 | -27.00 | 20.00 | -10.00 | | 21 | 50.00 | -25.00 | 30.00 | -27.00 | 40.00 | -3.00 | | 22 | 50.00 | -25.00 | 60.00 | -39.00 | 30.00 | -27.00 | | 12 | -15.00 | 15.00 | 0.00 | 0.00 | -15.00 | -14.00 | | 13 | -15.00 | 15.00 | 5.00 | 20.00 | 0.00 | 0.00 | | 14 | -15.00 | -14.00 | 0.00 | 0.00 | 10.00 | -20.00 | | 26 | 65.00 | -5.00 | 75.00 | -7.00 | 60.00 | -15.00 | | 7 | -75.00 | -3.00 | -65.00 | 15.00 | -55.00 | -6.00 | | 8 | -65.00 | 15.00 | -40.00 | 15.00 | -55.00 | -6.00 | | 9 | -55.00 | -6.00 | -40.00 | 15.00 | -35.00 | -10.00 | | 10 | -40.00 | 15.00 | -15.00 | 15.00 | -35.00 | -10.00 | | 11 | -35.00 | -10.00 | -15.00 | 15.00 | -15.00 | -14.00 | | 16 | 20.00 | 8.00 | 20.00 | -10.00 | 0.00 | 0.00 | | 17 | 10.00 | -20.00 | 20.00 | -10.00 | 0.00 | 0.00 | | 18 | 20.00 | 8.00 | 40.00 | -3.00 | 20.00 | -10.00 | | 19 | 30.00 | -27.00 | 10.00 | -20.00 | 20.00 | -10.00 | | 15 | 5.00 | 20.00 | 20.00 | 8.00 | 0.00 | 0.00 | | 27 | 75.00 | -7.00 | 83.00 | -9.00 | 80.00 | -20.00 | | 28 | 60.00 | -15.00 | 75.00 | -7.00 | 80.00 | -20.00 | | 5 | -80.00 | 15.00 | -75.00 | -3.00 | -85.00 | -1.00 | | 6 | -80.00 | 15.00 | -65.00 | 15.00 | -75.00 | -3.00 | | 23 | 40.00 | -3.00 | 60.00 | -15.00 | 50.00 | -25.00 | | 24 | 65.00 | -25.00 | 50.00 | -25.00 | 60.00 | -15.00 | +----+--------+--------+--------+--------+--------+--------+ Примечание. Обратите внимание, что необходимая для выполнения данного запроса промежуточная таблица в виде декартового произведения (если бы она реально строилась) имеет размер в 31*29*29*29=756059 строк (31 строка в таблице elements и 29 строк в таблице nodes). Манипулирование строками таблиц Для удаления и изменения строк таблиц SQL БД применяются операторы DELETE и UPDATE. Удаление строк Удаление строк таблицы реализуется оператором DELETE FROM, имеющим следующий синтаксис DELETE FROM имя_табл [WHERE сложн_условие] где сложн_условие имеет описанный выше синтаксис. В результате выполнения оператора из таблицы удаляются все строки, удовлетворяющие критерию сложн_условие. Если в операторе DELETE FROM конструкция WHERE опущена, то удаляются все строки таблицы. Модификация строк Изменение содержимого строк таблицы реализуется оператором UPDATE, имеющим следующий синтаксис UPDATE имя_табл SET имя_столбца=выражение, ... [WHERE сложн_условие] где выражение - выражение (в простейшем случае - константа), согласующееся по результату с типом данных столбца. В выражение допустимо использование значений ячеек любых столбцов таблицы, рассмотренных ранее операций и функций (но не агрегативных), а также прежнего содержимого модифицуруемой ячейки. Обновлению подлежат столбцы строк, отвечающих критерию сложн_условие. Если конструкция WHERE в операторе отсутствует, то обновляются все строки таблицы. Пример Для изменения наименования материала, из которого выполнена механическая конструкция, для всех элементов КЭ-сетки можно использовать следующий оператор UPDATE elements SET props='brass'; SELECT * FROM elements; +----+----+----+----+-------+ | id | n1 | n2 | n3 | props | +----+----+----+----+-------+ | 29 | 24 | 26 | 25 | brass | | 30 | 24 | 25 | 23 | brass | | 31 | 22 | 26 | 24 | brass | | 1 | 2 | 3 | 5 | brass | | 2 | 1 | 2 | 4 | brass | . . . | 28 | 22 | 27 | 26 | brass | | 5 | 5 | 7 | 6 | brass | | 6 | 5 | 8 | 7 | brass | | 23 | 20 | 22 | 21 | brass | | 24 | 24 | 21 | 22 | brass | +----+----+----+----+-------+ Пример В нашей КЭ-сетке элемент 22 имеет ?неправильную? форму. Ставится задача заменить его двумя новыми конечными элементами, имеющими форму, более близкую к равносторонней. Эта задача может быть решена следующей последовательностью операторов DELETE FROM elements WHERE id=22; INSERT INTO nodes VALUES (30, 45.0, -33.5); INSERT INTO elements VALUES (22, 21, 30, 19); INSERT INTO elements VALUES (32, 21, 23, 30); Пример Для решения предыдущей задачи можно также использовать и другой набор операторов INSERT INTO nodes VALUES (30, 45.0, -33.5); UPDATE elements SET n2 = 30 WHERE id = 22; INSERT INTO elements VALUES (32, 21, 23, 30); Литература Дж. Мартин. Организация баз данных в вычислительных системах. - М.;Мир,1980. - 662с. С.Д. Кузнецов. Стандарты языка реляционных баз данных SQL: краткий обзор. //СУБД, 1996, N2, сс. 6-36. С.Д. Некузнецов Зенкевич О., Морган К. Конечные элементы и аппроксимации. - М.:Мир, 1979. - 318с. Упражнения Ниже приведены задания, которые необходимо выполнить, используя оператор SELECT выборки информации из учебной базы данных. Выполнение некоторых заданий значительно упростится, если учесть приведенные ниже рекомендации. Определить наилучший материал по показателю ?прочность/плотность?. Получить таблицу, содержащую значения наибольших разностей идентификаторов узлов - вершин для каждого конечного элемента.Таблица должна быть упорядочена по убыванию значений разностей. Определить максимальное значение в таблице из предыдущего задания. Определить протяженность механического объекта вдоль оси x. Определить расстояние каждого узла КЭ-сетки до начала системы координат. Определить расстояние каждого узла КЭ-сетки до узла, в котором приложено граничное условие в виде горизонтальной силы (подчеркнем, не до узла с заданным идентификатором, а до узла с заданным типом граничного условия). Найти наибольшее расстояние между узлами КЭ-сетки. Получить таблицу длин сторон всех элементов КЭ-сетки в виде ?идентификатор элемента - длина стороны 1 - длина стороны 2 - длина стороны 3?. Получить таблицу расстояний между узлами КЭ-сетки, соединенных сторонами конечных элементов, в виде ?идентификатор узла 1 - идентификатор узла 2 - длина?. Получить таблицу площадей всех конечных элементов. Напомним, для вычисления площади треугольника можно использовать формулу s = SQRT(p*(p-a)*(p-b)*(p-c)) где a, b, c - длины сторон треугольника, а p - его полупериметр. Определить общую массу механического объекта при условии, что его толщина (в направлении z) равна 5 мм. Получить таблицу значений отношения maxL/minL для каждого конечного элемента с указанием тех элементов, для которых это отношение превышает величину 1,4 (здесь maxL - наибольшая длина стороны конечного элемента, minL - наименьшая длина стороны конечного элемента). Получить таблицу ?степеней? узлов КЭ-сетки. Степенью узла в теории графов называется количество ребер, соединяющих данный узел с соседними. Определить для каждого узла КЭ-сетки количество ?подключенных? к нему конечных элементов. Получить список идентификаторов ?угловых? узлов КЭ-сетки (назовем унловыми узлы, являющиеся вершиной только одного элемента). Получить список идентификаторов конечных элементов, одна или более сторон которых образуют границу области. Предложить способ определения факта расположения узла КЭ-сетки на границе области. Выдать список всех таких узлов. Рекомендация. В СУБД mySQL синтаксис оператора SELECT выглядит следующим образом: SELECT [ALL|DISTINCT] в_выражение [AS син_столбца], ... FROM ... и т.д. где син_столбца - имя, назначаемое столбцу результирующей таблицы. Это имя используется при выводе результирующей таблицы (в ее ?шапке?) вместо текста в_выражение. Однако, более полезно то, что син_столбца можно использовать в в_выражение, расположенном правее в списке оператора SELECT. Это в ряде случаев позволяет существенно уменьшить сложность конструкции в_выражение. Необходимо также отметить, что аналогичные средства именования (введения синонимов) столбцов результирующей таблицы предлагают все СУБД, поддерживающие язык SQL. |