Crearea unui tabel simplu
Tabelele pot fi stocate într-o bază de date în mai multe moduri. Cel mai simplu dintre acestea este un tabel heap. Tabelul poate stoca șiruri de lungimi diferite, la întâmplare. Acesta poate fi orice corelație între ordinea de înregistrare și ordinea în care sunt stocate datele, dar nu pot fi luate în considerare. tabel structura mai complexă, cum ar fi arătat mai jos pot afecta ordinea și gruparea liniilor sau de a utiliza o distribuție aleatorie

Utilizarea unor structuri complexe S tabel nu este în SQL. Orice declarație făcută SQL la tabelele create cu aceste opțiuni vor reveni exact același rezultat este același ca și în cazul în care masa este un morman de tabele convenționale. Dar dacă programatorul știe cum rabotaeyut puteți crește în mod semnificativ productivitatea.
Creați o coloană de tabel care arată
Utilizați următoarea sintaxă pentru a crea un tabel
CREATE TABLE [schema.] Nume_tabelă [ORGANIZAREA HEAP]
(ColumnName datatype [expresie DEFAULT]
[, ColumnName datatype [expresie DEFAULT]);
CREATE TABLE SCOTT.EMP
HIREDATE DATE DEFAULT TRUNC (SYSDATE),
NUMĂRUL COMM (7,2) DEFAULT 0,03);
Numărul EMPNO 4 cifre în lungime, cu nici o parte fracționată. În cazul în care este partea fracționară a valorii INSERT de comandă va fi rotunjită la cel mai apropiat număr întreg.
string enume cu o lungime maximă de 10 caractere
HIREDATE posibil să se utilizeze valoarea orice data cu timpul, în cazul în care timpul nu este specificat miezul nopții valoarea
SAL pentru salariul de stocare are număr de 7 cifre. După șapte cifre vor fi trunchiate, iar valoarea este rotunjită
COMM are o valoare implicită de 0,03, care va fi utilizat în mod explicit dacă valoarea ukazant în timpul INSERT comanda
După crearea unui tabel, puteți înregistra datele și rulați comanda SELECT
Rețineți că coloanele nu sunt listate cu insertul de comandă utilizând valorile specificate în DEFAULT. În cazul în care nu au fost specificate implicit NULL este utilizat în secțiunea DEFAULT. De asemenea, rețineți că valoarea SAL a fost rotunjită.
Clauza DEFAULT poate fi utilă, dar este de funcționalitate limitată. Nu puteți utiliza o subinterogare pentru a genera valoarea implicită: puteți specifica doar valori sau funcții literale.
Crearea tabelelor folosind subinterogari
În loc de a crea tabele de la zero, și apoi inserați rânduri (așa cum am văzut), masa pot fi create folosind tabele diferite - cu subinterogări Pomozov. Această metodă vă permite să definiți o masă și scrie date utilizând o singură interogare. Orice cerere poate fi utilizat ca sursă pentru descrierea de coloane și un set de date (rânduri). sintaxa comenzii
CREATE TABLE nume_tabel AS subquery [Schema.];
Orice interogare returnează un set bidimensional de rânduri; rezultatul este stocat ca un tabel nou. Doar un exemplu de creare a unui tabel folosind o subinterogare
Luați în considerare exemplul de mai complicat
crea emp_dept tabel ca selectați
LAST_NAME Ename, department_name DNAME, rotunde (SYSDATE - hire_date) Serviciu
din angajații se alăture naturale departamente de comanda DNAME, enume;
Rândurile din noul tabel este rezultatul a două tabele obekdineniya surse, și de a schimba numele celor două coloane. SERVICE nouă coloană va fi umplută și rezultatul operații aritmetice obținute de numărul de zile de la data recepției de locuri de muncă. Linia va fi introdus într-o anumită ordine. Această comandă nu va fi controlată prin comenzi ulterioare DML, dar presupunând că HR, un nou tabel este datele standard vor fi după cum urmează

Desigur subinterogare poate include WHERE secțiune pentru a restricționa rândurile care urmează să fie adăugate la noul tabel. Pentru a crea un tabel cu siruri de caractere pomzhno utilizează clauza WHERE nu este executată.
a crea no_emps de masă ca selectați * de angajați în cazul în care 1 = 2;
Schimbarea de masă după crearea
Disponibil in mai multe schimbări sunt posibile după crearea tabelului. Modificările care afectează structura fizică a căderii pe umerii administratorului bazei de date, dar cele mai multe dintre schimbările sunt logice și pot fi aplicate pentru dezvoltatori SQL. Exemplele Raasmotrim (bolshintsvo dintre ei vorbesc de la sine)
- Adăugați o coloană
modifica emp tabel adăuga (număr job_id);
- coloana schimbare
modifica emp tabel modifica (numărul commission_pct (4,2) default 0,05);
- Eliminarea coloană
modifica tabel coloană picătură emp commission_pct;
- Marcarea unei coloane nefolosit
modifica emp tabelul de job_id coloană neutilizată;
- redenumirea unei coloane
modifica emp tabel redenumiți hire_date coloană pentru a recrutat;
- Pornirea pe masa read-only
modifice tabelul emp numai pentru citire;
Toate modificările în aceste comenzi DDL conțin încorporate COMMIT. Aceste modificări nu pot fi anulate, iar acestea nu pot funcționa dacă există o tranzacție activă la masă. De asemenea, aceste operațiuni au loc aproape imediat, cu excepția eliminării coloanei. coloană de demontare poate necesita o perioadă lungă de timp, deoarece coloana este îndepărtat ca fiecare rând trebuie să fie schimbat. Comanda SET coloana NEUTILIZAT face inaccesibile pentru comenzi SQL, și este adesea o alternativă mai bună în colaborare cu echipa
ALTER TABLE nume_tabel PICĂTURĂ COLOANE NEUTILIZAT;
care va elimina toate coloanele neutilizate într-o singură trecere tabel.
După transferul de masă în numai citire-mode toate comenzile DML nu sunt executate. Cu toate acestea, tabela poate fi eliminată, deoarece îndepărtarea doar a șterge siruri de caractere din dicționar.
Îndepărtarea și reducerea mesei (picătură și trunchia)
TRUNCATE TABLE comandă elimină rândurile vsse din tabel și se lasă definiția de masă. comanda DROP TABLE elimină, de asemenea, tabelul de definiție (tabelul în sine, împreună cu datele). sintaxa comenzii
DROP TABLE [schema.] Tabelanume;
SQL nu emite avertismente înainte de efectuarea comenzii DROP, și ca orice comandă DDL conține un built-in COMMIT. îndepărtarea Ie din tabel nu poate fi anulată. În anumite condiții, îndepărtarea poate fi anulat folosind anumite tehnici.
În comanda DROP au unele limitări: echipa va eșua în cazul în care există o tranzacție la masă, sau în cazul în care datele tabel este folosit ca cheia externă a unui alt tabel, apoi pentru a elimina tabelul original, trebuie să ștergeți mai întâi tabele referințe sau cheie externă.