12.07.2015 Views

Google Glass - Infocity

Google Glass - Infocity

Google Glass - Infocity

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

• column - название столбцов, которые будутизменены;• value - значения, которые будут приниматьстолбцы;• WHERE condition - раздел условий, которымдолжны соответствовать изменяемыеданные.Стоит отметить, что если убрать раздел WHEREиз команды, то это будет означать изменениезначения по всем строкам таблицы. Если же ниодна строка не будет отвечать условиям, то ничегоне будет изменено.UPDATE scott.empSET sal='2500'WHERE empno=7369В случае необходимости можно использоватьподзапросы в команде UPDATE, что будет выглядетьпримерно так:UPDATEtableSET column1 =subquery1[, column2 = subquery2 ][WHEREexpression1=subquery3,expression2=subquery4]UPDATE scott.empSET sal=(select 3000from dual)WHERE empno in (select empnofrom scott.empwhere ename = 'SMITH')DELETEТеперь подошел чередпоследней командыDML - команды удаленияDELETE. С ее помощьювы можетеза один раз удалитьвсе строкитаблицы или только те, которые будут отвечатьвашим условиям. Можно также задать условия,при которых строки вовсе нельзя будет удалить.Синтаксис этой команды выглядит следующимобразом:DELETE FROM TABLE[WHERE condition]Как видите, команда имеет очень простой синтаксис,и если вы обратите внимание, то увидите,что здесь даже невозможно указать именастолбцов. Естественно, ведь данная командаудаляет строку целиком, а не чистит значенияопределенных столбцов. Для очистки определенныхстолбцов можно вооружиться командойUPDATE и значением null.DELETE FROM scott.empWHERE ename = 'SMITH'Если убрать условия из этого запроса,то будутудалены все строки из таблицы emp. Не советуемэтого делать, так как нам эта таблицаеще понадобится в качестве примера в последующихглавах. Естественно, в качестве условиявы можете использовать определенный подзапрос.MERGEДопустим,что у нас имеется большое хранилищеданных, в которое из разныхисточников поступает информация. Приэтом учтем, что определенная информацияуже может располагаться в таблице и вместовставки новой строки придется произвестинекоторые изменения в ней. В случае же отсутствияинформации придется выполнитьвставку в таблицу. Первое, что может прийти вголову, - создание кода, который при помощикоманды SELECT осуществлял проверку таблици в определенных случаях выполнял бы операцииUPDATE или INSERT. Но в SQL присутствуетготовая команда, созданнаяспециально для этих целей, - этокоманда MERGE. Разберем еесинтаксис:MERGE INTO table_name AS table_aliasUSING (table | view | subquery) AS aliasON (join condition)WHEN MATCHED THENUPDATE SETcol1 = col_val1,col2 = col_val2WHEN NOT MATCHED THENINSERT (column_list)VALUES (column_values)где• INTO - раздел, отвечающий за то, в какойтаблице будут изменены или добавленыданные;• USING - раздел, в который помещаютсясвязывающие таблицы, подзапросыи представления, связанные с таблицейиз раздела выше;• ON - раздел, в котором указываются условия,от которых зависит будет произведеноизменение данных или вставка;• WHEN MATCHED | NOT MATCHED -выполняется первая команда,если условие из раздела выше сработало,и соответственно второе - в противномслучае.MERGE INTO emp eUSING dept dON (e.deptno=d.deptno)WHEN MATCHED THENUPDATE SETsal=sal + sal * 0.20WHEN NOT MATCHED THENINSERT (empno, ename, job, mgr,hiredate, sal, comm, deptno)VALUES (8125, 'BOB', 'ANALYST', 7566,sysdate, '2500', 10, 10)ТранзакцияТранзакция является логической единицейработы. Ее результатом должно статьуспешное исполнение одной или несколькихсоставляющихее операций, иначе транзакцияне пройдет. Транзакция начинается свыполнения операций, а заканчивается призапуске команд COMMIT (фиксирующей результатытранзакции) или ROLLBACK (отменяющейрезультаты транзакции и возвращающей операциюк первому шагу).Основное требование ктранзакции заключается в сохранности целостностиданных. Каждая транзакция обладаетсвойством АСИД (атомарность, согласованность,изолированность и долговечность):4/1367

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!