Mam takie zadanie czy ktoś może mi pomóc bo trochę nie wiem jak do tego podejść :
"Dzięki zastosowaniu SQL ALTER, dodać nową kolumnę o nazwie Numer_pokoju do tabeli Komputery . Ma on przyjmować wartości C2: 06, E1: 01 itd . "
za pomoc serdeczne dzięki
A co już zrobiłeś? Z czym jest problem? Jeśli nie wiesz jak użyć składni ALTER to trzeba przeczytać dokumentację.
Nie za bardzo rozumiem to polecenie ---Ma on przyjmować wartości C2: 06, E1: 01 itd .-----
Teraz mam pytanie bo może chodzi o to , czy jest coś takiego w sql jak w Access kiedynaprzyklad wpisuje kod pocztowy to wpisuje ciag liczb a program sam rozdziela. Czy jest taka opcja zeby np wpisuje 12345678901234567890 a w kolumne dzieli na 12345-67890-12345-67890 czyli automatyczne uzupelnianie z podzialem .czyli wpiisze c206 a program podzieli na c2:06
Możesz to zawrzeć w procedurze która będzie odpowiedzialna za insertowanie danych z formularza do bazy albo napisać trigger. Możesz też po stronie aplikacji maske zawrzeć.
dla 1 przykładu użyj funkcji:
regexp_replace
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm
select
REGEXP_REPLACE('12345678901234567890', '(\d{5})(\d{5})(\d{5})(\d{5})', '\1-\2-\3-\4')
from dual;
dla 2 przykładu:
SELECT
substr(nazwa_kol,1,2)||':'||substr(nazwa_kol,3,4) as nazwa_kol
FROM nazwa_tab;
To są przykłady na bazę Oracle , podaj nazwę bazy jaką używasz
Kasia Kasia mam jedno pytanie bo komenda ma stworzyc kolumne przez Alter. Czy możesz mi pomóc jak to przerobić
Ja używam navicat for mysql czy możesz powiedzieć mi jak ma wyglądać ten kod bo trochę jesyem już załamany.
nie mam zainstalowanej bazy MySQL , mam Oracle . Z tego co pamietam , składnia powinna być taka sama.
na początku tworzymy tab dla przykładu :
create table RowA (
rowaa char(5) );
następnie ograniczenie:
ALTER TABLE RowA
ADD CONSTRAINT check_REGEXP_REPLACE
CHECK ( substr(rowaa,1,1) BETWEEN 'a' AND 'z'
AND substr(rowaa,3,1) = ':'
AND substr(rowaa,4,2) BETWEEN '0' AND '9'
)
dodajemy :
insert into RowA VALUES ('c2:05');
komunikat :
1 rows inserted.
dodajemy :
insert into RowA VALUES ('ABC12');
zwraca komunikat błędu:
Error starting at line 16 in command:
insert into RowA VALUES ('ABC12')
Error report:
SQL Error: ORA-02290: naruszono więzy CHECK (SYS.CHECK_REGEXP_REPLACE)
02290. 00000 - "check constraint (%s.%s) violated"
*Cause: The values being inserted do not satisfy the named check
*Action: do not insert values that violate the constraint.
czyli nasze ograniczenie działa