Felhasználói eszközök

Eszközök a webhelyen


oktatas:adatbazis-kezeles:mariadb:sql:ddl

< SQL

Adatdefiníció

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

rename table eredetinev to ujnev;

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