/
sbespalko
/
mind-maps
Обзор
Документация
Войти
/
sbespalko
/
mind-maps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
SQL.mm
3 472 строки
141 KB
sergey
git init
10 окт 2024, 15:04
10 окт 2024, 15:04
96b0011
Код
Авторство
О чём код?
<map version="1.0.1"> <!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net --> <node COLOR="#000000" CREATED="1489602062318" ID="ID_434185486" MODIFIED="1489780101349" TEXT="SQL"> <font NAME="SansSerif" SIZE="20"/> <hook NAME="accessories/plugins/AutomaticLayout.properties"/> <node COLOR="#0033ff" CREATED="1489780103972" ID="ID_660710171" MODIFIED="1490168380997" POSITION="left" TEXT="Вычисляемые поля"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> надо давать имя оператором AS </p> </body> </html></richcontent> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1489780263484" ID="ID_1885147669" MODIFIED="1490001925904" TEXT="'+', '||', CONCAT () - конкатенация"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> не работает в MySQL </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489780523589" ID="ID_228216218" MODIFIED="1489780523590" TEXT="SELECT CONCAT(vend_name, ' (', vend_country, ')')"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489780539885" ID="ID_288193484" MODIFIED="1489780539885" TEXT="SELECT vend_name | | ' (' | | vend_country | | ') '"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1489780860411" HGAP="27" ID="ID_1319400589" MODIFIED="1490014365245" TEXT="AS - псевдоним" VSHIFT="-2"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> для столбцов и таблиц </p> <p> в Oracle без AS просто table1 t </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489780874263" ID="ID_881431577" MODIFIED="1489780875013" TEXT="SELECT RTRIM(vend_name) + ' (' + RTRIM(vend_country) + ') ' AS vend_title "> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1489781127893" ID="ID_955249846" MODIFIED="1489781130543" TEXT="Математика"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489781135452" ID="ID_1605689543" MODIFIED="1490001925935" TEXT="+-/*"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> SELECT prod_id, </p> <p>     quantity, </p> <p>     item_price, </p> <p>     quantity*item_price AS expanded_price  </p> <p> FROM OrderItems  </p> <p> WHERE order_num = 20008; </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1489782616810" ID="ID_1852587742" MODIFIED="1490168380977" POSITION="left" TEXT="Функции"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Сильно отличаются в разных СУБД </p> </body> </html></richcontent> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1489782763215" ID="ID_433321173" MODIFIED="1490001925950" TEXT="CONVERT()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> DB2&Postgre - CAST() </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1489782999483" ID="ID_212005682" MODIFIED="1490168380987" TEXT="Текстовые"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489782705395" ID="ID_628111166" MODIFIED="1490001925966" TEXT="SUBSTRING()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Access - MID(), DB2, Postgre - SUBSTR() </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489780633070" ID="ID_373516177" MODIFIED="1490001925982" TEXT="TRIM()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> обрезает пробелы слева и справа </p> <p> SELECT TRIM(CONCAT(vend_name, ' (', vend_country, ')')) </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1489780577014" ID="ID_1918366714" MODIFIED="1490001925982" TEXT="RTRIM()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> обрезает пробелы справа </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1489780639428" ID="ID_1817759613" MODIFIED="1490001925997" TEXT="LTRIM()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> обрезает пробелы слева </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1489783351506" ID="ID_1229131285" MODIFIED="1489783455442" TEXT="LCASE () в Access"> <font NAME="SansSerif" SIZE="12"/> </node> </node> </node> <node COLOR="#990000" CREATED="1489783351500" ID="ID_1400217542" MODIFIED="1489783367323" TEXT="LEFT (str, num)"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1489783378237" ID="ID_732873898" MODIFIED="1489783383271" TEXT="левая подстрока"/> </node> <node COLOR="#990000" CREATED="1489783480453" ID="ID_296560443" MODIFIED="1489783496397" TEXT="RIGHT(str,num)"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1489783497884" ID="ID_326282480" MODIFIED="1489783502297" TEXT="правая подстрока"/> </node> <node COLOR="#990000" CREATED="1489783351502" ID="ID_297560491" MODIFIED="1489783409591" TEXT="LENGTH() / DATALENGTH() / LEN()"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1489783413297" ID="ID_149780680" MODIFIED="1489783419218" TEXT="длина строки"/> </node> <node COLOR="#990000" CREATED="1489783079843" ID="ID_1258687620" MODIFIED="1490001926013" TEXT="UPPER()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> SELECT vend_name, UPPER(vend_name) AS vend_name_upcase </p> <p> FROM Vendors </p> <p> ORDER BY vend_name; </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1489783558444" ID="ID_31338759" MODIFIED="1489783566949" TEXT="UCASE - Access"/> </node> <node COLOR="#990000" CREATED="1489783351505" ID="ID_253224499" MODIFIED="1489783351505" TEXT="LOWER()"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489783351510" ID="ID_1586460594" MODIFIED="1490001926028" TEXT="SOUNDEX ()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> ищет даже неверные записи </p> <p> SELECT cust_name, cust_contact </p> <p> FROM Customers </p> <p> WHERE  SOUNDEX(cust_contact) = SOUNDEX('Mishel Grim '); // в базе Michelle Green </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1489783531644" ID="ID_1810324580" MODIFIED="1489783536833" TEXT="фонетический текст"/> </node> <node COLOR="#990000" CREATED="1489780263484" ID="ID_52418909" MODIFIED="1490001926044" TEXT="'+', '||', CONCAT () - конкатенация"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> не работает в MySQL </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1489780523589" ID="ID_1665273424" MODIFIED="1489833760693" TEXT="SELECT CONCAT(vend_name, ' (', vend_country, ')')"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1489780539885" ID="ID_1469429550" MODIFIED="1489833760695" TEXT="SELECT vend_name | | ' (' | | vend_country | | ') '"> <font NAME="SansSerif" SIZE="12"/> </node> </node> </node> <node COLOR="#00b439" CREATED="1489783007727" ID="ID_1272649830" MODIFIED="1490168380990" TEXT="Числовые"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489784226213" ID="ID_411923160" MODIFIED="1489784226213" TEXT="ABS ()"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489784226215" ID="ID_212763878" MODIFIED="1489784226216" TEXT="COS ()"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489784226216" ID="ID_59791149" MODIFIED="1489784226217" TEXT="ЕХР ()"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489784226219" ID="ID_224812433" MODIFIED="1489784232085" TEXT="PI ()"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489784226223" ID="ID_1330128511" MODIFIED="1489784226224" TEXT="SIN ()"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489784226225" ID="ID_1701214845" MODIFIED="1489784235605" TEXT="SQRT ()"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489784226226" ID="ID_445847628" MODIFIED="1489784226227" TEXT="TAN ()"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1489783015685" ID="ID_1015367679" MODIFIED="1489784399911" TEXT="Даты и времени"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489782826662" ID="ID_345020250" MODIFIED="1490001926075" TEXT="CURDATE() || CURRENT_DATE ()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> В  Access  используется  функция  NOW  ().  В  DB2  и </p> <p> PostgreSQL  –  CURRENT_DATE.  В  MySQL </p> <p> используется  функция  CURDATE  ()  .  В  Oracle  – </p> <p> SYSDATE. В SQL Server и Sybase – GETDATE () </p> <p> Таблица 17.1. Получение значения даты из системы </p> <p> СУБД  Функция/переменная </p> <p> Access  NOW () </p> <p> DB2   CURRENT_DATE </p> <p> MySQL  CURRENT_DATE() </p> <p> Oracle  SYSDATE </p> <p> PostgreSQL   CURRENT_DATE </p> <p> SQL Server   GETDATE () </p> <p> Sybase  GETDATE () </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489783958877" ID="ID_237065767" MODIFIED="1490001926091" TEXT="DATEPART () || YEAR() mysql"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> DATE_PART('year', order_date) - postgre </p> <p> WHERE YEAR(order_date) = 2004; - mysql </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1489784387460" ID="ID_415567837" MODIFIED="1490168380994" TEXT="Статистические"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489784414779" ID="ID_1867768462" MODIFIED="1490001926106" TEXT="AVG () - среднее знач столбца"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Игнорирует NULL </p> <p> SELECT AVG(prod_price) AS avg_price </p> <p> FROM Products </p> <p> WHERE vend_id = 'DLL01'; </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489784414781" ID="ID_278461576" MODIFIED="1490001926106" TEXT="COUNT() число строк"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> COUNT(*) - c NULL; </p> <p> COUNT(column) - без NULL; </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489784414782" ID="ID_559252147" MODIFIED="1490001926122" TEXT="МАХ ()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> NULL игнорируется </p> <p> Может работать и с текстом(датами) </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489784414784" ID="ID_1502235654" MODIFIED="1490001926138" TEXT="MIN ()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> NULL игнорируется </p> <p> Может работать и с текстом(датами) </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489784414786" ID="ID_1496900772" MODIFIED="1490001926138" TEXT="SUM ()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Игнорирует NULL </p> <p> SELECT SUM(item_price*quantity) AS total_price </p> <p> FROM OrderItems </p> <p> WHERE order_num = 20005; </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489785057888" ID="ID_1498323863" MODIFIED="1490006995303" TEXT="DISTINCT"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Доп условия для статистики. С AVG() и COUNT() - без дубликатов по значению </p> <p> SELECT AVG(DISTINCT prod_price) AS avg_price </p> <p> FROM Products </p> <p> WHERE vend_id = 'DLL01';  </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489785346235" ID="ID_1186297751" MODIFIED="1490296588723" TEXT="Комбинирование"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> SELECT COUNT(*) AS num_items, </p> <p> MIN(prod_price) AS price_min,  </p> <p> MAX(prod_price) AS price_max,  </p> <p> AVG(prod_price) AS proce_avg </p> <p> FROM Products; </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1489783030045" ID="ID_1978377163" MODIFIED="1489784413657" TEXT=" Системные"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> </node> <node COLOR="#0033ff" CREATED="1490007314809" ID="ID_400718501" MODIFIED="1490427048374" POSITION="right" TEXT="Таблицы/строки"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1489938216502" ID="ID_1679838515" MODIFIED="1490007353406" TEXT="Создание"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489938233885" ID="ID_1272817254" MODIFIED="1490007353406" TEXT="CREATE TABLE"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> CREATE TABLE Products </p> <p> ( </p> <p> prod_id CHAR(10) NOT NULL, </p> <p> vend_id CHAR(10) NOT NULL, </p> <p> prod_name CHAR(254) NOT NULL, </p> <p> prod_price DECIMAL(8,2) NOT NULL, </p> <p> prod_desc VARCHAR(IOOO) NULL </p> <p> ) ; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489938615875" ID="ID_159365722" MODIFIED="1490007353406" TEXT="DEFAULT"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1489938639827" ID="ID_353247453" MODIFIED="1490007353406" TEXT="quantity INTEGER NOT NULL DEFAULT 1,"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1489939227355" ID="ID_1218668001" MODIFIED="1490007353406" TEXT="RENAME"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1489934976875" ID="ID_1859048518" MODIFIED="1490007353421" TEXT="Добавление"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> можно добавить неполное кол-во столбцов, но тогда должны быть значения по умолчанию либо допустимо Null </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489934980221" ID="ID_1226045147" MODIFIED="1490007353421" TEXT="INSERT INTO table VALUES(...)- без указания полей"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p>  INSERT INTO Customers  </p> <p> VALUES('1000000006 ' , </p> <p> ' Toy Land',  </p> <p> ...); </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489935353158" ID="ID_937607379" MODIFIED="1490007353421" TEXT="INSERT INTO table(col...) VALUES(...)- с полями"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p>  INSERT INTO Customers(cust_id,  </p> <p> cust_name, </p> <p> ...) VALUES('1000000006', </p> <p> 'Toy Land', </p> <p> ...); </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489936945178" ID="ID_1991620532" MODIFIED="1500390150169" TEXT="INSERT INTO t1 SELECT * FROM ...- импорт"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489937134343" ID="ID_1900324843" MODIFIED="1500390240489" TEXT="SELECT * INTO t1 FROM ...- экспорт"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489937280877" ID="ID_1176540883" MODIFIED="1490007353421" TEXT="CREATE TABLE new_table AS SELECT ... - mysql&oracle"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1489937440750" ID="ID_583910610" MODIFIED="1490007353421" TEXT="Изменение"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489938846040" ID="ID_43204548" MODIFIED="1490295814748" TEXT="ALTER TABLE"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> ALTER TABLE Vendors </p> <p> ADD vend_phone CHAR(20); </p> <p> -------------------------------------------- </p> <p> ALTER TABLE Vendors </p> <p> DROP COLUMN vend_phone; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489937450779" ID="ID_259129610" MODIFIED="1490295814811" TEXT="UPDATE"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> можно использовать позапросы и from </p> <p> UPDATE Customers </p> <p> SET cust_contact = 'Sam Roberts', </p> <p> cust_email = 'sam@toyland.com' </p> <p> WHERE cust_id = '1000000006'; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1489937707328" ID="ID_1418855915" MODIFIED="1490007353421" TEXT="Удаление"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489937717836" ID="ID_657618061" MODIFIED="1490007353421" TEXT="DELETE FROM table WHERE ..."> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490203157729" ID="ID_1608188990" MODIFIED="1490203170550" TEXT="DROP TABLE ..."> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489937845860" ID="ID_420981117" MODIFIED="1490007353437" TEXT="TRUNCATE TABLE"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1489782585881" ID="ID_1026184175" MODIFIED="1490168380965" POSITION="right" TEXT="Операторы"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1489602121218" ID="ID_1675007563" MODIFIED="1489782590937" TEXT="SELECT"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490296086908" ID="ID_1406481595" MODIFIED="1490296340573" TEXT="SELECT [DISTINCT] <список столбцов>"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490296115548" ID="ID_645874408" MODIFIED="1490296325043" TEXT="FROM <имя табл>"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490296159915" ID="ID_1216544218" MODIFIED="1490296320464" TEXT="[JOIN <table> ON <condition>]"/> </node> <node COLOR="#990000" CREATED="1490296195679" ID="ID_1459383763" MODIFIED="1490296310504" TEXT="[WHERE <condition>]"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490296213057" ID="ID_467724353" MODIFIED="1490296303570" TEXT="[GROUP BY <columns for group> [HAVING <condition> ]]"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490296344354" ID="ID_1973623358" MODIFIED="1490296355003" TEXT="[ORDER BY <columns>"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1489602124643" ID="ID_989321237" MODIFIED="1489782600981" TEXT="FROM"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1489602128672" ID="ID_1835127442" MODIFIED="1489784789558" TEXT="ORDER BY"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> ASCENDING - по возрастанию </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489776934461" ID="ID_457518995" MODIFIED="1489782602408" TEXT="by name"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489776939199" ID="ID_984700809" MODIFIED="1489782602409" TEXT="by column number"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489777143199" ID="ID_855362607" MODIFIED="1489782602409" TEXT="последнее в запросе"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489777260197" ID="ID_188386356" MODIFIED="1489782602410" TEXT="можно по невидимым столбцам"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489777283668" ID="ID_1246772292" MODIFIED="1489784789575" TEXT="DESC (обратный порядок)"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> ORDER BY prod_price DESC || ORDER BY prod_price DESC, prod_name; DESCENDING </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1489602131695" ID="ID_307705886" MODIFIED="1489782604939" TEXT="WHERE"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489777798702" ID="ID_1979961496" MODIFIED="1489782604940" TEXT="= - равно"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489777800367" ID="ID_1364854078" MODIFIED="1489782604940" TEXT="<> || != - не равно"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489777808708" ID="ID_1887527947" MODIFIED="1489782604941" TEXT="< | > | <= | >="> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489777846142" ID="ID_69163766" MODIFIED="1489782604941" TEXT="!> | !< - не больше/меньше"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489777849257" ID="ID_1562669980" MODIFIED="1489784789591" TEXT="BETWEEN - между"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> WHERE prod_price BETWEEN 5 AND 10; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489777858193" ID="ID_632478940" MODIFIED="1489784789600" TEXT="IS NULL - это null"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> WHERE prod_price IS NULL; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489778167162" ID="ID_735360501" MODIFIED="1489784789611" TEXT="AND и &&(mysql)"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> SELECT prod_name, prod_price  </p> <p> FROM Products </p> <p> WHERE (vend_id = 'DLL01' OR vend_id = 'BRS0l')  </p> <p> AND prod_price >= 10; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489778170033" ID="ID_126360664" MODIFIED="1489782604943" TEXT="OR и || (mysql)"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489778420996" ID="ID_1615608252" MODIFIED="1489784789625" TEXT="IN"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> в WHERE тоже, что OR: WHERE vend_id IN ('DLL01', 'BRS01')   </p> <p> + можно использовать для подзапросов </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489778778030" ID="ID_911374332" MODIFIED="1489782604945" TEXT="NOT"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1489778836845" ID="ID_1836967019" MODIFIED="1504247126698" TEXT="LIKE - предикат"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> текстовые метасимволы. Самые медленные </p> </body> </html> </richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1489779048239" ID="ID_60092137" MODIFIED="1489820870331" TEXT="% - любой текст"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> то же, что и * в regexp (regular expressions) </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1489779068007" ID="ID_847542423" MODIFIED="1489782607190" TEXT="WHERE prod_name LIKE 'Fish%';"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#111111" CREATED="1489779339495" ID="ID_1465904817" MODIFIED="1489820870332" TEXT="_ - любой символ"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1489779364640" ID="ID_745387306" MODIFIED="1489782607191" TEXT="WHERE prod_name LIKE '__ inch teddy bear';"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#111111" CREATED="1489779451036" ID="ID_914613909" MODIFIED="1489820870332" TEXT="[ad] - на 'a'&'d'"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> не работает в MySQL </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1489779466072" ID="ID_589044952" MODIFIED="1489782607193" TEXT="WHERE cust_contact LIKE '[JM]% '"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#111111" CREATED="1489779775313" ID="ID_1154938070" MODIFIED="1489820870333" TEXT="[^ad] - исключая"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Access использует [!AD] - не работает в MySQL </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1489779979787" ID="ID_1583683712" MODIFIED="1489782607195" TEXT="WHERE cust_contact LIKE '[^JM]%'"> <font NAME="SansSerif" SIZE="12"/> </node> </node> </node> </node> <node COLOR="#00b439" CREATED="1489818663854" ID="ID_536211369" MODIFIED="1489931020038" TEXT="GROUP BY"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> нельзя использовать псевдонимы  </p> <p> для статистических вычислений </p> <p> указывает СУБД группировать данные и затем выполнять вычисление по каждой группе, а не по всему набору результатов. </p> <p> SELECT vend_id, COUNT(*) AS num_prods  </p> <p> FROM Products  </p> <p> GROUP BY vend_id; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489820190253" ID="ID_1713870399" MODIFIED="1489820839788" TEXT="HAVING"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> то же, что и WHERE, только с группами </p> <p> SELECT cusC_id, COUNT(*) AS orders  </p> <p> FROM Orders  </p> <p> GROUP ВУ cust_id  </p> <p> HAVING COUNT(*) >= 2; </p> <p> ----------------------------- </p> <p> SELECT vend_id, COUNT(*) AS num_prods  </p> <p> FROM Products  </p> <p> WHERE prod_price >= 4  </p> <p> GROUP BY vend_id  </p> <p>   HAVING COUNT(*) >= 2; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1489833710957" ID="ID_20013013" MODIFIED="1490168380949" POSITION="right" TEXT="Объединение"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> без WHERE число записей будет перемножение таблиц (декартово, перекрестное произведение) </p> </body> </html></richcontent> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1489838588421" ID="ID_1973552039" MODIFIED="1490001926247" TEXT="Естесственное"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> SELECT C.*, O.order_num, O.order_date, OI.prod_id  </p> <p> FROM Customers AS C, Orders AS O, OrderItems AS OI  </p> <p> WHERE C.cust_id = O.cust_id </p> <p> AND OI.order_num = O.order_num </p> <p> AND prod_id = 'RGAN01'; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1489836084853" ID="ID_898083385" MODIFIED="1490001926262" TEXT="По эквивалентности"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> без WHERE число записей будет перемножение таблиц (декартово, перекрестное произведение) </p> <p> SELECT vend_name, prod_name, prod_price </p> <p> FROM Vendors, Products </p> <p> WHERE Vendors.vend_id = Products.vend_id; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489836303725" ID="ID_1025183998" MODIFIED="1489836317380" TEXT="FROM t1, t2 WHERE ..."> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1489836113293" ID="ID_1483903188" MODIFIED="1500880920220" TEXT="Внутреннее"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> SELECT vend_name, prod_name, prod_price </p> <p> FROM Vendors INNER JOIN Products </p> <p> ON Vendors.vend_id = Products.vend_id; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489836320614" ID="ID_958922212" MODIFIED="1489836332604" TEXT="FROM t1 INNER JOIN t2 ON ..."> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1489839167550" ID="ID_1206483458" MODIFIED="1490001926309" TEXT="Внешнее"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> LEFT/RIGHT указывает, из каких таблиц будут включены строки, не встречающиеся в другой таблице (пустые поля будут NULL) </p> <ol> <li> подсчета количества заказов каждого клиента, включая клиентов, которые еще не сделали заказ; </li> <li> составления перечня продуктов с указанием количества заказов на них, включая продукты, которые никто из клиентов не захотел заказывать; </li> <li> вычисления  средних  объемов  продаж  с  учетом  клиентов,  которые  еще  не сделали заказ. </li> </ol> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1489839926805" ID="ID_1193695206" MODIFIED="1489840178637" TEXT="LEFT&RIGHT"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1489839383112" ID="ID_1729973137" MODIFIED="1489839939807" TEXT="FROM t1 LEFT OUTER JOIN Orders ON"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1489839785635" ID="ID_1857033510" MODIFIED="1490001926325" TEXT="*= & =* - not in mysql"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> SELECT Customers.cust_id, Orders.order_num </p> <p> FROM Customers, Orders </p> <p> WHERE Customers.cust_id *= Orders.cust_id; </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1489839893688" ID="ID_29839200" MODIFIED="1489839947839" TEXT="(+)= & =(+) - in Oracle"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1489839933089" ID="ID_81375268" MODIFIED="1490001926340" TEXT="FULL"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> SELECT Customers.cust_id, Orders.order_num  </p> <p> FROM Orders FULL OUTER JOIN Customers  </p> <p> ON Orders.cust_id = Customers.cust_id; </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1489840153040" ID="ID_1000138584" MODIFIED="1489840162753" TEXT="not in mysql"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1489942720521" ID="ID_799907284" MODIFIED="1490168379339" POSITION="right" TEXT="Представления"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> могут быть вложенными </p> <p> SELECT cust_name, cust_contact </p> <p> FROM ProductCustomers </p> <p> WHERE prod_id = 'RGAN01'; </p> </body> </html></richcontent> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1489943061177" ID="ID_1392863283" MODIFIED="1490014289040" TEXT="нельзя ORDER BY"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <icon BUILTIN="full-1"/> </node> <node COLOR="#00b439" CREATED="1489943095714" ID="ID_1084693974" MODIFIED="1490014290790" TEXT="нет триггеров"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <icon BUILTIN="full-2"/> </node> <node COLOR="#00b439" CREATED="1489943101226" ID="ID_1782234629" MODIFIED="1490014292649" TEXT="нет индексации"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <icon BUILTIN="full-3"/> </node> <node COLOR="#00b439" CREATED="1489943126647" ID="ID_737983206" MODIFIED="1490014294005" TEXT="нельзя вносить изменения?"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <icon BUILTIN="full-4"/> </node> <node COLOR="#00b439" CREATED="1489956148160" ID="ID_1844014843" MODIFIED="1490014296530" TEXT="для удобства/ инкапсуляции/ переформатирования"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <icon BUILTIN="full-5"/> </node> <node COLOR="#00b439" CREATED="1489943200594" ID="ID_1483869242" MODIFIED="1490168379365" TEXT="CREATE VIEW"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> CREATE VIEW ProductCustomers </p> <p> AS SELECT cust_name, cust_contact, prod_id </p> <p> FROM Customers, Orders, OrderlCems </p> <p> WHERE Customers.cust_id = Orders.cust_id </p> <p> AND OrderItems.order_num = Orders.order_num; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1489943228916" ID="ID_610604671" MODIFIED="1489943229987" TEXT="DROP VIEW"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> </node> <node COLOR="#0033ff" CREATED="1489925904681" ID="ID_792429342" MODIFIED="1490168380938" POSITION="right" TEXT="Комбинированные запросы"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1489925926749" ID="ID_575243098" MODIFIED="1490001926418" TEXT="UNION"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Удаляет повторы </p> <p> SELECT cust_name, cust_contact, cust_email </p> <p> FROM Customers </p> <p> WHERE cust_state IN ('IL','IN','MI') </p> <p> UNION </p> <p> SELECT cust_name, cust_contact, cust_email </p> <p> FROM Customers </p> <p> WHERE cust_name = 'Fun4All'; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1489926261136" ID="ID_798205297" MODIFIED="1490001926418" TEXT="UNOIN ALL"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Не удаляет повторы </p> <p> SELECT cust_name, cust_contact, cust_email </p> <p> FROM Customers </p> <p> WHERE cust_state IN ('IL','IN','MI') </p> <p> UNION ALL </p> <p> SELECT cust_name, cust_contact, cust_email </p> <p> FROM Customers </p> <p> WHERE cust_name = 'Fun4All'; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1489929728920" ID="ID_362625381" MODIFIED="1490001926434" TEXT="EXCEPT"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> есть в перов, нет во второй </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1489929733498" ID="ID_1242930064" MODIFIED="1490001926434" TEXT="INTERSECT"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> поля, которые есть в обеих таблицах </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> </node> <node COLOR="#0033ff" CREATED="1489956290777" ID="ID_193290109" MODIFIED="1490168380935" POSITION="left" TEXT="Хранимые процедуры"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> ОЧЕНЬ СИЛЬНО ЗАВИСЯТ ОТ СУБД </p> <p> CREATE PROCEDURE `new_procedure`(out ListCount integer) </p> <p> BEGIN </p> <p> SELECT COUNT(*) FROM Customers </p> <p> WHERE NOT cust_email IS NULL; </p> <p> SET ListCount := COUNT(*); </p> <p> END </p> <p> ---------Вызов---------------- </p> <p> set @x = null; </p> <p> call new_procedure(@x); </p> <p> select @x; </p> </body> </html></richcontent> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1490001882361" ID="ID_1405474876" MODIFIED="1490001886260" TEXT="Вызов"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490001070439" ID="ID_1917827082" MODIFIED="1490001926387" TEXT="EXECUTE"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> EXECUTE AddNewProduct ('JTS01' , </p> <p> 'Stuffed Eiffel Tower', </p> <p> 6.49, </p> <p> 'Plush stuffed toy with the text La Tour Eiffel in red white and blue ' ) </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490001957282" ID="ID_1823189728" MODIFIED="1490004561352" TEXT="CALL ... () - mysql"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <div class="line alt1"> <table> <tr> <td class="number"> <code>1</code> </td> <td class="content"> <code class="plain">CALL stored_procedure_name (param1, param2, ....)  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>2</code> </td> <td class="content"> <code class="spaces">  </code>  </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>3</code> </td> <td class="content"> <code class="plain">CALL procedure1(10 , </code><code class="string">'string parameter'</code> <code class="plain">, @parameter_var);</code> </td> </tr> </table> </div> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490001887253" ID="ID_1826300133" MODIFIED="1490001889605" TEXT="Создание"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490001742996" ID="ID_521289758" MODIFIED="1490001907659" TEXT="CREATE PROCEDURE"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> CREATE PROCEDURE MailingListCount </p> <p> (LisCCount OUT NUMBER) </p> <p> IS </p> <p> BEGIN </p> <p> SELECT * FROM Customers </p> <p> WHERE NOT cust_email IS NULL; </p> <p> ListCount : = SQL%ROWCOUNT; </p> <p> END; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490001742996" ID="ID_933993073" MODIFIED="1490001975637" TEXT="CREATE PROCEDURE-mysql"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <div class="line alt1"> <table> <tr> <td class="number"> <code>01</code> </td> <td class="content"> <code class="plain">DELIMITER //  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>02</code> </td> <td class="content"> <code class="spaces">  </code>  </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>03</code> </td> <td class="content"> <code class="keyword">CREATE</code> <code class="keyword">PROCEDURE</code> <code class="plain">`p2` ()  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>04</code> </td> <td class="content"> <code class="plain">LANGUAGE SQL  </code> </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>05</code> </td> <td class="content"> <code class="plain">DETERMINISTIC  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>06</code> </td> <td class="content"> <code class="plain">SQL SECURITY DEFINER  </code> </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>07</code> </td> <td class="content"> <code class="plain">COMMENT </code><code class="string">'A procedure'</code>  </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>08</code> </td> <td class="content"> <code class="keyword">BEGIN</code>  </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>09</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">SELECT</code> <code class="string">'Hello World !'</code><code class="plain">;  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>10</code> </td> <td class="content"> <code class="keyword">END</code><code class="plain">//</code> </td> </tr> </table> </div> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490001889952" ID="ID_73046882" MODIFIED="1490001891717" TEXT="Удаление"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490001992017" ID="ID_1035451936" MODIFIED="1490002001720" TEXT="DROP -mysql"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <table> <tr> <td class="number"> <code>1</code> </td> <td class="content"> <code class="keyword">DROP</code> <code class="keyword">PROCEDURE</code> <code class="plain">IF EXISTS p2;</code> </td> </tr> </table> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490002055600" ID="ID_622685339" MODIFIED="1490002059955" TEXT="Параметры"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490002060819" ID="ID_1966120051" MODIFIED="1490002143867" TEXT="IN - входящие (по умолчанию)"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <div class="line alt1"> <table> <tr> <td class="number"> <code>3</code> </td> <td class="content"> <code class="keyword">CREATE</code> <code class="keyword">PROCEDURE</code> <code class="plain">`proc_IN` (</code><code class="color1">IN</code> <code class="plain">var1 </code><code class="keyword">INT</code><code class="plain">)  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>4</code> </td> <td class="content"> <code class="keyword">BEGIN</code>  </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>5</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">SELECT</code> <code class="plain">var1 + 2 </code><code class="keyword">AS</code>  <code class="plain">result;  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>6</code> </td> <td class="content"> <code class="keyword">END</code><code class="plain">// </code> </td> </tr> </table> </div> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490002071559" ID="ID_1786376125" MODIFIED="1490002152369" TEXT="OUT - возвращаемые"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <div class="line alt1"> <table> <tr> <td class="number"> <code>3</code> </td> <td class="content"> <code class="keyword">CREATE</code> <code class="keyword">PROCEDURE</code> <code class="plain">`proc_OUT` (</code><code class="keyword">OUT</code> <code class="plain">var1 </code><code class="keyword">VARCHAR</code><code class="plain">(100))  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>4</code> </td> <td class="content"> <code class="keyword">BEGIN</code>  </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>5</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">SET</code> <code class="plain">var1 = </code><code class="string">'This is a test'</code><code class="plain">;  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>6</code> </td> <td class="content"> <code class="keyword">END</code> <code class="plain">// </code> </td> </tr> </table> </div> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490002083252" ID="ID_188110927" MODIFIED="1490002202555" TEXT="INOUT - входящий/выходящий"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <div class="line alt1"> <table> <tr> <td class="number"> <code>3</code> </td> <td class="content"> <code class="keyword">CREATE</code> <code class="keyword">PROCEDURE</code> <code class="plain">`proc_INOUT` (</code><code class="keyword">OUT</code> <code class="plain">var1 </code><code class="keyword">INT</code><code class="plain">)   //ошибка? inout</code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>4</code> </td> <td class="content"> <code class="keyword">BEGIN</code>  </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>5</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">SET</code> <code class="plain">var1 = var1 * 2;  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>6</code> </td> <td class="content"> <code class="keyword">END</code> <code class="plain">//</code> </td> </tr> </table> </div> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490002209066" ID="ID_158203873" MODIFIED="1490002244682" TEXT="Переменные"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <div class="line alt1"> <table> <tr> <td class="number"> <code>03</code> </td> <td class="content"> <code class="keyword">CREATE</code> <code class="keyword">PROCEDURE</code> <code class="plain">`var_proc` (</code><code class="color1">IN</code> <code class="plain">paramstr </code><code class="keyword">VARCHAR</code><code class="plain">(20))  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>04</code> </td> <td class="content"> <code class="keyword">BEGIN</code>  </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>05</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">DECLARE</code> <code class="plain">a, b </code><code class="keyword">INT</code> <code class="keyword">DEFAULT</code>  <code class="plain">5;  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>06</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">DECLARE</code> <code class="plain">str </code><code class="keyword">VARCHAR</code><code class="plain">(50);  </code> </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>07</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">DECLARE</code> <code class="plain">today </code><code class="keyword">TIMESTAMP</code>  <code class="keyword">DEFAULT</code> <code class="keyword">CURRENT_DATE</code><code class="plain">;  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>08</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">DECLARE</code> <code class="plain">v1, v2, v3 TINYINT;      </code> </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>09</code> </td> <td class="content"> <code class="spaces">  </code>  </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>10</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">INSERT</code> <code class="keyword">INTO</code> <code class="plain">table1 </code><code class="keyword">VALUES</code> <code class="plain">(a);  </code> </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>11</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">SET</code> <code class="plain">str = </code><code class="string">'I am a string'</code><code class="plain">;  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>12</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">SELECT</code> <code class="plain">CONCAT(str,paramstr), today </code><code class="keyword">FROM</code> <code class="plain">table2 </code><code class="keyword">WHERE</code> <code class="plain">b >=5;  </code> </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>13</code> </td> <td class="content"> <code class="keyword">END</code> <code class="plain">//</code> </td> </tr> </table> </div> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490002264103" ID="ID_584522248" MODIFIED="1490002268067" TEXT="Конструкции"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490002315405" ID="ID_276688535" MODIFIED="1490002353781" TEXT="IF"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <div class="line alt2"> <table> <tr> <td class="number"> <code>08</code> </td> <td class="content"> <code class="spaces">    </code><code class="plain">IF variable1 = 0 </code><code class="keyword">THEN</code>  </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>09</code> </td> <td class="content"> <code class="spaces">        </code><code class="keyword">SELECT</code> <code class="plain">variable1;  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>10</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">END</code> <code class="plain">IF;  </code> </td> </tr> </table> </div> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490002315405" ID="ID_517131193" MODIFIED="1490002369896" TEXT="CASE"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <div class="line alt2"> <table> <tr> <td class="number"> <code>08</code> </td> <td class="content"> <code class="spaces">    </code><code class="color2">CASE</code> <code class="plain">variable1  </code> </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>09</code> </td> <td class="content"> <code class="spaces">        </code><code class="keyword">WHEN</code> <code class="plain">0 </code><code class="keyword">THEN</code>  </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>10</code> </td> <td class="content"> <code class="spaces">            </code><code class="keyword">INSERT</code>  <code class="keyword">INTO</code> <code class="plain">table1 </code><code class="keyword">VALUES</code> <code class="plain">(param1);  </code> </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>11</code> </td> <td class="content"> <code class="spaces">        </code><code class="keyword">WHEN</code> <code class="plain">1 </code><code class="keyword">THEN</code>  </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>12</code> </td> <td class="content"> <code class="spaces">            </code><code class="keyword">INSERT</code>  <code class="keyword">INTO</code> <code class="plain">table1 </code><code class="keyword">VALUES</code> <code class="plain">(variable1);  </code> </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>13</code> </td> <td class="content"> <code class="spaces">        </code><code class="keyword">ELSE</code>  </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>14</code> </td> <td class="content"> <code class="spaces">            </code><code class="keyword">INSERT</code>  <code class="keyword">INTO</code> <code class="plain">table1 </code><code class="keyword">VALUES</code> <code class="plain">(99);  </code> </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>15</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">END</code> <code class="color2">CASE</code><code class="plain">;</code> </td> </tr> </table> </div> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490002315405" ID="ID_1457223111" MODIFIED="1490002315405" TEXT="ITERATE"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490002315405" ID="ID_1269075802" MODIFIED="1490002315405" TEXT="LEAVE LOOP"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490002315421" ID="ID_1458827110" MODIFIED="1490002407321" TEXT="WHILE"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <div class="line alt2"> <table> <tr> <td class="number"> <code>08</code> </td> <td class="content"> <code class="spaces">    </code><code class="plain">WHILE variable1 < param1 DO  </code> </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>09</code> </td> <td class="content"> <code class="spaces">        </code><code class="keyword">INSERT</code> <code class="keyword">INTO</code>  <code class="plain">table1 </code><code class="keyword">VALUES</code> <code class="plain">(param1);  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>10</code> </td> <td class="content"> <code class="spaces">        </code><code class="keyword">SELECT</code> <code class="color2">COUNT</code><code class="plain">(*) </code><code class="keyword">INTO</code> <code class="plain">variable2 </code><code class="keyword">FROM</code> <code class="plain">table1;  </code> </td> </tr> </table> </div> <div class="line alt1"> <table> <tr> <td class="number"> <code>11</code> </td> <td class="content"> <code class="spaces">        </code><code class="keyword">SET</code> <code class="plain">variable1 = variable1 + 1;  </code> </td> </tr> </table> </div> <div class="line alt2"> <table> <tr> <td class="number"> <code>12</code> </td> <td class="content"> <code class="spaces">    </code><code class="keyword">END</code> <code class="plain">WHILE; </code> </td> </tr> </table> </div> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490002315421" ID="ID_122324758" MODIFIED="1490002315421" TEXT="REPEAT"> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1489823117310" ID="ID_605953922" MODIFIED="1490168379400" POSITION="right" TEXT="Подзапросы"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> только 1 столбец в подзапросе + снижают производительность </p> <p> //поиск покупателей, купивших товар у производителя RGAN01 </p> <p> SELECT cust_name </p> <p> FROM customers </p> <p> WHERE cust_id IN </p> <p>     (SELECT cust_id </p> <p>     FROM orders </p> <p>     WHERE order_num IN  </p> <p>         (SELECT order_num </p> <p>         FROM orderitems </p> <p>         WHERE prod_id='RGAN01')); </p> <p> ------------------------------------------ </p> <p> //кол-во покупок каждого покупателя </p> <p> </p> <p> SELECT cust_name, </p> <p>     (SELECT COUNT(*) FROM orders </p> <p>     WHERE orders.cust_id = customers.cust_id) as order_count </p> <p> FROM customers </p> <p> ORDER BY cust_name; </p> </body> </html></richcontent> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1489833800945" ID="ID_980401050" MODIFIED="1489833803171" TEXT="IN"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1489833810142" ID="ID_450275374" MODIFIED="1489833817014" TEXT="(SELECT ...)"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> </node> <node COLOR="#0033ff" CREATED="1490007200508" ID="ID_1056357509" MODIFIED="1490168379434" POSITION="left" TEXT="Транзакции"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> SQL Server: </p> <p> BEGIN TRANSACTION </p> <p> DELETE Orderltems WHERE order_num = 12345 </p> <p> DELETE Orders WHERE order_num = 12345 </p> <p> COMMIT TRANSACTION </p> </body> </html></richcontent> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1490007450819" ID="ID_1118286910" MODIFIED="1490168379442" TEXT="COMMIT"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> DELETE FROM Orders; </p> <p> ROLLBACK; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490007456006" ID="ID_731944621" MODIFIED="1490007459081" TEXT="ROLLBACK"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490010701806" ID="ID_1046168790" MODIFIED="1490010701808" TEXT="Транзакция (Transaction). Блок операторов SQL."> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490010715875" ID="ID_1302783266" MODIFIED="1490010715876" TEXT="Отмена (Rollback)"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490010868531" ID="ID_1994981528" MODIFIED="1490010881407" TEXT="INSERT"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490010868533" ID="ID_729287642" MODIFIED="1490010878258" TEXT="UPDATE"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490010878744" ID="ID_265574768" MODIFIED="1490010878744" TEXT="DELETE"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490010721049" ID="ID_1796231706" MODIFIED="1490010721050" TEXT="Фиксация (Commit)"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490010727462" ID="ID_1246426519" MODIFIED="1490010727463" TEXT="Точка сохранения (Savepoint)"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490012212208" ID="ID_1754894826" MODIFIED="1490012212209" TEXT="SAVEPOINT deletel;"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490012255563" ID="ID_877685456" MODIFIED="1490012255564" TEXT="ROLLBACK TO deletel;"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490010938610" ID="ID_1909855965" MODIFIED="1490010939459" TEXT="START TRANSACTION "> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> </node> <node COLOR="#0033ff" CREATED="1490012758909" ID="ID_504515698" MODIFIED="1490103779097" POSITION="left" TEXT="Курсоры"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1490012793755" ID="ID_353833161" MODIFIED="1490168379468" TEXT="Результирующие множества."> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> наборы строк, с которыми работают операторы SQL </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490012856720" ID="ID_1054646123" MODIFIED="1490012856721" TEXT="Результаты, возвращаемые в ответ на SQL-запрос."> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490013018649" ID="ID_334017216" MODIFIED="1490013021335" TEXT="возможности"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490013028538" ID="ID_1491090033" MODIFIED="1490014303158" TEXT="помечать курсор как предназначенный только для чтения"> <font NAME="SansSerif" SIZE="14"/> <icon BUILTIN="full-1"/> </node> <node COLOR="#990000" CREATED="1490013036030" ID="ID_1233065866" MODIFIED="1490014304994" TEXT="управлять направлением выполняемых операций"> <font NAME="SansSerif" SIZE="14"/> <icon BUILTIN="full-2"/> </node> <node COLOR="#990000" CREATED="1490013046614" ID="ID_833609977" MODIFIED="1490014306386" TEXT="помечать некоторые столбцы как редактируемые"> <font NAME="SansSerif" SIZE="14"/> <icon BUILTIN="full-3"/> </node> <node COLOR="#990000" CREATED="1490013071075" ID="ID_441532987" MODIFIED="1490014307717" TEXT="области видимости, благодаря чему курсор может быть доступен для всех запросов"> <font NAME="SansSerif" SIZE="14"/> <icon BUILTIN="full-4"/> </node> <node COLOR="#990000" CREATED="1490013124098" ID="ID_1382230889" MODIFIED="1490014311289" TEXT="Указание СУБД скопировать выбранные данные, чтобы они не изменялись в промежуток времени между открытием курсора и обращением к нему"> <font NAME="SansSerif" SIZE="14"/> <icon BUILTIN="full-5"/> </node> </node> <node COLOR="#00b439" CREATED="1490013236149" ID="ID_13284424" MODIFIED="1490013237810" TEXT="работа"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490013247679" ID="ID_209552232" MODIFIED="1490013247679" TEXT="объявить (определить)"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490013307680" ID="ID_502534870" MODIFIED="1490168379487" TEXT="DECLARE"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> DECLARE CustCursor CURSOR </p> <p> FOR </p> <p> SELECT * FROM Customers </p> <p> WHERE cust_email IS NULL </p> </body> </html></richcontent> </node> </node> <node COLOR="#990000" CREATED="1490013255555" ID="ID_523608298" MODIFIED="1490013255555" TEXT="открыт для использования"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490013365757" ID="ID_1065851476" MODIFIED="1490013368767" TEXT="OPEN CURSOR"/> </node> <node COLOR="#990000" CREATED="1490013268834" ID="ID_1985345082" MODIFIED="1490013273781" TEXT="извлечены (выбраны) строки"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490013382275" ID="ID_827952742" MODIFIED="1490168379508" TEXT="FETCH"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> DECLARE Scust_id CHAR(10), </p> <p> @cust_name CHAR(50), </p> <p> @custaddress CHAR(50), </p> <p> @cust_city CHAR(50), </p> <p> @cust_state CHAR(5), </p> <p> @cust_ZIP CHAR{10), </p> <p> @cust_country CHAR(50), </p> <p> @Scust_contact CHAR(50), </p> <p> @cust_email CHAR(255),  </p> <p> OPEN CustCursor  </p> <p> FETCH NEXT FROM CustCursor </p> <p> INTO ecust_id, @cust_name, @cust_address, </p> <p> @cust_city, @cust_state, @cust_ZIP, </p> <p> @cust_country, @cust_contact, @cust_email </p> <p> WHILE @@FETCH_STATUS = 0 </p> <p> BEGIN </p> <p> ... </p> <p> FETCH NEXT FROM CustCursor  </p> <p> INTO Scust id, @cust_name, @cust_address, </p> <p> @cust_city, @cust_state, @cust ZIP, </p> <p> ecust_country, @cust_contact, @cust_email </p> <p> END </p> <p> CLOSE CustCursor </p> </body> </html></richcontent> </node> </node> <node COLOR="#990000" CREATED="1490013282146" ID="ID_466467852" MODIFIED="1490013284731" TEXT="закрытие"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490013571964" ID="ID_481694980" MODIFIED="1490013571965" TEXT="CLOSE"> <node COLOR="#111111" CREATED="1490013590134" ID="ID_1275552565" MODIFIED="1490013595679" TEXT="++DEALLOCATE CURSOR"/> </node> </node> </node> </node> <node COLOR="#0033ff" CREATED="1490014880722" ID="ID_753436324" MODIFIED="1490103788212" POSITION="right" TEXT="Доп. возможности"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1490014083227" ID="ID_1671245900" MODIFIED="1490168380925" TEXT="Ссылочная целостность"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490014093745" ID="ID_1945045139" MODIFIED="1490014892260" TEXT="Первичные ключи"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490014116137" ID="ID_1564436288" MODIFIED="1490014892261" TEXT="Уникальный"> <font NAME="SansSerif" SIZE="12"/> <icon BUILTIN="full-1"/> </node> <node COLOR="#111111" CREATED="1490014126560" ID="ID_503784335" MODIFIED="1490014892264" TEXT="Not NULL"> <font NAME="SansSerif" SIZE="12"/> <icon BUILTIN="full-2"/> </node> <node COLOR="#111111" CREATED="1490014141950" ID="ID_1774697441" MODIFIED="1490014892265" TEXT="не может быть обновлен"> <font NAME="SansSerif" SIZE="12"/> <icon BUILTIN="full-3"/> </node> <node COLOR="#111111" CREATED="1490014154948" ID="ID_731206223" MODIFIED="1490014892266" TEXT="не может быть использован повторно"> <font NAME="SansSerif" SIZE="12"/> <icon BUILTIN="full-4"/> </node> <node COLOR="#111111" CREATED="1490014757614" ID="ID_1517249411" MODIFIED="1490014892267" TEXT="только один"> <font NAME="SansSerif" SIZE="12"/> <icon BUILTIN="full-5"/> </node> <node COLOR="#111111" CREATED="1490014179099" ID="ID_387482528" MODIFIED="1490014892267" TEXT="PRIMARY KEY"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> ALTER TABLE Vendors </p> <p> ADD CONSTRAINT PRIMARY KEY (vend_id); </p> <p> ---------------- </p> <p> vend_id CHAR(10) NOT NULL PRIMARY КЕY, </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1490014430029" ID="ID_1782190959" MODIFIED="1490014892268" TEXT="Внешние ключи"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490014579314" ID="ID_1182293996" MODIFIED="1490014892269" TEXT="REFERENCES table"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> cust_id CHAR (10) NOT NULL REFERENCES table </p> <p> -------------------------------------- </p> <p> ALTER TABLE Customers </p> <p> ADD CONSTRAINT </p> <p> FOREIGN KEY (cust id) REFERENCES Customers (cust id) </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1490014700126" ID="ID_228737892" MODIFIED="1490014892269" TEXT="являются первичными во внешней таблице"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1490014720653" ID="ID_1401417362" MODIFIED="1490014892270" TEXT="в не-х СУБД есть каскадное удаление"> <font NAME="SansSerif" SIZE="12"/> </node> </node> </node> <node COLOR="#00b439" CREATED="1490014903044" ID="ID_644432132" MODIFIED="1490168380918" TEXT="Уникальность"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> может быть NULL </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490014930115" ID="ID_1815024889" MODIFIED="1490014930781" TEXT="UNIQUE"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490014965332" ID="ID_1559709132" MODIFIED="1490014965953" TEXT="CONSTRAINT"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490015003768" ID="ID_1116776850" MODIFIED="1490025491666" TEXT="Значения столбца - CHECK"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490015020744" ID="ID_762883369" MODIFIED="1490015032331" TEXT="min & max"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490015032692" ID="ID_581044095" MODIFIED="1490015035580" TEXT="range"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490015049044" ID="ID_906878731" MODIFIED="1490168379572" TEXT="по значению"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> quantity INTEGER NOT NULL CHECK (quantity > 0),  // больше 0 </p> <p> ------------ </p> <p> ADD  CONSTRAINT  CHECK   (gender  LIKE   ' [MF] ')  // только M&F </p> <p> ----------- </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490427390467" ID="ID_742614966" MODIFIED="1490427468473" TEXT="FOREIGN KEY"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490015230182" ID="ID_1858121340" MODIFIED="1490015240371" TEXT="Пользовательские типы данных"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490015242323" ID="ID_388834268" MODIFIED="1490015255190" TEXT="можно задать ограничения"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490015270816" ID="ID_1028982287" MODIFIED="1490168380915" TEXT="Индексы"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490015630715" ID="ID_1441012073" MODIFIED="1490168380917" TEXT="применение"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490015488324" ID="ID_464397934" MODIFIED="1490015641572" TEXT="ускоряют выборку, замедляют добавление/изменение/удаление"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1490015524347" ID="ID_1754772584" MODIFIED="1490015641574" TEXT="место на жестком диске"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1490015531416" ID="ID_1593950364" MODIFIED="1490015641575" TEXT="не все данные подходят"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1490015583930" ID="ID_1751515024" MODIFIED="1490015641577" TEXT="для фильтрации / сортировки"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1490015609686" ID="ID_325795396" MODIFIED="1490015641588" TEXT="несколько столбцов"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1490015645168" ID="ID_432254784" MODIFIED="1490015655956" TEXT="утилиты эффективности"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490015664757" ID="ID_99427094" MODIFIED="1490015674001" TEXT="CREATE INDEX"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> CREATE INDEX prod_name_ind  </p> <p> ON PRODUCTS (prod_name); </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490015711758" ID="ID_125832267" MODIFIED="1490015716884" TEXT="необходим пересмотр"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490016190375" ID="ID_228370557" MODIFIED="1490168379587" TEXT="Триггеры"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> SQL Server: </p> <p> CREATE TRIGGER customer_state </p> <p> ON Customers </p> <p> FOR INSERT, UPDATE </p> <p> AS </p> <p> UPDATE Customers </p> <p> SET cust_state  =  Upper(cust_state) </p> <p> WHERE Customers.cust_id  =  inserted.cust_id; </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490016283089" ID="ID_1860521513" MODIFIED="1490016296800" TEXT="выполняются при Insert/delete/update"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490016298909" ID="ID_1978361772" MODIFIED="1490016305780" TEXT="привязаны к таблице"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490016326124" ID="ID_1688004471" MODIFIED="1490016329143" TEXT="Применение"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490016329143" ID="ID_106604906" MODIFIED="1490016343432" TEXT="обеспечение непротиворечивости"/> <node COLOR="#111111" CREATED="1490016390845" ID="ID_1662242156" MODIFIED="1490016393480" TEXT="доп проверка"/> <node COLOR="#111111" CREATED="1490016394035" ID="ID_1225051288" MODIFIED="1490016409774" TEXT="подсчет вычисляемых полей, дат/времени"/> <node COLOR="#111111" CREATED="1490016435449" ID="ID_56338972" MODIFIED="1490168379603" TEXT="для действий к другим таблицам"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> для  выполнения  действий  по  отношению  к  другим  таблицам,  основанных  на </p> <p> изменениях,  которые  были  сделаны  в  какой-то  таблице  (например,  для  внесения </p> <p> записи в контрольный журнал с целью регистрации каждого случая обновления или </p> <p> удаления строки); </p> </body> </html></richcontent> </node> </node> <node COLOR="#990000" CREATED="1490426843339" ID="ID_1260029380" MODIFIED="1490426855152" TEXT="могут вызывать процедуры и другие триггеры"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490016509215" ID="ID_1279732128" MODIFIED="1490168379614" TEXT="CREATE TRIGGER"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Oracle // Postgre </p> <p> CREATE TRIGGER customer_state </p> <p> AFTER INSERT OR UPDATE </p> <p> FOR EACH ROW </p> <p> BEGIN </p> <p> UPDATE Customers </p> <p> SET cust_state = Upper(cust_state) </p> <p> WHERE Customers.cust_id = :OLD.cust_id </p> <p> END; </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490016771041" ID="ID_559774458" MODIFIED="1490016777057" TEXT="Безопасность"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490016785445" ID="ID_1685058502" MODIFIED="1490016786114" TEXT="GRANT"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490016791710" ID="ID_1298979475" MODIFIED="1490016792352" TEXT="REVOKE"> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1490019030103" ID="ID_306751388" MODIFIED="1490103780514" POSITION="left" TEXT="Принципы"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1490019034144" ID="ID_1364896641" MODIFIED="1490168380912" TEXT="ACID"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490019063864" ID="ID_1199045657" MODIFIED="1490019063864" TEXT="неделимость (Atomicity)"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490019063866" ID="ID_698771048" MODIFIED="1490019063866" TEXT="единообразие (Consistency)"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490019063867" ID="ID_1386668269" MODIFIED="1490019063868" TEXT="изоляция (Isolation)"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490019063868" ID="ID_209229058" MODIFIED="1490019063869" TEXT="надежность (Durability)"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490019082781" ID="ID_1982880965" MODIFIED="1490019089008" TEXT="Нормализация"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490123363488" ID="ID_1568375354" MODIFIED="1490124320499" TEXT="1НФ"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <table> <tr> <td> Фирма </td> <td> Модели </td> </tr> <tr> <td> BMW </td> <td> M5, X5M, M1 </td> </tr> <tr> <td> Nissan </td> <td> GT-R </td> </tr> </table> <br /> Нарушение нормализации 1НФ происходит в моделях BMW </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490123376851" ID="ID_608645557" MODIFIED="1490123383620" TEXT="атрибуты - простые"/> <node COLOR="#111111" CREATED="1490123383953" ID="ID_450471724" MODIFIED="1490123397106" TEXT="домены содержат скалярные значения"/> <node COLOR="#111111" CREATED="1490123401303" ID="ID_518134570" MODIFIED="1490123408464" TEXT="нет повторений в таблице"/> </node> <node COLOR="#990000" CREATED="1490123910136" ID="ID_501257079" MODIFIED="1490123914446" TEXT="2НФ"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490123915407" ID="ID_1270840891" MODIFIED="1490124611350"> <richcontent TYPE="NODE"><html> <head> </head> <body> <p> каждый неключевой атрибут </p> <p> неприводимо зависит от PrimaryKey (PK) </p> <p> (не зависит от других атрибутов напрямую) </p> </body> </html></richcontent> <richcontent TYPE="NOTE"><html> <head> </head> <body> <table> <tr> <td> <u>Модель</u> </td> <td> <u>Фирма</u> </td> <td> Цена </td> <td> Скидка </td> </tr> <tr> <td> M5 </td> <td> BMW </td> <td> 5500000 </td> <td> 5% </td> </tr> <tr> <td> X5M </td> <td> BMW </td> <td> 6000000 </td> <td> 5% </td> </tr> <tr> <td> M1 </td> <td> BMW </td> <td> 2500000 </td> <td> 5% </td> </tr> <tr> <td> GT-R </td> <td> Nissan </td> <td> 5000000 </td> <td> 10% </td> </tr> </table> <br /> Таблица находится в первой нормальной форме, но не во второй. </body> </html></richcontent> </node> </node> <node COLOR="#990000" CREATED="1490124147059" ID="ID_425863122" MODIFIED="1490124151635" TEXT="3НФ"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490124165811" ID="ID_515323628" MODIFIED="1490168379684"> <richcontent TYPE="NODE"><html> <head> </head> <body> <p> Каждый не ключевой атрибут </p> <p> нетранзитивно зависит от PrimaryKey (PK) </p> </body> </html></richcontent> <richcontent TYPE="NOTE"><html> <head> </head> <body> правило требует выносить все не ключевые поля, содержимое которых может относиться к нескольким записям таблицы в отдельные таблицы. <table> <tr> <td> <u>Модель</u> </td> <td> Магазин </td> <td> Телефон </td> </tr> <tr> <td> BMW </td> <td> Риал-авто </td> <td> 87-33-98 </td> </tr> <tr> <td> Audi </td> <td> Риал-авто </td> <td> 87-33-98 </td> </tr> <tr> <td> Nissan </td> <td> Некст-Авто </td> <td> 94-54-12 </td> </tr> </table> <br /> <br /> Таблица находится во 2НФ, но не в 3НФ. </body> </html></richcontent> </node> <node COLOR="#111111" CREATED="1490124588026" ID="ID_1348671019" MODIFIED="1490124600474" TEXT="Для отношений с 1 PK"/> <node COLOR="#111111" CREATED="1490425541002" ID="ID_742373744" MODIFIED="1490425565612" TEXT="нет неключевых полей завизящих от других неключевых полей"/> </node> <node COLOR="#990000" CREATED="1490124543214" ID="ID_683685189" MODIFIED="1490168379711" TEXT="НФБК"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <table> <tr> <td> Номер стоянки </td> <td> Время начала </td> <td> Время окончания </td> <td> Тариф </td> </tr> <tr> <td> 1 </td> <td> 09:30 </td> <td> 10:30 </td> <td> Бережливый </td> </tr> <tr> <td> 1 </td> <td> 11:00 </td> <td> 12:00 </td> <td> Бережливый </td> </tr> <tr> <td> 1 </td> <td> 14:00 </td> <td> 15:30 </td> <td> Стандарт </td> </tr> <tr> <td> 2 </td> <td> 10:00 </td> <td> 12:00 </td> <td> Премиум-В </td> </tr> <tr> <td> 2 </td> <td> 12:00 </td> <td> 14:00 </td> <td> Премиум-В </td> </tr> <tr> <td> 2 </td> <td> 15:00 </td> <td> 18:00 </td> <td> Премиум-А </td> </tr> </table> <p> выносится в отдельную таблицу тариф, номер стоянки </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490124548295" ID="ID_1500045936" MODIFIED="1490124553771" TEXT="НФ Бойса-Кодта"/> <node COLOR="#111111" CREATED="1490124559766" ID="ID_1378245277" MODIFIED="1490124669471" TEXT="Частная 3НФ"> <node COLOR="#111111" CREATED="1490124678641" ID="ID_880354525" MODIFIED="1490124686369" TEXT="PK > 1"/> <node COLOR="#111111" CREATED="1490124691578" ID="ID_1376755661" MODIFIED="1490124701608" TEXT="PK составные"/> <node COLOR="#111111" CREATED="1490125384093" ID="ID_318094598" MODIFIED="1490125388057" TEXT="хотя бы 1 атрибут"/> </node> <node COLOR="#111111" CREATED="1490125378153" ID="ID_461576160" MODIFIED="1490125412982" TEXT="каждая нетривиальная и неприводимая слева 
функциональная зависимость обладает потенциальным 
ключом в качестве детерминанта."/> </node> <node COLOR="#990000" CREATED="1490125781109" ID="ID_935454504" MODIFIED="1490125975796" TEXT="4НФ"> <richcontent TYPE="NOTE"><html> <head> </head> <body> Предположим, что рестораны производят разные виды пиццы, а службы доставки ресторанов работают только в определенных районах города. Составной первичный ключ соответствующей переменной отношения включает три атрибута: {Ресторан, Вид пиццы, Район доставки}. <p> <br /> <br /> Такая переменная отношения не соответствует 4НФ, так как существует следующая многозначная зависимость:<br />{Ресторан} → {Вид пиццы}<br />{Ресторан} → {Район доставки}<br /><br />То есть, например, при добавлении нового вида пиццы придется внести по одному новому кортежу для каждого района доставки. Возможна логическая аномалия, при которой определенному виду пиццы будут соответствовать лишь некоторые районы доставки из обслуживаемых рестораном районов.<br /><br />Для предотвращения аномалии нужно декомпозировать отношение, разместив независимые факты в разных отношениях. В данном примере следует выполнить декомпозицию на {Ресторан, Вид пиццы} и {Ресторан, Район доставки}.<br /><br />Однако, если к исходной переменной отношения добавить атрибут, функционально зависящий от потенциального ключа, например цену с учётом стоимости доставки ({Ресторан, Вид пиццы, Район доставки} → Цена), то полученное отношение будет находиться в 4НФ и его уже нельзя подвергнуть декомпозиции без потерь. </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490125799905" ID="ID_1279743741" MODIFIED="1490125808744" TEXT="все нетривиальные многозначные зависимости фактически 
являются функциональными зависимостями от ее потенциальных ключей"/> </node> <node COLOR="#990000" CREATED="1490125919574" ID="ID_1109771667" MODIFIED="1490125921650" TEXT="5НФ"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490125932392" ID="ID_1870980692" MODIFIED="1490125932392" TEXT="отсутствуют сложные зависимые соединения между атрибутами"/> </node> <node COLOR="#990000" CREATED="1490126151273" ID="ID_1391332369" MODIFIED="1490126153908" TEXT="ДКНФ"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490126155293" ID="ID_540705711" MODIFIED="1490126163575" TEXT="Доменно-ключевая НФ"/> <node COLOR="#111111" CREATED="1490126280931" ID="ID_1535921073" MODIFIED="1490126281683" TEXT="Переменная отношения находится в ДКНФ тогда и только тогда, когда каждое наложенное на неё ограничение является логическим следствием ограничений доменов и ограничений ключей, наложенных на данную переменную отношения"/> </node> <node COLOR="#990000" CREATED="1490126356026" ID="ID_1099024980" MODIFIED="1490126358190" TEXT="6НФ"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1490126359039" ID="ID_1904395032" MODIFIED="1490126359723" TEXT="когда она неприводима, то есть не может быть подвергнута дальнейшей декомпозиции без потерь"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1490002409262" ID="ID_1775284677" MODIFIED="1500916963003" POSITION="left" TEXT="Курсоры"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> для прохождения по записям </p> <p> DECLARE cursor-name CURSOR FOR SELECT ...;       /*Объявление курсора и его заполнение */  </p> <p> DECLARE  CONTINUE HANDLER FOR NOT FOUND          /*Что делать, когда больше нет записей*/  </p> <p> OPEN cursor-name;                                /*Открыть курсор*/  </p> <p> FETCH cursor-name INTO variable [, variable];    /*Назначить значение переменной, равной текущему значению столбца*/  </p> <p> CLOSE cursor-name;                               /*Закрыть курсор*/  </p> </body> </html></richcontent> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1490002490834" ID="ID_1621808885" MODIFIED="1490046943445" TEXT="не обновляется с таблицей"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490002503664" ID="ID_1277647236" MODIFIED="1490046943446" TEXT="read-only"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490002514491" ID="ID_1304409434" MODIFIED="1490046943460" TEXT="forward-only"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490002545861" ID="ID_329879602" MODIFIED="1490168381012" TEXT="пример"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> DELIMITER //  </p> <p>   </p> <p> CREATE PROCEDURE `proc_CURSOR` (OUT param1 INT)  </p> <p> BEGIN  </p> <p>     DECLARE a, b, c INT;  </p> <p>     DECLARE cur1 CURSOR FOR SELECT col1 FROM table1;  </p> <p>     DECLARE CONTINUE HANDLER FOR NOT FOUND SET b = 1;  </p> <p>     OPEN cur1;  </p> <p>   </p> <p>     SET b = 0;  </p> <p>     SET c = 0;  </p> <p>   </p> <p>     WHILE b = 0 DO  </p> <p>         FETCH cur1 INTO a;  </p> <p>         IF b = 0 THEN  </p> <p>             SET c = c + a;  </p> <p>     END IF;  </p> <p>     END WHILE;  </p> <p>   </p> <p>     CLOSE cur1;  </p> <p>     SET param1 = c;  </p> <p>   </p> <p> END //  </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490426900827" ID="ID_192490594" MODIFIED="1490426907471" TEXT="Порядок работы"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490426910490" ID="ID_1148181000" MODIFIED="1490426914915" TEXT="DECLARE"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490426919715" ID="ID_1574723195" MODIFIED="1490426921324" TEXT="OPEN"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490426925224" ID="ID_1372716183" MODIFIED="1490426926990" TEXT="FETCH"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490426931691" ID="ID_1682049407" MODIFIED="1490426935358" TEXT="обработка"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1490426935740" ID="ID_1972810158" MODIFIED="1490426939801" TEXT="CLOSE"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1490426952827" ID="ID_513086927" MODIFIED="1490426968073" TEXT="работа построчно, а не сразу со всей таблицей"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> </node> <node COLOR="#0033ff" CREATED="1490295755304" ID="ID_1461603748" MODIFIED="1490295872593" POSITION="right" TEXT="DDL (data definition lang)"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1490295777573" ID="ID_1083544660" MODIFIED="1490295781068" TEXT="create table"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490295781542" ID="ID_618878166" MODIFIED="1490295784399" TEXT="drop table"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490295839262" ID="ID_1911293512" MODIFIED="1490295843164" TEXT="alter table"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> </node> <node COLOR="#0033ff" CREATED="1490295856400" ID="ID_1950841105" MODIFIED="1490295870987" POSITION="right" TEXT="DML (data manipulation lang)"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1490295876967" ID="ID_1523916002" MODIFIED="1490295879013" TEXT="select"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490295879394" ID="ID_1169882688" MODIFIED="1490295884465" TEXT="insert"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490295887224" ID="ID_1312176638" MODIFIED="1490295888724" TEXT="delete"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490295889244" ID="ID_539293586" MODIFIED="1490295894043" TEXT="update"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> </node> <node COLOR="#0033ff" CREATED="1490295901133" ID="ID_1876913807" MODIFIED="1490295915813" POSITION="right" TEXT="TCL (transact control lang)"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1490295918035" ID="ID_1794558129" MODIFIED="1490295919894" TEXT="commit"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490295920228" ID="ID_539527447" MODIFIED="1490295924316" TEXT="rollback"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490295930618" ID="ID_1043860031" MODIFIED="1490295935409" TEXT="set transaction"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1490295966459" ID="ID_748905495" MODIFIED="1490295976772" TEXT="установить условия выполнения транз"> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1490296016637" ID="ID_215142459" MODIFIED="1490296033728" POSITION="right" TEXT="DCL (data control lang)"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1490296034077" ID="ID_383112619" MODIFIED="1490296037964" TEXT="grant"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1490296038266" ID="ID_750520550" MODIFIED="1490296040124" TEXT="revoke"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> </node> </node> </map>