Oracle SQL

From AsIsWiki
Jump to: navigation, search

Wiki Home


Contents

Создание таблицы

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 'ЕФИ_ОВ';  -- все значения ЕФИ_ОВ 
                                        -- с любым символом в позиции '_'



Wiki Home · LevelUp · Library

Personal tools
Namespaces

Variants
Actions
Navigation
Tools