Anda di halaman 1dari 16

kondisi pencarian dapat melibatkan meja pencari, misalnya, kita dapat membuat

sejumlah
domain cabang dapat terjadi jika nilai dimasukkan sesuai
dengan jumlah cabang yang ada dalam tabel cabang, dengan menggunakan
pernyataan

CREATE DOMAIN
branchnumber AS CHAR (4)
CHECK ( VALUE IN ( SELECT branchNo FROM Branch));

The preferred menthod of defining domain constrains is using the create domain
statement,

Perilaku drop,
membatasi atau kaskade, menentukan tindakan yang jika domain saat ini sedang
digunakan pada tabel yang ada, melihat, atau definisi pernyataan (lihat bagian
7.2.5), yang
penurunan akan gagal kasus kaskade, setiap kolom tabel yang berbasis domain
berubah secara otomatis untuk menggunakan domain itu yang mendasari tipe data,
dan kendala apapun atau default untuk Domain diganti dengan klausa default kolom,
jika sesuai.

Entitas integritas

Kunci utama tabel


harus berisi nilai, nonnull unik untuk setiap baris misalnya, setiap baris dari
meja propertiforrent memiliki keunikan diwakili oleh baris tersebut. ISO standart
dukungan entiny integritas dengan klausa kunci utama dalam membuat mengubah
tabel pernyataan. misalnya, untuk mendefinisikan kunci primer popertyforrent, kita
termasukklausul berikut.

Kunci primer
Untuk menentukan komposit
kunci primer kita tentukan nama beberapa kolom di primary key
klausa, memisahkan masing-masing dengan koma. Misalnya, untuk menentukan
kunci utama melihat tabel, yang terdiri o clienNo kolom dan propertyNo, kami inklusi
klausa;
Primary key:
Klausa kunci primer
dapat ditetapkan hanya sekali per tabel. Namun, masih mungkin untuk memastikan
keunikan untuk setiap kunci alternatif dalam tabel menggunakan kata kunci
unik. Setiap kolom
yang appers dalam klausa yang unik juga harus dinyatakan tidak nol, mungkin ada

sebanyak unik atau update. operasi yang mencoba untuk membuat duplikat nilai
dalam setiap candidate key (yang kunci primer atau kunci alternatif), misalnya,
dengan melihat tabel kita awan juga telah menulis

clientNo     VARCHAR (5) NOT NULL


propertiNo  VARCHAR (5) NOTNULL
UNIQUE (clientNo,propertyNo)

Sebuah kolom foreign key, atau set kolom, yang memiliki pranala setiap baris dalam tabel
constining anak yang
forihg kunci untuk baris tabel yang berisi parem candidate key yang cocok
nilai. integritas Referential berarti bahwa jika batasan kunci asing nilai yang
nilai harus mengacu pada suatu baris, ada yang valid pada tabel induk. Misalnya,
jumlah cabang branchNo kolom dalam tabel ForRent properti menghubungkan
properti properti ke bahwa baris dalam tabel cabang di mana properti itu
ditetapkan, jika nomor cabang tidak null, harus mengandung nilai yang benar dari
yang BranchNo kolom dari tabel Cabang, atau kekayaan yang ditugaskan ke
valid kantor cabang

ISO mendukung standar definisi foreign key


dengan klausa KUNCI asing di CREATE dan pernyataan ALTER TABLE, untuk
Misalnya, untuk menentukan branchNo kunci asing tabel PropertyForRent, kita
termasuk klausa

Referensi kunci asing


SQL menolak memasukkan apapun
atau update operasi yang mencoba untuk menciptakan nilai kunci asing dalam tabel anak
tanpa nilai calon pencocokan kunci dalam tabel induk, yang aktin SQL mengambil
untuk setiap operasi UPDATE atau DELETE yang mencoba RTO update atau menghapus
kandidat nilai kunci pada tabel induk yang memiliki beberapa baris yang cocok di
tabel anak tergantung pada tindakan referensial ditentukan menggunakan pada
update dan delete subklausa dari klausa kunci asing. Ketika pengguna mencoba
untuk menghapus baris dari tabel induk, dukungan sql empat pilihan tentang
tindakan yang harus diambil

Cascade: hapus baris


dari tabel induk dan secara otomatis menghapus baris yang cocok di tabel anak.
Karena baris ini dihapus mungkin sendiri memiliki sebuah kunci kandidat yang
digunakan sebagai
kunci asing di tabel lain, aturan kunci asing untuk tabel ini
dipicu, dan segera secara cascading
null Mengatur menghapus baris dari tabel induk dan menetapkan nilai kunci asing pada
tabel anak untuk tidak
null, opsi ini hanya berlaku jika kolom kunci asing tidak memiliki bukan null
kualifikasi tertentu.

default Set: menghapus


dari tabel induk dan mengatur setiap komponen kunci asing pada anak
tabel nilai default yang ditentukan. Pilihan ini hanya berlaku apabila asing
kolom kunci memiliki nilai default yang ditentukan

Tidak ada tindakan: menolak


menghapus operasi dari tabel induk. Ini adalah pengaturan default jika pada
menghapus aturan dihilangkan

sql mendukung opsi yang sama ketika candidate key di tabel induk update. Dengan
cascade, nilai-nilai kunci asing dalam tabel anak ditetapkan dengan nilai-nilai baru dari
candidate key di tabel induk. Dengan cara yang dame, yang casdade memperbarui jika
kolom update dalam kunci anak tabel referensi asing di meja lain.

Foer contoh, pada tabel yang staffNo propertyForRent jumlah staf referensi kunci asing meja
guru. Kita dapat menentukan aturan menghapus sedemikian sehingga jika suatu recort
stadd dihapus dari meja guru, nilai dari kolom staffNo terkait dalam tabel PropertyForRent
diatur ke NULL:

FOREIGN KEY (staffNo) REFERENSI staf ON DELETE SET NULL


Demikian pula, jumlah pemilik ownerNo pada tabel propertyforrent merupakan referensi
kunci asing tabel privateowner, kita dapat menentukan aturan update sehingga id jumlah
pemilik update pada tabel privateowner, yang correspondingcolumn dalam tabel
propertyforrent diatur ke nilai baru ;

FOREIGN KEY (ownerNo) REFERENSI privateowner ON UPDATE CASCADE

Kendala UMUM
Update untuk tabel dapat dibatasi oleh aturan perusahaan govering transaksi dunia nyata
yang diwakili oleh pembaruan. Misalnya Dream rumah mungkin memiliki aturan yang
mencegah seorang anggota staf dari mengelola lebih dari 100 properti di saat yang sama,
standar iso memungkinkan kendala umum akan ditentukan menggunakan pernyataan
pernyataan PERIKSA. Kami mendiskusikan cek dan klausa yang unik di awal bagian th
ini. Penegasan itu membuat laporan merupakan kendala integritas yang tidak terkait
langsung Mith definisi tabel. Format laporan adalah

CREATE ASSERTION asssertionname


Check ( searchcondition)

pernyataan ini sangat mirip dengan klausul memeriksa dibahas sebelumnya. Namun, ketika
kendala umumnya melibatkan lebih dari satu tabel, mungkin lebih baik untuk menggunakan
sebuah pernyataan rarther dari duplikat memeriksa di setiap tabel atau tempat kendala
dalam tabel sewenang-wenang. Misalnya, untuk menentukan kendala umum yang
mencegah seorang anggota staf dari mengelola lebih dari 100 properti di saat yang sama,
kita bisa menulis
CREATE ASSERTION staffnothandlingtoomuch
CHECK ( NOT IXIST ( SELECT staffNo

FROM propertyForrent
GROUP BY staffNo
HAVING COUNT (*) > 100))

Kami menunjukkan bagaimana untuk menggunakan fitur ini integritas pada bagian berikut
ketika kita memeriksa pernyataan th membuat mengubah tabel.

Data Definition

The DDL sql memungkinkan objek database seperti skema, domain, meja, pandangan, dan
indeks untuk membuat dan dihancurkan. Pada bagian ini, kita telaah secara singkat
bagaimana membuat dan menghancurkan skema, tabel, dan indeks, kita membahas
bagaimana membuat dan menghancurkan melihat pada bagian berikutnya.Standar iso juga
memungkinkan penciptaan karakter, kolasi set dan terjemahan.Namun, kita tidak akan
conside objek ini database dalam buku ini, pembaca bunga refrred untuk cannan dan data
SQL pernyataan definisi bahasa adalah:

CREATE DROP Skema Skema


DOMAIN CREATE ALTER DROP DOMAIN DOMAIN
CREATE TABLE DROP TABLE ALTER TABLE
DROP VIEW CREATE VIEW

Pernyataan ini digunakan untuk membuat, mengubah, dan menghancurkan struktur yang
membentuk skema konseptual, walaupun tidak dicakup dalam standar SQL, dua pernyataan
berikut yang disediakan oleh banyak DBMNSs:

CREATE INDEX DROP INDEX

perintah tambahan yang tersedia untuk para DBA untuk menentukan detail fisik
penyimpanan data, namun kami tidak daicuss perintah-perintah sini, karena mereka sistem-
spesifik.

7.3.1 MENCIPTAKAN DATABASE Proses menciptakan database yang berbeda


secara signifikan produk untuk produk. Dalam sistem multi-user, kewenangan untuk
membuat database id biasanya diperuntukkan untuk dbma. Dalam sistem pengguna
single user, database default dapat dibentuk

ketika sistem terinstal dan terkonfigurasi, dan lainnya dapat menciptakan oleh pengguna
sebagai dan ketika reuired. Standar iso tidak menjelaskan bagaimana database dibuat, dan
masing-masing dialek generallyhas pendekatan defferent.

Menurut hubungan iso standar, dan hubungan lain dan objek database lain yang ada di
lingkungan. Antara lain, lingkungan masing-masing terdiri dari katalog satu atau lebih, dan
katalog masing-masing terdiri dari sebuah shemas set, Shema adalah sebuah collction
bernama objek database yang dalam beberapa cara terkait satu sama lain (semua objek
dalam database yang dijelaskan dalam satu skema atau yang lain), objek dalam skema
dapat meja, domain pandangan, pernyataan, collation, terjemahan, dan set karakter.
Semua objek dalam skema memiliki pemilik yang sama dan berbagi sejumlah standar.
Standar ini meninggalkan mekanisme untuk menciptakan dan menghancurkan katalog
sebagai diimplementasikan-didefinisikan, tetapi menyediakan mekanisme untuk
menciptakan dan menghancurkan katalog sebagai skema. Pernyataan Definisi skema
memiliki (disederhanakan) setelah

Schema CREATE [NAMA OTORISASI creatoridentifier]


Ada sebelumnya, jika pencipta skema Sqltest adalah smith, pernyataan sql adalah
CREATE skema sqlTest OTORISASI smith
Standar ISO juga menunjukkan bahwa adalah mungkin untuk menentukan dalam
pernyataan ini berbagai fasilitas yang tersedia ke skema pengguna, namun rincian tentang
bagaimana privilenges ditentukan adalah implementasi tergantung.
Skema dapat dihancurkan dengan menggunakan laporan DROP skema, yang memiliki
bentuk sebagai berikut:

Skema DROP nama [MEMBATASI CASCADE]


Jika MEMBATASI yang ditentukan, yang merupakan default jika tidak kualifikasi yang
ditentukan, skema harus kosong atau operasionalisasi gagal, cascade id adalah ditentukan,
kaskade operasi untuk drop semua objek yang terkait dengan skema dalam urutan yang
ditetapkan sebelumnya. Jika salah satu drop yang Dail operasi, Schema DROP gagal. Efek
total skema drop dengan cascade bisa sangat extentive dan harus carriedout hanya dengan
sangat hati-hati, harus dicatat, bagaimanapun, bahwa menciptakan dan DROP pernyataan
Schema tidak selalu didukung.

7.3.2 MENCIPTAKAN TABLE (MENCIPTAKAN TABEL)

Setelah tabel yang dibuat struktur database, sekarang kita dapat menciptakan struktur tabel
untuk hubungan database yang akan disimpan dalam database. Tugas ini achivied
menggunakan perintah CREATE TABLE. Yang memiliki sintaks dasar sebagai berikut:

CREATE TABLE tableName


{(ColumnName tipe data (NOT NULL) (UNIK)
{DEFAULT defaultOption} (PERIKSA (searchCondition) [....]}
{PRIMARY KEY (listofcolumn),]
{[UNIK (listColumns)] [... ..]}
{[FOREIGN KEY (listOfforeignKeycolumn)]
[REFERENSI ParentTableName [(listofcandidateKeyColumn)]

MATCH {SEBAGIAN | FULL {


[ON refretialAction UPDATE]}
[ON refrentialAtion HAPUS]] [....]}
{[PERIKSA (searchCondition)] [....]})

Seperti yang kita diskusikan di bagian sebelumnya, ini vertion dari pernyataan CREATE
TABLE menggabungkan fasilitas untuk mendefinisikan integritas refrentials dan kendala
lainnya ada variasi yang signifikan dalam dukungan yang diberikan oleh dialek berbeda
untuk versi ini pernyataan Namun ketika itu didukung, fasilitas harus digunakan
Pernyataan ini membuat peti dari tabel yang disebut tableName terdiri dari satu kolom lebih
dari tipe data tertentu. Himpunan tipe data diperbolehkan dijelaskan pada bagian
7.1.2. klausa DEFAULT opsional dapat ditentukan untuk memberikan nilai default untuk
kolom tertentu, SQL menggunakan nilai default ini setiap kali gagal memasukkan
pernyataan untuk menentukan nilai untuk kolom. Di antara nilai-nilai lain. Pilihan default
termasuk literal. The NOTNULL,, UNIK, dan klausa PERIKSA telah dibahas dalam bagian
sebelumnya. Klausul yang tersisa yang dikenal sebagai kendala tabel dan opsional bisa
didahului dengan klausa:
CONSTRAINT contraintname

Yang memungkinkan kendala yang akan dijatuhkan oleh nama menggunakan pernyataan
mengubah tabel (lihat berikut).

The klausa PRIMARY KEY menentukan kolom atau kolom yang membentuk kunci utama
untuk meja. Jika ini klausa tersedia, ahould ditentukan untuk setiap meja dibuat.Secara
default, NOT NULL diasumsikan untuk setiap kolom yang terdiri dari primary key, hanya satu
klausul primary key diperbolehkan per tabel. SL menolak setiap operasi insert atau update
yang attempst untuk membuat duplikat baris dalam kolom kunci utama, dengan cara ini, SL
menjamin keunikan dari primary key.

Klausa foreign key menetapkan kunci asing dalam tabel (anak) dan hubungan itu harus
tabel lain (induk). Klausul ini menerapkan batasan integritas referensial. Klausul menentukan
berikut:

listOfForeignKeyColumn A, kolom dari tabel yang dibuat yang dari kunci asing.

Sebuah subclauses REFERENSI, memberikan tabel induk, yaitu, tabel memegang


candidate key yang cocok. jika listofcandidateKeycolumns dihilangkan, kunci asing
diperkirakan untuk mencocokkan kunci primer dari tabel induk. Dalam kasus ini, tabel induk
harus memiliki klausa PRIMARY KEY dalam pernyataan CREATE TABLE nya

Aturan opsional update (ON UPDATE) untuk hubungan yang menentukan tindakan yang
harus diambil ketika kunci calon diperbarui pada tabel induk yang cocok dengan kunci asing
di tabel anak. Tindakan refrential adalah sama seperti untuk aturan UPDATE ON.

Secara default, kendala refrential puas jika ada komponen kunci asing null atau ada baris
yang cocok di tabel induk. Pilihan pencocokan menghasilkan hubungan kendala tambahan
untuk nulls dalam kunci asing. Jika MATCH FULL ditentukan, komponen kunci asing semua
harus nol, atau ada akan Leat satu baris pada tabel induk yang bisa memuaskan selebihnya
adalah benar substitud. Beberapa penulis berpendapat bahwa integritas refrential harus
berarti MATCH FULL.

Ada bisa banyak klausa KUNCI ASING sebagai equired. Para PERIKSA dan klausa
CONSTRAINT memungkinkan kendala tambahan, untuk didefinisikan. Jika digunakan
sebagai kendala kolom, cek klausa referensi taksi hanya kolom yang didefinisikan.Kendala
yang berlaku diperiksa setelah setiap pernyataan SQL telah dilaksanakan, meskipun
pemeriksaan ini bisa ditunda sampai akhir transaksi melampirkan (lihat bagian 7.5). contoh
7.1 demonrates potensi ini verstion pernyataan CREATE TABLE
EXAMPLE 7.1 CREATE TABLE

CREATE DOMAIN ownerNumber AS VARCHAR (5)


CHECK (VALUE IN ( SELECT ownerNo FROM privateOwner));
CREATE DOMAIN StaffNumber AS VARCHAR (5)
CHECK( VALUE IN ( SELECT StaffNo FROM Staff));
CREATE DOMAIN StaffNumber AS VARCHAR (4)
CHECK (VALUE IN ( SELECT BranchNO FROM Branch));
CREATE DOMAIN propertyNumber AS VARCHAR (5)
CREATE DOMAIN Street AS VARCHAR(25)
CREATE DOMAIN City AS VARCHAR (5)
CREATE DOMAIN Postkode AS VARCHAR (8);
CREATE DOMAIN propertyType AS CHAR (1)
CHECK (VALUE IN (‘B’,’C’,’D’,’E’,’F,’M’,’S’));
CREATE DOMAIN propertyRooms As SMILLINT;
CHECK( VALUE BETWEEN 1 AND 15 ));
CREATE DOMAIN propertyRent AS Decimal (6,2)
CHECK( VALUE BETWEEN 0 AND 9999.99);
Create table PropertyForent(
propertyNo PropertyNumber NOTNULL
street street NOTNULL
city city NOTNULL
postkode postkode
type propertytype NOTNULL DEFAULT ‘F’
rooms propertyRooms NOTNULL DEFAULT 4
rent propertyrent NOTNULL DEFAULT 600
ownerNo OwnerNumber NOTNULL
staffNo staffNumber

CONSTRAINS StaffHandlingToomuch
CHECK ( NOT EXIST (SELECT staffNo
FROM PropertyForrent
GROUP BY StaffNo
HAVING COUNT(*) > 100)),
BranchNo BrunchNumber NOTNULL
PRIMARY KEY (propertyNo)
FOREIGN (StaffNo) REFERENCE Staff ON DELETE SET NULL
ON UPDATE CASCADE
FOREIGN KEY (ownerNo) REFERENCE PrivateOwner ON DELETE NO
ACTION ON UPDATE CASCADE,
FOREIGN KEY (branchNo) REFERENCE Branch ON DELETE NO
ACTION ON UPDATE CASCADE);
Nilai default dari 'f' untuk 'flat' telah ditetapkan untuk tipe tipe properti kolom, menjadi
kendala untuk kolom jumlah staf telah ditetapkan untuk memastikan bahwa anggota staf
properti tidak terlalu banyak menangani properti. Kendala cek apakah jumlah anggota staf
properti saat ini menangani lebih dari 100.

Kunci utama adalah properti nomor, propertyNo. SQL secara otomatis memberlakukan


keunikan pada kolom ini, jumlah staf, staffNo, merupakan referensi kunci asing meja guru
Aturan penghapusan telah ditetapkan seperti itu, jika sebuah record dihapus dari meja guru,
yang sesuai nilai-nilai kolom staffno dalam tabel propertyforrent diatur ke
null.Ditambahkannya, sebuah nilai yang bersesuaian pada kolom staffno dalam tabel
propertyforrent, nilai-nilai yang sesuai di kolom staffno dalam tabel propertyforrent adalah
update dengan demikian, jumlah ownerno pemilik, adalah kunci asing refrencing meja
privateowner, Sebuah aturan penghapusan NO ACTION telah telah ditetapkan seperti itu,
jika nomor pemilik update, nilai yang sesuai di kolom ownerno dalam tabel propertyforrent
diset ke nilai baru. Aturan yang sama telah ditetapkan untuk kolom BranchNo, dalam semua
kendala KUNCI ASING, karena listofcandidatekeycolumn telah dihilangkan, SL
mengasumsikan bahwa kunci asing cocok dengan kunci primer dari tabel induk repective.
Catatan, kami tidak dirinci TIDAK NULL untuk staffNo jumlah staf kolom karena mungkin
ada jangka waktu tertentu jika tidak ada anggota staff yang dialokasikan untuk Manege
properti

Mengubah definisi tabel


Standar ISo menyediakan pernyataan ALTER TABLE untuk mengubah struktur dari tabel
setelah telah dibuat. Definisi pernyataan ALTER TABLE dalam standar ISO terdiri dari enam
pilihan untuk:

Tambah kolom baru ke tabel:


Drop kolom dari tabel;
Tambahkan kendala tabel baru;
Drop kendala meja;
Mengatur default untuk kolom;
Drop default untuk kolom;
ALTER TABLE TableName

[ADD[COLUMN] (columnname data type [NOT NULL] [ UNIQUE]


[DEFAULT defaultOption] [CHECK searchCondition)]]
DROP[COLUMN] column name [RESTRICT| CASCADE]]
[ADD[ CONTRAINT[contrainstName]] tableConstraintDefinition]
[DROP CONSTRAINT ConstraintName[RESTRICT | CASCADE||
[ALTER[CONSTRAINT] SET DEFAULT defaultOption]
[ALTER[CONSTRAINT] DROP DEFAULT]

Mana paramenter adalah sebagai ditetapkan untuk membuat laporan tabel di bagian
sebelumnya. tableContraintDefinition adalah salah satu klausa: UNIK PRIMARY KEY,
FOREIGN KEY, atau PERIKSA. The cluase ADD KOLOM mirip dengan kalimat spectifies
nama kolom ro dijatuhkan dari definisi tabel dan memiliki kualifikasi opsional yang bahwa
spectifies apakah tindakan drop adalah untuk caaascade atau tidak;

MEMBATASI: operasi drop ditolak jika kolom direferensikan oleh database lain

CASCADE: hasil drop operasi dan secara otomatis drop kolom dari database setiap objek
yang direferensikan oleh, ini kaskade operasi sehingga jika kolom terjatuh dari objek
referensi, SQL memeriksa apakah yang kolom oleh obyek apapun dan drop dari sana jika
dan segera

Contoh 7.2 alter tabel

ALTER TABLE staff


ALTER position DROP DEFAULT;
ALTER TABLE staff
ALTER sex SET DEFAULT ’F’;

Anda mungkin juga menyukai