Bazy Danych

Opis zajęć i zasad

Zajęcia 8

Manipulowanie danymi i widoki *

INSERT

INSERT, służy do dodawania rekordów do tabeli.

INSERT
[INTO] { table_name | view_name | rowset_function_limited }
[ ( column_list ) ]
VALUES ( Values)

Przykład:

insert into oddzialy values (60,'SZCZECIN','Malwowa 5')

insert oddzialy(id, Adres) values (70,'Malinowa 5')

insert oddzialy(id, Adres) select id, nazwisko from pracownicy

UPDATE

UPDATE, służy do aktualizacji już istniejących rekordów.

UPDATE table_name
SET { column_name = { expression | NULL } }
[ FROM from_clause ]
[ WHERE <search_condition> ]

Przykład:

Update Pracownicy set Placa_pod = 10000 where szef = 110;

DELETE

DELETE pozwala na usunięcie określonych rekordów z tabeli

DELETE
[ TOP ( expression ) ]
[ FROM ] table_source [ ,...n ] ]
[ WHERE { <search_condition> }

Przykład:

delete from oddzialy where nazwa is null

BULK INSERT

Pozwala na wczytywanie danych do tabeli z pliku TXT lub CSV.

Ściągnij i uruchom skrypt:

Ściągnij dane w txt:

Przykład:

Uwaga! Nie możemy go wykonać gdyż nie mamy na serwerze praw do wykonywania operacji bulk.

bulk
  insert DIRECTOR
from 'J:\Desktop\IMBDDirectors.txt'
with
(
FIRSTROW = 2,
FIELDTERMINATOR = ',' ,
ROWTERMINATOR = '\n'
)
go

inaczej:

Wybierz prawym przyciskiem na nazwę bazy -> Tasks -> Import Data
Wybierz Next
Wybierz Flat File source
Wybierz Next
Wybierz plik z dysku
Zmień row delimeter na przecinek
Wybierz Next Next
Jako destination wybierz SQL Server Native Client i swoją bazę danych
Wybierz Next
Wybierz jako bazę docelową u gory dbo.DIRECTOR
Wybierz edit mappings i przypisz odpowiednie kolumny do siebie
Wybierz do końca Next i finish

sprawdż dane:

select * from Directors

Widoki

Widok to sztuczna tabela która nie jest fizycznie przechowywana, aledo której możemy tworzyć zapytania (można to też traktować jako zapisane polecenie select).

Aby stworzyć widok użyjemy polecenia CREATE VIEW as

CREATE VIEW Poznan as
SELECT
        *
FROM
Pracownicy
WHERE
        ID_oddz = 10

Widok nie może zawierać polecenia INTO, COMPUTE, COMPUTE BY oraz ORDER BY, chyba że użyjemy polecenia TOP.

Następnie możemy odwoływać się do widoku jak do tabeli

select * from Poznan

Zmiany w widoku wprowadzamy za pomocą polecenia ALTER VIEW

ALTER VIEW Poznan as
SELECT
        p.*, o.nazwa, o.adres
FROM
Pracownicy p INNER JOIN Oddzialy o
on p.ID_oddz = o.id
WHERE
        p.ID_oddz = 10

Sprawdź wynik zmiany:

select * from Poznan

Widok usuwamy za pomocą polecenia DROP VIEW

DROP VIEW Poznan

WITH CHECK OPTION

Na widokach możemy także dokonywać operacji tablicowych jak insert, czy delete.

W celu związania tabeli z widokiem (tak, aby uniemożliwić wprowadzania zmian w tabeli, bez usunięcia widoku) korzystamy z opcji WITH SCHEMABINDING. W celu wymuszania sprawdzania poprawności wszelkich operacji na końcu definicji widoku dodajemy WITH CHECK OPTION.

CREATE VIEW dbo.Zmiana
WITH SCHEMABINDING
AS
Select
Nazwa AS [MIASTO],
ID
FROM dbo.Oddzialy
WITH CHECK OPTION

Co pozwala nam na wykonanie komendy:

INSERT into Zmiana values ('Lublin',100)

WITH ENCRYPTION

Jeżeli chcemy zaszyfrować nasz widok tak, aby nie można było odtworzyć zapytania, którego dotyczy możemy zastosować komendę WITH ENCRYPTION.

CREATE VIEW dbo.Zmiana2
WITH ENCRYPTION
AS
Select
Nazwa AS [MIASTO],
ID
FROM dbo.Oddzialy

Zadania

UWAGA: W zadaniu 9.2 trzeba użyć funkcji dateadd().

Zadanie Domowe

Zadania 2,3,6,7,8 tematu z tematu 9.Manipulowanie danymi, oraz 2,4,5,6,7 z tematu 10.Widoki.

Termin wykonania zadania: Niedzieli 17.12.2017 do godziny 24.00.

Rozwiązania proszę przesłać przez stronę:

Logujemy się jak na komputery Wydziałowe, przesyłamy plik (jeden wspólny dla wszystkich) z rozwiązaniami.

UWAGA! Rozwiązania można przesłać tylko raz.

*

Wykorzystano materiały z

http://www.sql-kursy.pl/ms-sql-kurs-insert-update-delete-truncate-modyfikacja-danych-7.html

https://technet.microsoft.com/pl-pl/library/ms189245(v=sql.105).aspx

https://www.techonthenet.com/sql_server/delete.php

http://sql-kursy.pl/ms-sql-kurs-create-view-case-when-4.html

https://msdn.microsoft.com/en-us/library/ms187956.aspx

http://www.w3schools.com/sql/sql_view.asp

https://www.codeproject.com/articles/266985/views-in-sql-server