• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[SQL SERVER] Zapytanie - co robię źle?

Object Storage Arubacloud
0 głosów
403 wizyt
pytanie zadane 13 stycznia 2017 w SQL, bazy danych przez Krzysztof Trybuś Mądrala (5,280 p.)
zmienione kategorie 13 stycznia 2017 przez Arkadiusz Waluk

Cześć. Dostałem zadanie z baz danych do zrobienia o następującej treści:

Utwórz  bazę danych  Firma.

Utwórz tabelę Klienci

Id_Klie - typ liczbowy, klucz główny, nie może przyjmować wartości NULL

Last_Name - łańcuch o zmiennej długości (30), nie może przyjmować wartości NULL

First_Name - łańcuch o zmiennej długości (30)

Utwórz tabelę Zamówienia.

Id_zam - klucz główny, typ liczbowy, nie może przyjmować wartości NULL

Data_zam - data i godzina, domyślnie przyjmuje bieżącą datę

Id_Klie - typ liczbowy, klucz obcy kwota - liczba zmiennoprzecinkowa z podwójnąprecyzją

Utwórz tabelę towary.

Id_tow- klucz główny, typ liczbowy, nie może przyjmować wartości NULL

Nazwa_tow - łańcuch o zmiennej długości (30), nie może przyjmować wartości NULL

Cena_tow - typ money Ilosc_tow - zdefiniuj typ danych

W tabeli Zamówienia dodaj kolumnę Id_tow

W tabeli Zamówienia zmień  typ kolumny Kwota na money

W tabeli Zamówienia dodaj kolumnę Ilosc  i zdefiniuj odpowiedni typ

Do tabeli Klienci wprowadź dwa rekordy

Do tabeli Zamówienia wprowadź jeden rekord.

Obecnie zapytanie wygląda tak:

CREATE DATABASE Firma

CREATE TABLE Klienci
(
	id_klienta INT, PRIMARY KEY, IDENTITY(1,1), NOT NULL,
	last_name VARCHAR(30), NOT NULL,
	first_name VARCHAR(30)
)

CREATE TABLE Zamówienia
(
	id_zamowienia PRIMARY KEY, INT, IDENTITY(1,1), NOT NULL,
	data_zamowienia GETUTCDATE(),
	id_klienta INT, FOREIGN KEY,
	kwota FLOAT(8)
)

CREATE TABLE Towary
(
	id_towaru PRIMARY KEY, INT, IDENTITY(1,1), NOT NULL,
	nazwa_towaru VARCHAR(30), NOT NULL,
	cena_towaru MONEY,
	ilosc_towaru SMALLINT
	
)

ALTER TABLE Zamowienia
ADD id_towaru

ALTER TABLE Zamowienia
ALTER COLUMN kwota MONEY

ALTER TABLE Zamowienia
ADD ilosc SMALLINT

INSERT INTO Klienci ('last_name', 'first_name') VALUES ('Trybuś', 'Krzysztof')
INSERT INTO Klienci ('last_name', 'first_name') VALUES ('Trybuś', 'Tomasz')

Wykaz błędów:


Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'IDENTITY'.
Msg 173, Level 15, State 1, Line 12
The definition for column 'id_zamowienia' must include a data type.
Msg 173, Level 15, State 1, Line 20
The definition for column 'id_towaru' must include a data type.
Msg 173, Level 15, State 1, Line 28
The definition for column 'id_towaru' must include a data type.


Miałem po raz pierwszy zastosować "IDENTITY" i nie wiem jak to powinno prawidłowo wyglądać.

 Jak prawidłowo zdefiniować datę używając "GETUTCDATE()" i jaką ta funkcja powinna posiadać wartość? Czy jest ona do tego zadania dobra?

Jak prawidłowo zapytaniem INSERT INTO dodać rekord? Nigdy nie korzystałem z INSERT INTO w SQL Server, a jedynie w php - czy dodając pierwszy rekord muszę określać id korzystając z identity?

Dobrym pomysłem było skorzystanie przy "ilosc_towaru"  i przy "ilość"ze smallint?

Proszę o pomoc.

1 odpowiedź

0 głosów
odpowiedź 13 stycznia 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)

Przyznam szczerze, że nie znam MS SQL Servera więc może wiele nie pomogę, ale pierwszy raz widzę, aby zapisywało się kolumny w bazie w taki sposób:

id_klienta INT, PRIMARY KEY, IDENTITY(1,1), NOT NULL,

Skąd tu tyle przecinków? Nie powinno być czasem z tylko jednym przecinkiem na końcu definicji jednej kolumny?

id_klienta INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
komentarz 13 stycznia 2017 przez Krzysztof Trybuś Mądrala (5,280 p.)
edycja 13 stycznia 2017 przez Krzysztof Trybuś
Sam nie wiem jak to z tymi przecinkami  jest... też nigdy nie korzystałem z przecinków, ale z tego co mi wiadomo, to i z przecinkami działa.

Przy formułowaniu zapytań wzorowałem się na książce, więc chyba jest ok..
komentarz 13 stycznia 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
A gdybyś usunął przecinki i zostawił wszędzie tak jak przykładowo wyżej podałem (tylko z jednym przecinkiem na końcu definicji kolumny) to dostajesz też takie same błędy?
komentarz 13 stycznia 2017 przez Krzysztof Trybuś Mądrala (5,280 p.)

Teraz mam tylko taki problem 


Msg 173, Level 15, State 1, Line 12
The definition for column 'id_zamowienia' must include a data type.
Msg 173, Level 15, State 1, Line 20
The definition for column 'id_towaru' must include a data type.
Msg 173, Level 15, State 1, Line 28
The definition for column 'id_towaru' must include a data type.


 

komentarz 13 stycznia 2017 przez PrzemekG Nowicjusz (160 p.)

Napisałeś deklarację w złej kolejności.

Zamiast ..

id_zamowienia PRIMARY KEY, INT

napisz

id_zamowienia INT PRIMARY KEY

tak jak to było z pierwszą tabelą

Podobne pytania

0 głosów
1 odpowiedź 571 wizyt
pytanie zadane 21 stycznia 2019 w SQL, bazy danych przez Antero00 Gaduła (3,670 p.)
0 głosów
1 odpowiedź 148 wizyt
pytanie zadane 30 maja 2016 w SQL, bazy danych przez HewciakCFC Nowicjusz (120 p.)
0 głosów
1 odpowiedź 98 wizyt
pytanie zadane 5 kwietnia 2016 w SQL, bazy danych przez natrov Gaduła (3,970 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...