Portfoolio

ALTER TABLE

Tabeli muutmine

1. tabeli muutmine ja uue veeru lisamine
Uue veeru lisamiseks tabelisse kasutatakse käsku ALTER TABLE koos ADD.

ALTER TABLE kasutaja ADD epost varchar(20);

2. tabeli muutmine ja olemasoleva veeru kustutamine
Olemasoleva veeru eemaldamiseks kasutatakse käsku DROP COLUMN

ALTER TABLE kasutaja DROP column epost;

3. tabeli muutmine ja veeru andmetüübi muutmine
Veeru andmetüübi muutmiseks kasutatakse erinevaid käske sõltuvalt andmebaasist.

-- SQL Server
ALTER TABLE kasutaja ALTER COLUMN parool varchar(25);
-- mariadb/XAMPP
ALTER TABLE kasutaja MODIFY parool varchar(25);

Protseduuride loomine
Loome protseduuri, mis muudab tabelit ning lisab või kustutab selles veeru.

See protseduur muudab tabelit (lisab või kustutab veerge).

create procedure alterTable
@valik varchar(20),
@tabeliNimi varchar(25),
@veeruNimi varchar(25),
@tyyp varchar(20) = null
as
begin
    declare @sql as varchar(max)
    set @sql = case
        when @valik = 'add' then
            concat('alter table ', @tabelinimi, ' add ', @veerunimi, ' ', @tyyp)
        when @valik = 'drop' then
            concat('alter table ', @tabelinimi, ' drop column ', @veerunimi)
    end;

    print @sql;
    begin
        exec (@sql);
    end;
end;

Siin kasutatakse ja kustutatakse protseduuri.

--kutse
exec alterTable @valik='add', @tabeliNimi='kasutaja', @veeruNimi='mobiil', @tyyp='char(13)';
select * from kasutaja;

--kustutamine
exec alterTable @valik='drop', @tabeliNimi='kasutaja', @veeruNimi='mobiil';

--proc kustutamine
drop procedure alterTable;

Siin lisatakse piirangud (primary key ja foreign key).

--piirangud

create table city(
id int not null,
cityname varchar(50));
select * from city;

--pk lisamine
alter table city
add constraint pk_id primary key(id);

--fk lisamine
alter table kasutaja add elukoht int;
select * from kasutaja;

alter table kasutaja
add constraint fk_city foreign key(elukoht)
references city(id);

show columns from city;

Skeem milline näitab kahe tabeli (kasutaja ja city)