Какие группы операторов выделяются в составе языка sql
Операторы языка SQL используются во всех инструментальных средствах разработки INFORMIX (INFORMIX-SQL, INFORMIX-4GL, INFORMIX-ESQL/C и др.). Для каждого инструмента характерны определенные особенности использования SQL, которые описаны в соответствующей документации. В этом разделе даются сведения об применении операторов SQL в среде разработки INFORMIX-4GL.
Соглашения о языке SQL и начальные понятия
Программа, написанная на 4GL использует предписания языка SQL (Структурного Языка Запросов) для манипуляций с базой данных.
Формат записи операторов SQL свободный. Можно писать все подряд на одной строке, один оператор на нескольких строках, слова операторов можно разделять произвольным количеством пробелов и комментариев. Никакими значками (типа 😉 операторы разделять не нужно. Окончание операторов определяется по контексту.
Примечание: если вы записываете предписания SQL не в программе 4GL а в среде INFORMIX-SQL, то разделять операторы точкой с запятой (;) необходимо.
Весь набор ключевых слов языка SQL зарезервирован, их нельзя занимать для других целей (на имена объектов и переменных SQL и 4GL).
Компилятору языка безразлично, большими или маленькими буквами пишутся операторы. Он их не различает.
Комментарии обозначаются знаками комментарий >, или знаком — (два знака минус) до конца строки.
Идентификаторы INFORMIX
Идентификатор (имя объекта) — это слово, состоящее из букв, цифр, и знаков подчеркивания (_), начинающееся с буквы или знака (_). В INFORMIX-4GL не различаются маленькие и большие буквы. Поэтому i_Un1023Tt и I_UN1023TT — одно и тоже имя.
Имя базы данных не длиннее 10.
Имена прочих объектов SQL — таблиц, столбцов, view (псевдотаблиц) , синонимов — не длиннее 18.
Группы операторов языка SQL.
1. Операторы Описания Данных.
Создание базы данных.
CREATE DATABASE zawod
В любой момент времени вы можете иметь доступ к объектами только одной — ТЕКУЩЕЙ (CURRENT) — базы данных. Оператор DATABASE делает новую базу текущей, закрывая при этом доступ к объектам предыдущей текущей базы. Оператор CLOSE DATABASE просто закрывает текущую базу данных.
DATABASE zawod . . . # текущей является база zawod DATABASE stanciq . . . # текущей является база stanciq CLOSE DATABASE # текущей базы нет
Создаются таблицы kadry и ceh, содержащие столбцы разных типов.
CREATE TABLE kadry ( nomerceh INT, tabnom SERIAL , fio CHAR(20) UNIQUE, zarplata MONEY(16,2), datarovd DATE, pribytie DATETIME year TO minute ) CREATE TABLE ceh ( nomerceh int, nameceh char(20) )
В уже существующей таблице мы можем поменять тип столбца, добавить новый, уничтожить старый.
ALTER TABLE kadry ADD (dolvnostx CHAR(20) BEFORE zarplata), DROP(pribytie), ADD CONSTRAINT UNIQUE(tabnom, fio) CONSTRAINT tabnomfio ALTER TABLE items MODIFY (manu_code char(4))
Изменение структуры таблицы приводит к физическому преобразованию данных в ней. Если изменен тип столбца, то данные в нем преобразуются к новому типу, и если это невозможно осуществить, то оператор ALTER «валится» с кодом ошибки, а таблица остается в неизмененном состоянии.
View — «псевдо» таблица, базируется на существующих таблицах.
CREATE VIEW poor AS SELECT tabnom, fio, datarovd FROM kadry WHERE zarplata < 120 # создано view - "псевдотаблица" из трех столбцов содержащая # строки из таблицы kadry, в которых zarplata меньше 120 рублей.
Ведет себя точно так же, как настоящая таблица, только место на диске под нее не отводятся, поскольку данные, лежащие в ней на самом деле хранятся в таблице, на которой это view базируется.
Индекс - дополнительная структура к столбцам таблицы, нужен для ускорения поиска значений в столбце.
CREATE UNIQUE INDEX indkdtb ON kadry (tabnom) # создан индекс для столбца tabnom из таблицы kadry. Индекс # уникальный, значит в столбце не могут появиться одинаковые # значения.
Мы можем физически упорядочить таблицу в соответствии с индексом. В кластеризованной таблице SELECT работает быстрее.
ALTER INDEX indkdtb TO CLUSTER
Имена столбцов в разных таблицах могут совпадать. Если в каком либо операторе SQL упоминаются два столбца с одинаковыми названиями, то их нужно уточнять именами таблиц, их содержащих. Перед именем любого объекта можно (а иногда и необходимо) указать имя его владельца (owner-name) - входное имя пользователя, который создал (CREATE) этот объект.
kadry.nomerceh # столбец nomerceh из таблицы kadry ceh.nomerceh # столбец nomerceh из таблицы ceh iwanow.table1.c1 # столбец c1 из таблицы table1, владельцем которой является iwanow moshkow.table1.c1 # столбец c1 из другой (!) таблицы table1, владельцем которой является moshkow
Синоним для имени таблицы используется для сокращения записи.
CREATE SYNONYM t1 FOR petrow.sostoqnie_postow
Теперь повсюду можно (хотя и не обязательно) вместо имени petrow.sostoqnie_postow использовать имя t1.
База данных может иметь системный журнал транзакций (logfile).
START DATABASE zawod WITH LOG IN "/udd/moshkow/logfile/zawod"
Если нет журнала транзакций для всей базы данных, то для отдельных таблиц в базе с той же целью можно создать audit trail.
CREATE AUDIT FOR kadry IN "/udd/moshkow/kadry.audit"
Естественно, что любой созданный в базе данных объект можно уничтожить. Надо только помнить, что операторы описания данных не откатываются назад, а потому если вы уничтожили таблицу, или базу данных то знайте, что это навсегда.
DROP VIEW poor # Уничтожается только view. С данными в таблицах, на которых оно базировалось ничего не происходит. DROP TABLE kadry # уничтожает таблицу вместе с данными. DROP INDEX indkdtb DROP SYNONYM t1 DROP DATABASE zawod # уничтожает базу вместе со всеми данными и системным журналом
2. Операторы задания прав доступа в базе данных.
Выдавать и забирать права доступа к таблице может владелец таблицы, Администратор Базы Данных (имеющий DBA права), а так же пользователь, которому было выдано право выдавать права (Оператором GRANT WITH GRANT OPTIONS)
REVOKE ALL ON customer FROM PUBLIC GRANT ALL ON customer TO iwanow, petrow WITH GRANT OPTION GRANT UPDATE(fname,lname,company, sity),SELECT ON customer TO PUBLIC REVOKE CONNECT FROM sidorowa, root REVOKE DBA FROM ivanov
Отобрать у вас права DBA (если вы, конечно, им являетесь) может только другой DBA. На время транзакции все измененные строки автоматически блокируются системой от изменения (но не от просмотра). Вы можете явно блокировать всю таблицу целиком, тогда система не будет блокировать строки по отдельности. Вы можете блокировать таблицу целиком не только от изменения но и от просмотра.
BEGIN WORK LOCK TABLE kadry . . . UNLOCK TABLE kadry . . . LOCK TABLE kadry EXCLUSIVE
Если ваш оператор пытается записать в блокированную другим пользователем строку, то оператор "сваливается". Вы можете установить для своей программы режим "Ждать разблокирования строк".
SET LOCK MODE TO WAIT
3. Операторы транзакций и восстановления данных.
В базе данных, не имеющей системного журнала невозможно выполнение транзакций и восстановления до текущей контрольной точки.
Поскольку за все хорошее приходится платить, наличие системного журнала у базы данных вызывает заметный рост накладных расходов и замедление работы запросов. К тому же при активной работе с базой системный журнал быстро "распухает". За ним нужно следить и периодически чистить.
Указать базе новый системный журнал.
START DATABASE zawod WITH LOG IN "/ARM/log/zawod"
DATABASE kadry EXCLUSIVE # чтобы никто не лез ROLLFORWARD DATABASE kadry # прогнать базу вперед # по системному журналу CLOSE DATABASE # теперь всем можно работать
Транзакция
BEGIN WORK # начать транзакцию . . . # операторы IF все нормально THEN COMMIT WORK ELSE ROLLBACK WORK END IF
Если во время транзакции программа "свалилась" то INFORMIX автоматически сделает откатку.
4. Операторы Манипуляции Данными.
Следующая группа операторов предназначена для манипулирования данными в таблицах. В нее входят операторы выбора (SELECT) строк из таблицы (или таблиц), уничтожения (DELETE) строк в таблице, вставки (INSERT) строк, и изменения (UPDATE) значений в существующих в таблице строках.
Уничтожить в таблице kadry все строки, в которых номер цеха равен 4, а фамилия кончается на буквы "ов"
DELETE FROM kadry WHERE ceh=4 AND fio MATCHES "*ов"
В результате из списков будут вычеркнуты работники 4-го цеха "Петров", "Иванов", "Сидоров" и т.п Как видим, INFORMIX предоставляет националистически озабоченным руководителям мощные средства для воплощения в жизнь своих идей.
А этот оператор уничтожит ВСЕ строки в таблице kadry, владельцем которой является moshkow, но не саму таблицу
DELETE FROM moshkow.kadry
Первый пример находит в таблице kadry строку, в которой столбец tabnum=345 . Из этой строки берутся только три указаных столбца. Второй пример выбирает ВСЕ строки из таблицы ceh, и все столбцы.
SELECT fio, dolvn, zarplata FROM kadry WHERE tabnom=345 SELECT * FROM ceh SELECT kadry.fio, ceh.nameceh WHERE kadry.nomerceh=ceh.nomerceh
Третий пример выбирает фамилии работников из таблицы кадры, а названия цехов, в которых они работают, из таблицы ceh.
Может вставить в таблицу одну строку, если используется в форме INSERT INTO . VALUES, а может вставить в таблицу целый набор строк, выбранных подзапросом SELECT из другой таблицы.
INSERT INTO kadry VALUES (4,0,"Грицько",num,"10/25/1939",NULL) INSERT INTO customer VALUES (ps_customer.*) # ps_customer - переменная типа RECORD - аналог структуры в # языке Си. Этот оператор вставляет значения элементов записи # ps_customer в соответствующие поля таблицы customer INSERT INTO kadry (tabnom, fio, nomerceh, dolvnostx) SELECT 0 , fio, 4, dolvnostx FROM kadryold WHERE nomerceh=3 AND fio IS NOT NULL # последний оператор вставляет сразу несколько строк
Если мы хотим, чтобы при вставлении строки в столбец типа SERIAL автоматически заносилось очередное значение счетчика, нужно вставлять в этот столбец константу 0. Если не во все столбцы вставляемой строки вносится значение (как это сделано в третьем операторе), то незаполненные столбцы заполняются значением NULL.
В операторах DELETE, UPDATE, SELECT может присутствовать WHERE предложение, в котором можно задать условия на строки, которые требуется обработать (соответственно уничтожить, изменить или выбрать). Рассмотрим примеры использования WHERE предложения.
Меняет значения столбцов, в строках, удовлетворяющим WHERE условию.
UPDATE kadry SET fio="Зыкова" WHERE fio="Гирусова" UPDATE ceh SET kod_ceha[1,4]=nameceh[5,8] WHERE nomerceh BETWEEN 3 AND 5 OR nameceh IN ("токарный","литейный")
В таблице ceh в цехах номер 3,4,5 а так же в токарном и литейном первые четыре символа в коде цеха будут заменены на подстроку поля nameceh из той же строки.
Предложение WHERE может присутствовать в любом из операторов DELETE, UPDATE, SELECT, когда нужно задать условия на строки, которые требуется обработать (соответственно, уничтожить, изменить или выбрать). Рассмотрим структуру и примеры использования предложений WHERE.
В предложении WHERE пишется логическое условие, которое получается соединением с помощью логических операторов AND, OR и NOT элементарных сравнений типа:
выражение1 < выражение2, выражение1 >= выражение2, и т.п.,
а так же элементарных сравнений специального вида:
column-name IS [NOT] NULL выраж [NOT] BETWEEN выраж1 AND выраж2 выраж [NOT] IN (выраж1 , . [, . ] )
Можно выяснить, подходит ли символьная строка под определенный шаблон, или нет. Для этого используются две операции сравнения по шаблону - LIKE и MATCHES.
симв-выражение MATCHES "шаблон" симв-выражение LIKE "шаблон"
LIKE имеет более простой шаблон. В нем используются только два спецсимвола: (%) замещает произвольное количество символов, (_) замещает ровно один символ. Все остальные символы в шаблоне обозначают сами себя. Если мы хотим включить в шаблон % или _ отменив их специальный смысл, то перед ними надо поставить ESCсимвол (по умолчанию это (\)).
Допустим нам нужно выбрать из таблицы tab8 все строки, в которых символьный столбец string1 содержит символ "+" а предпоследняя буква в нем - "Ы". Оператор выборки будет выглядеть так:
SELECT * FROM tab8 WHERE string1 LIKE "%+%Ы_"
MATCHES использует такие спецсимволы шаблона: *, ?, [, ], ^, -.
| * | заменяет любое количество символов | ? | заменяет один любой символ | [. ] | заменяет один символ из перечисленных в скобках | возможно указание от и до (-), и не (^) | [abH] | любой из символов a, b, H | [^d-z] | любой символ, исключая d,e,f,g, . ,y,z | \ | отменяет спецсмысл спецсимволов *. [,] |
Если вы хотите воспользоваться спецсимволами как обычными, примените escape-char. Если escape-char="\", то \? обозначает просто символ ?, \* обозначает просто символ *, \\ обозначает просто символ \ . Зато знак кавычки (") внутри шаблона нужно обозначать двумя кавычками ("").
Выбрать все данные о заказчиках в названии компании которых вторая буква не лежит в интервале от G до L, а третья буква c. (Кстати, коды русских букв на БЕСТЕ идут подряд, но в отличие от латинских букв, русские не упорядочены по алфавиту.)
SELECT * FROM customer WHERE company MATCES"?[^G-L]c*"
Выбрать все данные о заказчиках в названии компании которых присутствует вопросительный знак.
SELECT * FROM customer WHERE company MATCHES "*Я?*" ESCAPE"Я"
В данном примере использовался ESC-символ "Я" для отмены спецсмысла символа "?".
Сравнить выражение с результатом другого SELECT оператора
выраж сравн (SELECT-statement)
выраж [NOT] IN (SELECT-statement)
[NOT] EXISTS (SELECT-statement)
SELECT fio FROM kadry WHERE zarplata= (SELECT MAX(zarplata) FROM kadry )
Здесь подзапрос возвращает единственное значение - максимальное значение зарплаты. А внешний SELECT оператор находит фамилии обладателей оной.
SELECT fio, shifr, organizaciq FROM zaqwki WHERE denxgi_rek is not NULL and gorod in (SELECT gorod FROM regiony WHERE region="Урал")
Здесь запрос выводит данные об руководителях, получивших финансирование и работающих на Урале.
SELECT order_num,stock_num,manu_code, total_price FROM items x WHERE total_price > (SELECT 2*MIN(total_price) FROM items WHERE order_num=x.order_num)
Этот запрос (используя связанный подзапрос) выводит список всех изделий, чья общая цена не менее чем в два раза превосходит минимальную цену изделий перечисленных в этом же ордере.
Вы можете соединять любое количество вышеперечисленных условий вместе, используя логические операторы NOT, AND, OR.
Оператор UNLOAD сбрасывает данные из таблицы в файл в печатном представлении. Каждая строка преобразуется в отдельную запись, значения из столбцов разделяются символом "|".
После выполнения оператора
UNLOAD TO "kadry19.unl" SELECT * FROM kadry
в файле kadry19.unl можно будет обнаружить следующее:
5|5|туев |завхоз |100.0|31.12.1946| 4|6|петунин|кладовщик|80.0 | | . . .
Оператор LOAD выполняет обратную операцию - считывает строки из файла и вставляет их в таблицу. Естественно, что типы и количество значений в строках файла должны соответствовать столбцам таблицы.
LOAD FROM "kadry20.unl" INSERT INTO kadry
5. Снова Оператор SELECT.
Выбрать все строки (нет предложения WHERE) из таблицы kadry, взять в них все столбцы (вместо перечисления столбцов стоит *), оставить только различные строки (ключевое слово UNIQUE) и поместить результат во временную таблицу (INTO TEMP) x, которая будет при этом создана с такими же столбцами, что и у kadry.
SELECT UNIQUE * FROM kadry INTO TEMP x
Выбирать можно из нескольких таблиц. При этом берутся все возможные комбинации строк из первой таблицы со второй. Предположим, что таблице tab1 6 строк а в tab2 - 7 строк. Результат нижеприведенного примера - таблица, содержащая три столбца и 7*6=42 строки.
SELECT tab1.a-tab2.b, tab1.a, tab2.b FROM tab1, tab2
Мы сейчас не будем уточнять, куда именно результирующая таблица помещается. Но использовать ее можно по разному: ее можно перегнать (INTO TEMP) во временную таблицу, ее можно отдать на обработку другому оператору (если выборку осуществлял подзапрос), для нее можно создать курсор ("буфер" с указателем на текущую строку), а можно положить ее (INTO) в простую программную переменную (если выбрано не более одной строки).
Выбранные строки можно упорядочить по возрастанию (убыванию) значения в столбце (столбцах)
SELECT a,b,c,d+e FROM tabl ORDER BY b,c SELECT a,b,c,d+e FROM tabl ORDER BY 2,3
В ORDER BY предложении вместо имени столбца можно указывать его порядковый номер в списке выборки (select-list). Вышеприведенные операторы эквивалентны.
Поместить значения из столбцов в переменные: (Поскольку lname используется и как имя переменной, и как имя столбца, то имя столбца предваряется знаком (@)
SELECT customer_num, @lname,city INTO cnum,lname,town FROM customer
К выбранным строкам можно применять агрегатные функции COUNT(*) - количество, MAX(column) и MIN(column) - максимальное и минимальное значение в столбце, SUM(column) - сумма всех значений в столбце, AVG(column) - среднее значение в столбце.
Поместить в переменную num количество строк в таблице orders, в которых столбец customer_num равен 101:
SELECT COUNT(*) INTO num FROM orders WHERE customer_num=101
Пример с использованием соединения таблиц. Находится среднее значение зарплаты превосходящей 300 (столбец zarplata принадлежит одной из таблиц), при условии совпадения столбцов dolvnost в двух таблицах.
SELECT AVG (zarplata) FROM table1,table2 WHERE table1.dolvnost=table2.dolvnost and zarplata>300
Группировка используется для для "сплющивания" группы (строк) в одну. Результат запроса содержит одну строку для каждого множества строк, удовлетворяющих WHERE предложению и содержащих одно и то же значение в указанном столбце.
SELECT dolvnostx, COUNT(*), AVG(zarplata) FROM kadry GROUP BY dolvnostx
Получить количество работающих и их среднюю зарплату по каждой должности из штатного расписания.
SELECT dolvnostx, COUNT(*), AVG(zarplata) FROM kadry GROUP BY 1
Эквивалентная запись.
Предложение HAVING накладывает дополнительные условия на группу.
SELECT order_num, AVG(total_priece) FROM items GROUP BY order_num HAVING COUNT(*) > 2
Этот запрос возвращает номера ордеров и среднее значение total_price в заявках для всех ордеров, имеющих не менее двух заявок.
Строки из таблицы, присоединенной внешним образом (на внешнее соединение указывает ключевое слово OUTER) будут выбираться не смотря на то, удовлетворяют они условиям WHERE предложения или нет. В некоторых случаях это полезно, когда у вас есть главная таблица и есть вспомогательная, и данные из главной таблицы вам нужно получить в любом случае. Пример внешнего соединения:
SELECT company, order_num FROM customer c, OUTER orders o WHERE c.customer_num=o.customer_num
Запрос находит названия компаний и номера ордеров, которые они послали. Если же компания ордеров не присылала, то ее название все равно будет выбрано, а номер ордера в этой строке будет равен NULL. (А если бы мы запустили запрос без параметра OUTER, то названия этих компаний вообще бы не попали в выборку.)
6. Сложные Примеры Манипуляции Данными.
Операторы манипуляции данными - самая мощная составляющая SQL.
Следующий пример ликвидирует одинаковые строки в таблице kadry.
select unique * from kadry into temp kd delete from kadry where 1=1 insert into kadry select * from kd drop table kd
SELECT b.kl,b.pole, nomerceh,dolvnostx,zarplata,datarovd FROM kadry, b WHERE kadry.tabnom=b.kl into temp kd DELETE FROM kadry WHERE tabnom in (SELECT kl FROM b) INSERT INTO kadry SELECT * FROM kd DROP TABLE kd
Ту же самую операцию можно проделать с помощью одного оператора UPDATE, использующего подзапрос:
UPDATE kadry SET dolvnostx=(select pole from b where kadry.tabnom=b.kl) WHERE tabnom IN (select kl from b)
UPDATE cia SET (har,cen)=( (SELECT har,cen FROM agent WHERE cia.fio=agent.fio) ) WHERE fio IN (SELECT fio FROM agent) AND cen < (SELECT cen FROM agent WHERE cia.fio=agent.fio);
- 17.11 - Apple добавит поддержку современного протокола для СМС в iOS в 2024 году — она давно есть у Android
- 17.11 - SpaceX заверила регулятора, что Starlink не создаст помех наземным сотовым сетям
- 17.11 - Суд оштрафовал издателя PUBG Mobile на 1 млн рублей за нарушение закона о локализации данных россиян
- 17.11 - Microsoft подтвердила скорое появление ИИ-помощника Copilot в Windows 10
- 17.11 - Alibaba потеряла $21 млрд стоимости из-за отказа от отделения облачного бизнеса
- 16.11 - Microsoft и Synopsys создали ИИ, который поможет разрабатывать процессоры
- 16.11 - «Яндекс Карты» будут показывать больше подробностей о городе
- 16.11 - В Швейцарии создали первый процессор на 2D-транзисторах, которому не нужна внешняя память
- 16.11 - Первые устройства с беспроводной зарядкой Qi2 вот-вот выйдут на рынок — сертификация почти завершена
- 15.11 - Китай запустил самый быстрый в мире интернет — 1,2 Тбит/с и это втрое быстрее, чем у США
- 15.11 - Запущены суперкомпьютеры Dawn, SuperMUC-NG и Crossroads на базе Intel Data Center GPU Max и Xeon Sapphire Rapids
- 15.11 - Aurora на базе Intel стал вторым мощнейшим суперкомпьютером в мире — лидером остался вдвое более мощный Frontier на AMD
- 15.11 - Создан ИИ, который превращает 2D-изображение в 3D-модель за пять секунд
- 15.11 - Найдена уязвимость, через которую любой процессор Intel можно заставить сбоить
- 10.11 - Apple, Google, Samsung и прочие создадут стандарт умных замков и цифровых ключей Aliro
- 10.11 - Samsung и Google представили бесплатную технологию IAMF для революции в домашнем пространственном звуке
- 10.11 - Индия станет крупнейшим центром разработки ПО в мире к 2027 году
- 10.11 - NASA испытало самый мощный электроракетный двигатель в истории — его применят на лунной орбитальной станции
- 08.11 - Релиз дистрибутива Fedora Linux 39
- 08.11 - Apple остановила разработку iOS 18 и других новых ОС, чтобы исправить накопившиеся ошибки
Группы операторов. Типы данных
Раздел 3. Основы языка SQL Лекция 19. Группы операторов. Типы данных Язык реляционных БД SQL был разработан в середине 70-х годов в рамках исследовательского проекта экспериментальной реляционной СУБД System R от компании IBM. Данный проект включал в себя разработку реляционной СУБД и языка SEQUEL (Structured English Query Language). Данное название только частично отражало суть языка. Язык был ориентирован главным образом на удобную и понятную пользователям формулировку запросов к реляционной БД, фактически он уже являлся полноценным языком реляционной БД и содержал помимо операторов формулирования запросов и манипулирования БД, следующие средства: · определения схемы БД и манипулирования ей; · определения ограничений целостности и триггеров; · создания представлений БД; · определения структур физического уровня, поддерживающих эффективное выполнение запросов;
Рекомендуемые материалы
Лабораторая работа №17 (Поиск минимума и максимума) - Вариант 19
Информатика
299 90 руб.
Проектирование базы данных "Больница"
Информатика
Все лабы Степанова (21 и 19 вариант есть) +1-4 РК 2021 Lazarus
Информатика
Сжатие данных методами Хафмана и Шеннона-Фано
Информатика
Тест 1. Основы программирования Си - 85,19%
Программирование и алгоритмизация
Технологии создания базы данных в Access на примере ателье
Информатика
· автоматизации доступа к таблицам и их полям; · поддержки точек сохранения транзакции и откатов. В конце 70-х годов корпорацией Oracle был выпущен модифицированный вариант языка SEQUEL, получивший название SQL. В 1983 г. компания IBM выпустила SQL в составе СУБД DB2. Язык SQL был настолько удачен, что несколько позже, в 1986 г. Американский национальный институт стандартизации (ANSI) принял его в качестве стандарта. После этого стандарт уже пересматривался несколько раз, в 1989, 1992 г. в результате в язык SQL были внесены некоторые незначительные изменения. В настоящее время наиболее распространенным стандартом является SQL-92. Типы команд SQL Команды языка SQL, условно, можно разделить на группы: · DCL (Data Control Language) – язык управления данными. Команды языка предназначены для управления доступом к информации, хранящейся в БД. (таблица 19.1); · DDL (Data Definition Language) – язык определения данных. Его команды используются для создания и изменения структуры объектов БД (таблица 19.2); · DML (Data Manipulation Language) – язык манипулирования данными. Используется для манипулирования информацией, содержащейся в объектах БД (таблица 19.3); · DQL (Data Query Language) – язык запросов к данным. Наиболее часто используемая группа, состоящая всего из одного оператора SELECT, предназначенного для формирования запросов к БД (таблица 19.4); · TCL (Transaction Control Language) – язык управления транзакциями (таблица 19.5); · CCL (Cursor Control Language) – язык управления курсором (таблица 19.6); Язык SQL является непроцедурным, но, тем не менее, в среде SQL Server предусмотрен ряд различных управляющих конструкций, без которых невозможно написание эффективных алгоритмов, например, операторные скобки, условия циклы и т.д. Таблица 19.1- Средства управления данными DCL
| Оператор | Описание |
| ALTER DATABASE | Изменение набора основных объектов БД |
| ALTER DBAREA | Изменение существующей области хранения БД |
| ALTER PASSWORD | Изменяет пароль для всей базы данных |
| CREATE DATABASE | Создает новую базу данных и определяет ее основные параметры |
| CREATE DBAREA | Создает область хранения и делает ее доступной для размещения данных |
| DROP DATABASE | Удаляет БД (при наличии прав) |
| DROP DBAREA | Удаляет область хранения если в ней не располагаются активные данные |
| GRANT | Предоставляет права доступа на действия с объектами БД |
| REVOKE | Лишает прав доступа к объектам БД или над действиями с объектами БД |
Таблица 19.2 - Операторы определения данных DDL
| Оператор | Описание |
| CREATE TABLE | Создает новую таблицу в БД |
| DROP TABLE | Удаляет существующую таблицу из БД |
| ALTER TABLE | Изменяет структуру таблицы или ограничения таблицы |
| CREATE VIEW | Создает представление (виртуальную таблицу) соответствующую некоторому SQL запросу |
| DROP VIEW | Удаляет ранее созданное представление |
| ALTER VIEW | Изменяет существующее представление |
| CREATE INDEX | Создает индекс для некоторой таблицы |
| DROP INDEX | Удаляет существующий индекс |
Таблица 19.3 - Операторы манипулирования данными DML
| Оператор | Описание |
| DELETE | Удаляет одну или несколько записей согласно условиям отбора. Применение оператора согласуется с принципами поддержки ссылочной целостности, поэтому оператор не всегда выполняется корректно, даже если синтаксически записан правильно |
| INSERT | Вставляет одну или несколько записей, согласно условию отбора, в базовую таблицу |
| UPDATE | Обновляет значения одного или нескольких полей в одной или нескольких записях, соответствующих условиям отбора |
Таблица 19.4 - Язык запросов к данным DQL
| Оператор | Описание |
| SELECT | Оператор, полностью реализующий возможности реляционной алгебры. Позволяет сформировать результирующие отношение, соответствующее запросу |
Таблица 19.5- Средства управления транзакциями TCL
| Оператор | Описание |
| COMMIT | Завершает транзакцию (комплексную взаимосвязанную обработку информации, объединенную в транзакции) |
| ROLLBACK | Откат транзакции (отмена изменений, проведенных в ходе выполнения транзакции) |
| SAVEPOINT | Сохраняет промежуточную точку (состояние) БД, для реализации возможности отката |
Таблица 19.6- Средства управления курсором СCL
| Оператор | Описание |
| DECLARE | Определяет курсор для запроса |
| OPEN | Открывает курсор (Формирует виртуальный НД, соответствующий описанию курсора) |
| FETCH | Считывает очередную строку из виртуального НД открытого курсора |
| CLOSE | Закрывает открытый курсор |
| PREPARE | Готовит оператор SQL к динамическому выполнению |
| EXECUTE | Выполняет оператор SQL, ранее подготовленный к динамическому выполнению |
Типы данных языка SQL В языке SQL имеется шесть скалярных типов данных, определенных стандартом. Их краткое описание представлено в таблице 19.7 Таблица 19.7 – типы данных языка SQL
| Тип данных | Объявления |
| Символьный | CHAR | VARCHAR |
| Битовый | BIT | BIT VARYING |
| Точные числа | NUMERIC | DECIMAL | INTEGER | SMALLINT |
| Вещественные числа | FLOAT | REAL | DOUBLE PRECISION |
| Дата/время | DATE | TIME | TIMESTAMP |
| Интервал | INTERVAL |
Строковые типы: § CHARACTER(n) или CHAR(n) - символьные строки постоянной длины в n символов. При задании данного типа под каждое значение всегда отводится n символов, и если реальное значение занимает менее, чем n символов, то СУБД автоматически дополняет недостающие символы пробелами. § VARCHAR(n) - строки символов переменной длины. Битовые типы: § ВIT(п) - строка битов постоянной длины. § BIT VARYING(n) - строка битов переменной длины. Точные типы: § NUMERIC[(n,m)] - точные числа, здесь и - общее количество цифр в чис- . ле, m - количество цифр слева от десятичной точки. § DECIMAL[(n,m)] - точные числа, здесь п - общее количество цифр в числе, m - количество цифр слева от десятичной точки. § DEC[(n,m)] - то же, что и DECIMAl.[(n,m)]. § INTEGER или INT - целые числа. § SMALLINT - целые числа меньшего диапазона. Вещественные типы: § FLOAT[(n)] - числа большой точности, хранимые в форме с плавающей точкой. Здесь n - число байтов, резервируемое под хранение одного числа. Диапазон чисел определяется конкретной реализацией. § REAL - вещественный тип чисел, который соответствует числам с плавающей точкой, меньшей точности, чем FLOAT. § DOUBLE PRECISION специфицирует тип данных с определенной в реализации точностью большей, чем определенная в реализации точность для REAL. Типы даты/времени и интервал: § DATE - календарная дата. § TIME – формат времени. § ТIМЕSТАМР(точность) - дата и время. § INTERVAL - временной интервал. Большинство коммерческих СУБД поддерживают дополнительные типы данных, которые не специфицированы в стандарте. Так, например, практически все СУБД в том или ином виде поддерживают тип данных для представления неструктурированного текста большого объема. Этот тип аналогичен типу MEMO в настольных СУБД. Называются эти типы по-разному, например в ORACLE этот тип называется LONG, в DB2 - LONG VARCHAR, в SYBASE и MS SQL Server - TEXT. Контрольные вопросы 1. Что представляет собой язык SQL? 2. Что общего между языком SQL и реляционной алгеброй? 3. Какие средства включает в себя язык SQL? 4. Какие типы команд выделяют в языке SQL? 5. Назовите основные команды языка DML. 6. Назовите основные команды языка DDL. 7. Назовите основные команды языка DCL. В лекции "37 - Собственные поля организма" также много полезной информации. 8. Назовите основные команды языка DQL. 9. Назовите основные команды языка управления транзакциями. 10. Назовите основные типы данных языка SQL. 11. Назовите строковые типы данных языка SQL. 12. Назовите числовые типы данных языка SQL. 13. Назовите типы представления даты и времени.
Операторы SQL: какие есть и как с ними работать
Что это такое? Операторы SQL – это символы и слова, помогающие выполнить определенные операции, например, выбрать конкретные данные из большой базы. Такая опция широко востребована у маркетологов, программистов и разработчиков, а также руководителей.
Какие бывают? SQL-операторы делятся на группы в зависимости от задач. Есть для определения данных или доступа к ним, а также арифметические, логические и для сравнения. Можно, конечно, выучить их все наизусть, однако достаточно сохранить в таблицы, чтобы время от времени подглядывать.
В статье рассказывается:
- Что такое SQL
- Кому нужен SQL
- Группы операторов SQL
- Основные операторы SQL
- Как начать работу с SQL
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.
Бесплатно от Geekbrains
Что такое SQL
SQL — это особый язык запросов, придуманный, чтобы легко и быстро добывать из обширной базы данных интересующую информацию. Простыми словами схему его работы можно описать так: человек формулирует запрос и передаёт его в базу. Там эта информация обрабатывается и на её основе формируется ответ.
Все данные в компьютерной базе хранятся в виде таблиц. Они распределены по взаимосвязанным срокам и столбцам, чтобы облегчить поиск необходимой информации. Такие базы данных называют реляционными операторами SQL.
Например, у менеджера по продажам есть база, в которой собрана информация обо всех ресторанах в городе: направление кухни, название и состав блюд, график работы, цены продукции и т. д. Анализируя рынок, специалист решил выяснить, сколько ресторанов предлагают своим гостям утку по-пекински и способны доставить её в любое время суток. Чтобы получить эту информацию из базы без лишних усилий, нужно всего лишь написать грамотный SQL-запрос.
Кому нужен SQL
SQL — не является языком программирования, и написать с его помощью сайта или приложения невозможно. При этом работа любого сайта невозможна без обработки запросов. Поиск информации в Яндексе тоже является примером использования языка SQL. Ведь для получения ответа на интересующий вопрос юзер вводит определённые параметры и посылает запрос на сервер. База обрабатывает полученные данные и выдаёт в поиске именно те результаты, которые интересовали пользователя.
Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!
Скачивайте и используйте уже сегодня:
Павел Симонов
Исполнительный директор Geekbrains
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
Получить подборку бесплатно
Уже скачали 24088
Операторы SQL запросов используются в разных сферах:
- Продуктовый маркетинг и аналитика. Знание операторов SQL позволяет работникам этих областей получать и обрабатывать данные независимо от других специалистов.
- Тестирование и разработка сайтов и программ. Сотрудники, знающие работу с операторами SQL, могут сами проектировать нужные базы данных и таким образом улучшать создаваемые ими сайты и программы.
- Менеджмент и управление. Знание SQL операторов позволяет управленцам самостоятельно выяснять в базах интересующую информацию и таким образом контролировать работу своих сотрудников, а также получать данные в режиме реального времени о состоянии дел компании.
Группы операторов SQL
Операторы базы SQL подразделяются на несколько основных групп по признаку типа задач, которые можно решить с их помощью.
DDL (Data Definition Language)
Представляют собой группу операторов для определения данных. Они работают с целыми таблицами. Такие операторы SQL используются в тех случаях, когда нужно внести в базу новую таблицу или, напротив, удалить старую. Они включают в себя следующие командные слова:
- CREATE — создание нового объекта в существующей базе.
- ALTER — изменение существующего объекта.
- DROP — удаление объекта из базы.
DML (Data Manipulation Language)
Эти операторы языка SQL предназначены для манипуляции данными. С их помощью меняется наполнение таблиц. Они позволяют изменять значение строк, столбцов и прочих атрибутов. Такие операторы SQL, например, позволяют удалить информацию о сотруднике, который больше не работает в компании, или исправить данные действующих специалистов. Эти операторы SQL представлены следующими командными словами:
- SELECT — позволяет выбрать данные в соответствии с необходимым условием.
- INSERT — осуществляют добавление новых данных.
- UPDATE — производит замену существующих данных.
- DELETE — удаление информации.
DCL (Data Control Language)
Это операторы SQL, предназначенные для определения доступа к данным. С их помощью можно закрыть или открыть для пользователей работу с базой. Такие операторы необходимы, чтобы ограничить кого-либо из сотрудников в доступе к информации или, наоборот, позволить работать с базой новому специалисту.
- GRANT— предоставляет доступ к объекту.
- REVOKE— аннулирует выданное ранее разрешение на доступ.
- DENY— запрет, который прекращает действие разрешения.
Для вас подарок! В свободном доступе до 26.11 -->
Скачайте ТОП-10
бесплатных нейросетей
для программирования
Помогут писать код быстрее на 25%
Чтобы получить подарок, заполните информацию в открывшемся окне
TCL (Transaction Control Language)
Предназначен для управления транзакциями, то есть таким сочетанием команд, которые выполняются в определённом алгоритме. Транзакция проведена успешно, если все необходимые команды выполнены пошагово. Если же в какой-либо из них произошёл сбой, то вся операция, включая предыдущие команды, отменяется. Простым и понятным примером таких операторов SQL является проведение банковских платежей.
При этом вы сначала вводите сумму, а затем подтверждаете отправку платежа кодом, который вам присылает банк. Если операция не будет подтверждена, то транзакция отменится автоматически.
- BEGIN TRANSACTION — начало транзакции.
- COMMIT TRANSACTION — изменение команд транзакции.
- ROLLBACK TRANSACTION — отказ в транзакции.
- SAVE TRANSACTION — формирование промежуточной точки сохранения внутри операции.
Основные операторы SQL
Арифметические операторы
Арифметические операторы SQL являются самыми простыми и наиболее популярными. Учиться пользоваться ими все начинают ещё в школе.
| Оператор | Описание | Пример |
| + | Бинарный оператор сложения. | p + q = a |
| — | Бинарный оператор вычитания. | a — b = с |
| * | Бинарный оператор умножения. | a * b = с |
| / | Бинарный оператор деления. | b / a = с |
| % | Оператор деления по модулю. Результатом будет целочисленный остаток. | b % a = с |
Дарим скидку от 60%
на обучение «Разработчик» до 26 ноября
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей

Операторы сравнения SQL
Операторы сравнения SQL в результате своей работы позволяют выяснить, верна или нет запрашиваемая информация. По-английски эти значения определяются как true или false.
| Оператор | Описание | Пример |
| = | Этот SQL оператор не арифметическое «равно», известное со школы, а сравнение на равенство. Если равенство верное, то получится результат TRUE, если нет – FALSE. | (6 = 3 + 3) результат TRUE |
| != | SQL оператор не равно или сравнение на неравенство, TRUE система выдаст, если значения будут не равны. | (7 != 13) результат TRUE |
| <> | Аналогичный предыдущему SQL оператор. TRUE мы получим в том случае, если значения будут не равны. | (5 != 11) результат TRUE |
| > | SQL оператор больше. Если левая часть (ее еще называют левый операнд) больше правой, то результат TRUE. | (7 > 2) результат TRUE |
| SQL оператор меньше. Принимает значение TRUE, когда правый операнд больше левого. | (10 < 2) результат FALSE | |
| >= | SQL оператор больше либо равно. Выдает значение TRUE, если правая часть больше либо равна левой. | (16 >= 16) результат TRUE |
| SQL оператор меньше либо равно. Значение TRUE появляется тогда, когда правая часть больше либо равна левой. | (18 <=90) результат TRUE | |
| ! | SQL оператор не меньше. Приобретает значение TRUE, когда правая часть не меньше левой. | (11! <5) результат FALSE |
| !> | SQL оператор не больше. Принимает значение FALSE, когда правая часть не больше левой. | (12 !> 10) результат FALSE |
Только до 23.11
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:

ТОП-100 площадок для поиска работы от GeekBrains

20 профессий 2023 года, с доходом от 150 000 рублей

Чек-лист «Как успешно пройти собеседование»
Чтобы зарегистрироваться на бесплатный интенсив и получить в подарок подборку файлов от GeekBrains, заполните информацию в открывшемся окне
Логические операторы
Далее вы увидите список SQL операторов, которые называют логическими.
| Оператор | Описание |
| ALL | SQL оператор ALL осуществляет вывод всех значений из таблицы. |
| AND | SQL оператор AND представляет собой получение результата при соблюдении двух поставленных условий. |
| ANY | SQL оператор ANY (любой). Осуществляет сравнение текущего задания с дополнительным запросом. |
| BETWEEN | SQL оператор BETWEEN. Для этого оператора SQL условия можно установить в определённом диапазоне. Для корректной работы нужно задать минимальное и максимальное значение. |
| EXISTS | SQL оператор EXISTS. Применяется тогда, когда нужно обозначить, интересует ли пользователя результат подзапроса. |
| IN | Простой SQL оператор IN указывает, с какими значениями нужно вывести строки. |
| LIKE | Популярный SQL оператор LIKE. Данный оператор позволяет осуществлять поиск подстроки в тексте и, если подстрока найдена, то она выводится. |
| NOT | SQL оператор отрицания NOT. Аннулирует любые условия. |
| OR | SQL оператор «ИЛИ». Дает результат в том случае, когда значение TRUE есть хотя бы в одном из операндов. |
| IS NULL | SQL оператор IS NULL позволяет проверить значение поля на NULL. |
| UNIQUE | SQL оператор UNIQUE позволяет проверить уникальность каждой строки. |
Как начать работу с SQL
Синтаксис операторов SQL является очень простым. Чтобы работать с ними, хватит базовых познаний в Еxcel и начального уровня английского языка. Ведь в основном операторам SQL задаются очень простые команды:
- SELECT — выбор данных.
- FROM — источник информации, откуда брать данные.
- JOIN — добавление таблиц.
- WHERE — при каком условии.
- GROUP BY — сформируй группу данных по заданному признаку.
- ORDER BY — сортировка данных по нужному признаку.
- LIMIT —количество результатов.
- ; — конец предложения
Ищете идеальный старт в мире IT? Познакомьтесь с основами программирования, базами данных, системами аналитики и многим другим. Выберите специализацию с помощью полного курса для начинающих разработчиков. Научитесь решать сложные задачи, работать в команде профессионалов и достигать успеха в сложных IT-проектах.
Все системы, работающие с SQL операторами, имеют подобную структуру. Они включают в себя базу данных в виде таблицы, из которой пользователь черпает информацию, возможность отправки запросов и получения результата.
Можно изучить язык SQL самостоятельно. Для этого существует множество видео на на YouTube, а также большое количество статей от специалистов в данной сфере. Конечно, как и в любой другой области, для наиболее полного получения информации и лучшего её усвоения стоит пройти курс у компетентного специалиста.
Основные операторы языка SQL. Интерактивный SQL
Аннотация: В лекции дается общая характеристика операторов языка SQL, используемых, в частности, для работы с базой данных в интерактивном режиме (создание таблиц, выбор информации из таблиц, добавление, удаление и модификация элементов). Приводятся примеры запросов к базе данных на языке SQL
Цель лекции: дать общую характеристику операторов языка SQL и показать, как записываются основные запросы к базе данных на языке SQL (в интерактивном режиме).
12.1. Общее представление об основных операторах языка SQL
Как уже отмечалось в "Программное обеспечение работы с современными базами данных" , все операторы языка SQL разделяются на три составные части: DDL – язык определения данных, DCL – язык управления данными, DML – язык обработки данных .
Приведем примеры основных операторов из вышеуказанных частей (без описания синтаксиса). Описание синтаксиса операторов SQL можно посмотреть в многочисленных книгах по языку SQL , в меню "Справка" конкретных СУБД .
Операторы разграничения доступа пользователей к объектам базы данных (DCL).
GRANT – создание в системе безопасности записи, разрешающей пользователю работать с данными или выполнять определенные операции SQL .
DENY - создание в системе безопасности записи, запрещающей доступ для определенной учетной записи.
Операторы определения данных (язык DDL).
Соответствующие операторы предназначены для создания, удаления, изменения основных объектов модели данных реляционных СУБД : таблиц, представлений, индексов.
CREATE TABLE - создание новой таблицы в базе данных.
DROP TABLE - удаление таблицы из базы данных .
ALTER TABLE - изменение структуры существующей таблицы или ограничений целостности, задаваемых для данной таблицы.
При выполнении аналогичных операций с представлениями или индексами в указанных операторах вместо служебного слова TABLE записывается слово VIEW ( представление ) или слово INDEX ( индекс )
Операторы манипулирования данными (язык DML).
Операторы DML работают с базой данных и используются для изменения данных и получения необходимых сведений.
SELECT – выборка строк, удовлетворяющих заданным условиям. Оператор реализует, в частности, такие операции реляционной алгебры как " селекция " и " проекция ".
UPDATE – изменение значений определенных полей в строках таблицы, удовлетворяющих заданным условиям.
INSERT – вставка новых строк в таблицу.
DELETE – удаление строк таблицы, удовлетворяющих заданным условиям. Применение этого оператора учитывает принципы поддержки целостности, поэтому он не всегда может быть выполнен корректно.
12.2 Интерактивный режим работы с SQL (интерактивный SQL)
Соответствующий режим предусматривает непосредственную работу пользователя с базой данных по следующему алгоритму: используя прикладную программу (клиентское приложение ) или стандартную утилиту, входящую в СУБД , пользователь :
- устанавливает соединение с БД (подтверждая наличие прав доступа);
- вводит соответствующий оператор SQL, при необходимости в режиме диалога вводит дополнительную информацию;
- инициирует выполнение команды.
Текст запроса поступает в СУБД , которая:
- осуществляет синтаксический анализ запроса (проверяет, является ли запрос корректным);
- проверяет, имеет ли пользователь право выполнять подобный запрос (например, пользователь, у которого определены права только на чтение, пытается что-то удалить);
- выбирает, каким образом осуществлять выполнение запроса – план выполнения запроса;
- выполняет запрос;
- результат выполнения отсылает пользователю.
Схема взаимодействия пользователя и СУБД с использованием интерактивного SQL приводится на рис. 12.1.
