Oracle SQL
From AsIsWiki
Создание таблицы
CREATE TABLE BOYS ( ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR2(255) NOT NULL ) CREATE TABLE GIRLS ( ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR2(255) NOT NULL ) -- Без ключа: CREATE TABLE BOYS ( NAME VARCHAR2(255) NOT NULL ) CREATE TABLE GIRLS ( NAME VARCHAR2(255) NOT NULL )
Заполнение таблицы
INSERT INTO BOYS (ID, NAME) VALUES (SOME_SEQUENCE.NEXTVAL, 'Петя') -- создание SEQUENCE см. далее INSERT INTO GIRLS (ID, NAME) VALUES (SOME_SEQUENCE.NEXTVAL, 'Маша') -- создание SEQUENCE см. далее -- Без ключа: INSERT INTO BOYS (NAME) VALUES ('Вася'); INSERT INTO GIRLS (NAME) VALUES ('Даша');
Декартово произведение
SELECT * FROM BOYS, GIRLS; SELECT * FROM BOYS, (SELECT * FROM BOYS);
Удаление таблицы
DROP TABLE BOYS; DROP TABLE GIRLS;
Удаление строк из таблицы
DELETE FROM BOYS WHERE NAME = 'Петя';
Строковые функции
SUBSTR(STRING, POSITION) SUBSTR(STRING, POSITION, LENGTH) Примеры: SELECT SUBSTR('1234567890', 4) FROM DUAL --> 4567890 SELECT SUBSTR('1234567890', 0, 3) FROM DUAL --> 123 SELECT SUBSTR('1234567890', 1, 3) FROM DUAL --> 123 SELECT SUBSTR('1234567890', -4, 3) FROM DUAL --> 789
Автоувеличение индексного поля
CREATE TABLE Students ( id INT PRIMARY KEY, fullname VARCHAR2(80) NOT NULL ); CREATE SEQUENCE seq_students start WITH 1 increment BY 1 nomaxvalue; -- триггер нужен для автоматической генерации id CREATE OR REPLACE TRIGGER trig_students BEFORE INSERT ON Students FOR EACH ROW BEGIN SELECT seq_students.NEXTVAL INTO :new.id FROM dual; END;
Удаление поля
ALTER TABLE SOME_TABLE DROP COLUMN SOME_FIELD
Версия Oracle
SELECT * FROM v$version; SELECT * FROM product_component_version;
Текущая дата и время
SELECT CURRENT_DATE FROM DUAL; SELECT SYSDATE FROM DUAL;
Числовые функции
ABS(N) -- абсолютное значение числа N: SELECT ABS(100) X1, ABS(-100) X2, ABS(-100.2) X3 FROM DUAL; CEIL(N) -- наименьшее целое, большее или равное параметру N: SELECT CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4 FROM DUAL; FLOOR(N) -- наибольшее целое, меньшее или равное параметру N: SELECT FLOOR(100.22) X1, FLOOR(-100.22) X2, FLOOR(100.99) X3, FLOOR(100.01) X4 FROM DUAL; TRUNC(N, [M]) -- число N, усеченное до M знаков после запятой. Если M не указан, то N усекается до целого: SELECT TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3, TRUNC(100.25678, 2) X4 FROM DUAL
Вывод всех таблиц базы
SELECT * FROM TABS; SELECT TABLE_NAME FROM TABS; SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE = 'TABLE'; SELECT * FROM DICT; SELECT TABLE_NAME FROM ALL_ALL_TABLES;
Описание таблицы
DESC USERS; DESCRIBE USERS;
Отсечение времени
SELECT TRUNC(REGISTRATIONDATE) FROM PERSONCARD;
Шаблоны LIKE
SELECT * FROM SOME_TABLE WHERE UPPER(SOME_FIELD) LIKE '%ИКС'; -- все значения, заканчивающиеся на ИКС SELECT * FROM SOME_TABLE WHERE UPPER(SOME_FIELD) LIKE '%ИКС%'; -- все значения с подстрокой ИКС SELECT * FROM SOME_TABLE WHERE UPPER(SOME_FIELD) LIKE 'ЕФИ_ОВ'; -- все значения ЕФИ_ОВ -- с любым символом в позиции '_'