CREATE TABLE …
<=1000 стоблцов
NUMBER(h, t),
DATE,
VARCHAR2(т) (max <=4000); CHAR(т) –(max <=2000);
LOB (large objects) (звук, картина, текст,...):
LONG (текст) <=2 Gbyte;
LONG RAW (бинарные коды) <=2 Gbyte;
Создание таблиц при наличии привиллегий – CREATE TABLE или CREATE ANY TABLE
CREATE TABLE testtab (col1 VARCHAR2(10))
STORAGE (INITIAL 100K NEXT 50K
MINEXTENTS 1 MAXEXTENTS99 PCINCREASE 20);
Партициальная таблица:
CREATE TABLE tab (col1 VARCHAR2(10), col2 VARCHAR2(10) )
PARTITION BY RANGE (col1, col2) (PARTITIONp1 VALUES LESS THEN (…)
TABLESPACE p1, PARTITION p2 VALUES LESS THEN (…) TABLESPACE p2);
ALTER TABLE tabDROP PARTITIONp1;
RENAME testtab TO testtab1;
DROP TABLE testtab;
- Основные функции в Oracle:
TO_CHAR(number/date), TO_CHAR(number/date, <format>) TO_NUMBER(<string>)
TO_DATE(<string>), TO_DATE(<string>, <format>),
TO_DATE(2008||’.’||01||’.’|| 09,’yyyy.mm.dd’)
Установка формата дaты:ALTER SESSION SET NLS_DATE_FORMAT = ’dd:mm:yyyy’
ADD_MONTHS(<date>, n)
ABS(n), COS(n), COSH(n), SIN(n), SINH(n) ,
TAN(n) , TANH(n), LN(n), LOG(<осн>, n), MOD(m, n) (mod(7,5)=2),
POWER(x,y) (power(3,2)=9), ROUND(n [,decimal_degits]), SIGN(n),
CEIL(n) (ceil(10.7)= 11), FLOOR(n) (floor(10.7)=10), SQRT(n)
ASCII(c), CHR(n), INITCAP(string), INSTR(string, sub_string [,n, [,m]])
LENGTH (string), LOWER (string), UPPER (string),
LPAD (string, n), LPAD (string, n[,pad_chars]),
RPAD (string, n), RPAD (string, n[,pad_chars]),
LTRIM (string), RTRIM (string),
SUBSTR (string, start [,length]) (Substr(’abcdef’, 3, 2): cd),
TRANSLATE(string, search_set, replace_set) TRANSLATE (’eger’, ’e’ , ’a’)=’agar’
NVL(выр, <замена>) если выр =NULL, то выр:= <замена>
Для значения NULL – только операции IS NULL, IS NOT NULL
Неправильно – SELECT e_name, sal+comm FROM emp;
Правильно – SELECT e_name, sal+NVL(comm, 0) FROM emp;
DECODE(выр, v_1, trans_1, v_2, trans_2,... v_n, trans_n, default)
SELECT DECODE(job, ’clerk’, ’служащий’, ’president’ ’Президент’, default) FROM emp;
* Иерархический запрос
В ORACLE9i– возможна обработка структуры дерева таким образом
SELECT … FROM … WHERE ….
CONNECT BY {PRIORвыр = выр | выр = PRIOR выр }
[START WITHвыр = выр ] [ORDER BY …];
Связь между столбцами одной и той же таблицы – при помощи CONNECT BY,
START WITH– задает строку, с которой начинается построение дерева
SELECT код, ФИО, код_начальникаFROMemp
CONNECT BY код_начальника = PRIOR код
START WITHкод_начальника IS NULL;
SELECT LEVEL ASуровень,
еname,
deptno
FROM emp
CONNECT BY mgr =PRIOR empno
START WITH UPPER(ename) = ’KING’
ORDER BY deptno;
УРОВЕНЬ ENAME DEPTNO
1 KING 10
2 CLARK 10
3 MILLER 10
2 JONES 20
3 SCOTT 20
4 ADAMS 20
* Операции сo множествами (UNION, INTERSECT, MINUS )
SELECT d_name FROM dept WHERE d_name LIKE ’%s%’
UNION [INTERSECT, MINUS]
SELECTd_name FROMdept WHERE d_name LIKE ’%o%’;
Модификация таблиц – INSERT, UPDATE, DELETE, TRUNCATE
INSERT INTO testtab (col1, col2) SELECTe_name, emp_no FROMemp;
CREATE TABLE emp_copy AS SELECT * FROMemp;
UPDATE emp_copy2 ec SET (emp_no, e_name) =
(SELECT emp_no, e_name FROM emp eWHERE e.emp_no=ec.emp_no)
WHERE e_nameLIKE ’I%’;
DELETE FROM emp_copy2 WHERE emp_no IN (SELECT emp_no FROM emp_copy);
UPDATE emp_copy SET e_name= UPPER( SUBSTR(e_name, 1, 1)) ||
LOWER(SUBSTR(e_name, 2,LENGTH(e_name)-1));
TRANCATE TABLE emp_copy; удаление всех строк таблицы
* Последовательности
CREATE SEQUENCEseqSTART WITH n
seq.CURRVAL – текущий элементпоследовательности
seq. NEXTVAL – следующийэлементпоследовательности
CREATE SEQUENCE stud_sequence START WITH10000;
INSERT INTO stud (id, first_name, ...)VALUES (stud_sequence.NEXTVAL, ...);
DROP SEQUENCEseq;
* Синонимы
CREATE SYNONIM empFOR scott.emp
CREATE PUBLIC SYNONIMempFOR scott.emp
DROP SYNONIMemp;
Синоним для удаленной БД:
CREATE PUBLIC SYNONIM synonFOR p.ar@AB_1
AB_1 база данных, таблица ar владелец p.
PL/SQL
PL/SQL используется в: SQL*Plus, Oracle Forms, Oracle Reports, Oracle Graphics, Oracle Application Server
String_1 := ‘Hello’ || ’World’ || ’!’;
* Условные операторы
IF <условие1> THEN команды1; [ELSEIF < условие2> THEN команды2; ] …….
[ELSEкоманды_N;] END IF;
* Оператор CASE
CASE
WHENлогич.выражениеTHEN выражение
[WHENлогич.выражениеTHENвыражение] ….
ELSEвыражение
END
или
CASEвыражение
WHENзначение THENвыражение
[WHENзначениеTHENвыражение] ….
ELSEвыражение
END
* Метки<< m >> p; GOTO << m >>;
* Циклы.
1). LOOP команды EXIT [WHEN условие]END LOOP;