oktatas:adatbazis-kezeles:mariadb:sql:ddl
Tartalomjegyzék
Adatdefiníció
- Szerző: Sallai András
- Copyright © 2019, Sallai András
- Szerkesztve: 2019-2024
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
A DDL
A DDL a Data Definition Language rövidítése.
Adatbázis létrehozás
create database aranybt character set utf8 collate utf8_hungarian_ci;
Ellenőrzés:
show databases; select @@character_set_database; select @@collation_database;
Tábla létrehozása
create table dolgozok( az int not null primary key auto_increment, nev varchar(20), city varchar(20), salary double, birth date, active boolean );
Tábla módosítás
Tábla átnevezés
Mező hozzáadása
alter table megrendelesek add szallitoaz int;
alter table tabla1 add id int first; alter table tabla1 add nev varchar(30) after id;
Mező módosítása
Elsődleges kulcs módosítása:
alter table tabla1 modify id integer not null auto_increment;
A varchar(30) helyett szeretnénk beállítani varchar(150)-t:
alter table konyvek modify cim varchar(150);
alter table konyvek modify column cim varchar(150);
Mező átnevezése
alter table Transactions change column `targetNumber` -- régi név targetId -- új név int; -- minden típusinformáció
Másik példa:
alter table dolgozok change nev vnev varchar(100);
Kulcs módosítás
A kulcs eldobása előtt törölni kell az auto_increment beállítást.
Kulcs eldobása:
alter table Accounts drop primary key;
Kulcs beállítása:
alter table Accounts add id int not null primary key auto_increment first;
Összetett kulcs:
alter table Tablanev add primary key (fid, vid);
Kulcs beállítása utólag
alter table dolgozok add primary key(az)
Vagy:
alter table dolgozok add constraint dolgozok_pk primary key(az)
Kulcs törlése
-- Elsődleges kulcs törlése alter table dolgozok drop primary key;
Idegenkulcs használata
Hivatkozási integritás
A MySQL-ben hivatkozási integritás az idegenkulcs beállításával valósítható meg.
Hivatkozási integritás:
- új rekord felvétel csak akkor lehetséges, ha az idegenkulcsban megjelölt érték létezik a kapcsolt táblában
- az elsődleges táblában nem módosítható az elsődleges kulcs értéke, ha a kapcsolt táblában hivatkoznak rá
- az elsődleges táblából nem törölhetünk olyan rekordot, amelyre hivatkoznak egy másik táblából
CREATE TABLE ugyfelek ( ugyfelAz INT NOT NULL, nev VARCHAR (50 ), PRIMARY KEY( ugyfelAz ) ) ENGINE=InnoDB
CREATE TABLE rendelesek ( rendelesAz INT NOT NULL, koltseg INT, ugyfelAz INT NOT NULL, PRIMARY KEY(rendelesAz), INDEX ( ugyfelAz ), FOREIGN KEY(ugyfelAz) REFERENCES ugyfelek(ugyfelAz) ) ENGINE = InnoDB;
Kaszkádolt frissítés
Kapcsolt (kaszkádolt) frissítés, amikor mindkét kapcsolódó táblában egyszerre változtatjuk az értéket.
ON DELETE CASCADE ON UPDATE CASCADE
create table rendelesek ( rendelesAz int not null, koltseg int, ugyfelAz int not null, primary key(rendelesAz), index( ugyfelAz ), foreign key(ugyfelAz) references ugyfelek(ugyfelAz) on delete cascade on update cascade ) ENGINE = InnoDB
Idegenkulcs kezelése
Idegenkulcs hozzáadása:
alter table Szemelyek add foreign key(beosztasAz) references Bosztasok(az);
Megadhatjuk az idegenkulcs nevét:
alter table Szemelyek add constraint `FK_Nev` foreign key(beosztasAz) references Bosztasok(az);
Ellenőrzés:
show create table Szemelyek;
Idegenkulcs törlése:
alter table táblanév drop foreign key fk_name;
Idegenkulcs meghatározásának cseréje, egyetlen utasítással:
alter table táblanév drop foreign key `fk_nev`, add constraint `fk_nev2` foreign key (`idegenkulcsAz`) references `Masik_tabla` (`az`) on delete cascade;
Idegenkulcs másként:
alter table Tablanev add primary key (fid)
Összetett kulcs
Összetett kulcs megadása:
alter table Tablanev add primary key (fid, vid)
Bool típus
Boolean típus alapértelmezéssel:
alter table dolgozok add enabled boolean not null default true after `fizetes`;
Verziókövetés
create table dolgozok (nev varchar(50) with system versioning);
insert into dolgozok set nev="Pál"; insert into dolgozok set nev="Béla"; insert into dolgozok set nev="Teri";
update dolgozok set nev="Lola" where nev="Teri";
select * from dolgozok for system_time all;
Szerkezet változtatásának engedélyezése:
SET @@system_versioning_alter_history = 1;
Törlés:
alter table dolgozok drop system versioning;
Forrás:
oktatas/adatbazis-kezeles/mariadb/sql/ddl.txt · Utolsó módosítás: 2024/01/17 22:22 szerkesztette: admin