Wolfram Mathematica & SQL Емил Тоцев Сп. Информатика, 4 курс, група 1 б ф. номер: 0801261034 Р-л: Гл.ас. Христина Кулина ФМИ на ПУ П. Хилендарски, 23.02.2012 - Пловдив
Съдържание: Въведение в DatabaseLink Предимства на DatabaseLink Въведение в работата с Mathematica Wolfram & SQL Осъществяване на връзка към БД Създаване на нова таблица Изтриване на таблица Insert, Update, Delete, Select Транзакции Работа с бинарна информация
Въведение в DatabaseLink Днес всички банки, болници, фирми, летища, митници, библиотеки и всякакви други учреждения използват База Данни за да съхранят необходимата им за нормално функциониране информация. Има огромен брой комерсиални приложения, предназначени за крайни потребители, които осъществяват връзка с различни БД. DatabaseLink e приложение (може да се нарече и част) от Mathematica, което осигурява удобни инструменти за интеграция на Mathematica със системи за управление на БД.
Предимства на DatabaseLink Свързаност - работи с всякакви SQL База данни ( локални и мрежови) The HSQL Database Engine (HSQLDB) - база данни, която да използваме, ако нямаме друга налична Предоставени драйвери вградени за поддръжка на важни БД SQL команден интерфейс ако ни е по-близък Mathematica команден интерфейс за програмисти на Wolfram Mathematica
Предимства на DatabaseLink(2) Графичен потребителски интерфейс - Database Explorer и the Connection Tool за управление на БД и отваряне на връзки Лесен достъп до таблици и полета Поддръжка на SQL типове данни числа, низове, дати, бинарни... Множество връзки и транзакции Осигуряване на защита при връзките
Въведение в работата с Mathematica Wolfram & SQL Ще използваме БД HSQLDB, която е част от DatabaseLink, чрез която да тестваме, примери без да ни трябва наша БД. Има два режима на работа с БД чрез команди или чрез GUI ( естествено по-лесен). Преди да тествате тези примери трябва да инсталирате DatabaseLink чрез командата Needs["DatabaseLink`"] За да отворите GUI за работа с БД DatabaseExplorer[]
Осъществяване на връзка към БД Чрез командата OpenSQLConnection[]-дава ви да изберете чрез Connection Tool OpenSQLConnection[име на база] CloseSQLConnection[conn] затваряне на връзка SQLConnections[]- дава всички връзки data = SQLConnectionInformation[conn]; TableForm[Transpose[data]] за най подробна информация за определена връзка към БД
Създаване на нова таблица SQLCreateTable[conn,table,columns] SQLCreateTable[conn, SQLTable["TEST1"], {SQLColumn["A", "DataTypeName" -> "Integer"], SQLColumn["B", "DataTypeName" -> "Integer"]}] SQLCreateTable[conn, SQLTable["TEST2"], {SQLColumn["C", "DataTypeName" -> "Integer", "Nullable" -> True], SQLColumn["D", "DataTypeName" -> "Integer", "Nullable" -> False]}] SQLCreateTable[conn, SQLTable["TEST4"], {SQLColumn["X", "DataTypeName" -> "VARCHAR", "DataLength" -> 5], SQLColumn["Y", "DataTypeName" -> "CHAR", "DataLength" -> 3]}]
Много типове данни... SQLCreateTable[conn, SQLTable["TEST3"], { SQLColumn["TINYINTCOL", "DataTypeName" -> "TINYINT"], SQLColumn["SMALLINTCOL", "DataTypeName" -> "SMALLINT"], SQLColumn["INTEGERCOL", "DataTypeName" -> "INTEGER"], SQLColumn["BIGINTCOL", "DataTypeName" -> "BIGINT"], SQLColumn["NUMERICCOL", "DataTypeName" -> "NUMERIC"], SQLColumn["DECIMALCOL", "DataTypeName" -> "DECIMAL"], SQLColumn["FLOATCOL", "DataTypeName" -> "FLOAT"], SQLColumn["REALCOL", "DataTypeName" -> "REAL"], SQLColumn["DOUBLECOL", "DataTypeName" -> "DOUBLE"], SQLColumn["BITCOL", "DataTypeName" -> "BIT"], SQLColumn["LONGVARBINARYCOL", "DataTypeName" -> "LONGVARBINARY"], SQLColumn["VARBINARYCOL", "DataTypeName" -> "VARBINARY"], SQLColumn["BINARYCOL", "DataTypeName" -> "BINARY"], SQLColumn["LONGVARCHARCOL", "DataTypeName" -> "LONGVARCHAR"], SQLColumn["VARCHARCOL", "DataTypeName" -> "VARCHAR", "DataLength" -> 5], SQLColumn["CHARCOL", "DataTypeName" -> "CHAR", "DataLength" -> 3], SQLColumn["DATECOL", "DataTypeName" -> "DATE"], SQLColumn["TIMECOL", "DataTypeName" -> "TIME"], SQLColumn["TIMESTAMPCOL", "DataTypeName" -> "TIMESTAMP"], SQLColumn["OBJECTCOL", "DataTypeName" -> "OBJECT"] }]
Изтриване на таблица SQLDropTable[conn,table] изтрива таблица от дадена връзка към БД Пример: SQLCreateTable[conn, SQLTable["TEST"], {SQLColumn["COL1", "DataTypeName" -> "INTEGER"], SQLColumn["COL2", "DataTypeName" -> "DOUBLE"]}]; SQLDropTable[conn, "TEST"]
Работа с колони на таблица SQLColumn[...] SQLColumns[conn, "SAMPLETABLE1"]-списък на всички колони SQLSelect[conn, "SAMPLETABLE1", SQLColumn["VALUE"] > 6] извлича всички колони, отговарящи на даденото условие
Попълване на нови записи(insert) SQLCreateTable[conn, SQLTable["TEST"], {SQLColumn["COL1", "DataTypeName" -> "INTEGER"], SQLColumn["COL2", "DataTypeName" -> "DOUBLE"]}]; SQLInsert[conn, "TEST", {"COL1", "COL2"}, {10, 10.5}] SQLInsert[conn, "TEST", {"COL1", "COL2"}, {{10, 10.5}, {20, 55.1}}]
Промяна на записи(update) SQLUpdate SQLUpdate[conn, "TEST", {"COL1", "COL2"}, {12, 12.5}] SQLUpdate[conn, "TEST", {"COL1", "COL2"}, {4, 1.1}, SQLColumn["COL1"] < 15 ] промяна на стойност на колони с условия
Изтриване на записи SQLDelete[conn,table]-изтрива полета от таблица SQLDelete[conn,table,cond]-изтрива полета от таблица с условие SQLDelete[conn, "TEST", SQLColumn["COL1"] > 15] изтрива записи, които отговарят на дадено условие
Работа с транзакции SQLCreateTable[conn, SQLTable["TEST"], {SQLColumn["X", "DataTypeName" -> "Integer"], SQLColumn["Y", "DataTypeName" -> "Integer"]}]; SQLInsert[conn, "TEST", {"X", "Y"}, {61, 80}]; SQLInsert[conn, "TEST", {"X", "Y"}, {72, 5}]; SQLCommitTransaction[conn]
Работа с бинарна информация Създаваме таблица: SQLCreateTable[conn, SQLTable["BINTABLE"], {SQLColumn["BINCOL", "DataTypeName" -> "BINARY"]}]; Създаваме графика: plot = Plot[Sin[x], {x, 0, 2 Pi}] Съхраняваме картинката в gif формат gif = ExportString[plot, "GIF"];
Работа с бинарна информация(2) Нека видим част от низа: StringTake[gif, 100] Конвертираме низа в списък от байтове: bytedata = SQLBinary[ToCharacterCode[gif]]; Добавяме нов запис в таблицата: SQLInsert[conn, "BINTABLE", {"BINCOL"}, {bytedata}]; data = SQLSelect[conn, "BINTABLE"]; gifdata = FromCharacterCode[ data[[1, 1, 1]] ]; ImportString[gifData, "GIF"]
Благодаря за вниманието!