SQL 3(DDL modyf tab view index)

background image

Politechnika Poznańska,
Instytut Elektrotechniki i Elektroniki Przemysłowej

JĘZYK DDL

(DATA DEFINITION LANGUAGE)

background image

2

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Modyfikacja nie jest możliwa gdy jest to kolumna:

typu text, image,

obliczeniowa używana w innej kolumnie

replikowana

używana w indeksie

używana w statystykach

używana w ograniczeniu klucza podstawowego
(PRIMARY KEY) oraz obcego (FOREIGN KEY)

używana w ograniczeniu CHECK, UNIQUE, DEFAULT

MODYFIKACJA TABEL (KOLUMN)

background image

3

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

ALTER TABLE <nazwa_tabeli>

[ADD <definicja_kolumny>] |
[DROP COLUMN <nazwa_kolumny>] |
[ALTER COLUMN <definicja_kolumny>] |
[[WITH NOCHECK] ADD CONSTRAINT

<ograniczenie_tabeli>] |

[DROP CONSTRAINT <nazwa_ograniczenia>]

MODYFIKACJA TABEL (2)

background image

4

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

kolumny bez ograniczeń

ALTER TABLE pracownicy
ADD PRAC_PESEL varchar(11)

ALTER TABLE pracownicy
ALTER COLUMN PRAC_PESEL int

ALTER TABLE pracownicy
DROP COLUMN PRAC_PESEL

MODYFIKACJA TABEL (3)

background image

5

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

kolumny z ograniczeniami typu CHECK

ALTER TABLE pracownicy

- ADD PRAC_PESEL int

- ADD CONSTRAINT sprawdz_PESEL

CHECK(PRAC_PESEL > 0)

- DROP COLUMN PRAC_PESEL

- DROP CONSTRAINT sprawdz_PESEL

- DROP COLUMN PRAC_PESEL

- ADD PRAC_PESEL int CONSTRAINT

sprawdz_PESEL CHECK(PRAC_PESEL > 0)

MODYFIKACJA TABEL (4)

background image

6

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

modyfikacja ograniczeń typu CHECK

ALTER TABLE pracownicy
ADD CONSTRAINT MIN_PLACA_POD

CHECK(PRAC_PLACA_POD > 1000)

ALTER TABLE pracownicy
DROP CONSTRAINT MIN_PLACA_POD

ALTER TABLE pracownicy
ADD CONSTRAINT MIN_PLACA_POD

CHECK(PRAC_PLACA_POD > 1000)

MODYFIKACJA TABEL (5)

background image

7

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

modyfikacja naruszająca ograniczenie CHECK

ALTER TABLE pracownicy

- ALTER COLUMN PRAC_PLACA_POD int

- DROP CONSTRAINT MIN_PLACA_POD

- ALTER COLUMN PRAC_PLACA_POD int

- ADD CONSTRAINT MIN_PLACA_POD

CHECK(PRAC_PLACA_POD > 2000)

- WITH NOCHECK ADD CONSTRAINT

MIN_PLACA_POD
CHECK(PRAC_PLACA_POD > 2000)

MODYFIKACJA TABEL (6)

background image

8

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

modyfikacje naruszające ograniczenia kluczy

ALTER TABLE pracownicy

- ALTER COLUMN PRAC_ID int
- DROP CONSTRAINT PK_PRAC
- DROP CONSTRAINT FK_ID_SZEFA
- DROP CONSTRAINT PK_PRAC
ALTER TABLE PRZYDZIALY
DROP CONSTRAINT FK_PRZYDZIALY_PRACOWNICY
ALTER TABLE WYPLATY
DROP CONSTRAINT FK_WYPLATY_PRACOWNICY
- DROP CONSTRAINT PK_PRAC
- ALTER COLUMN PRAC_ID int

MODYFIKACJA TABEL (7)

background image

9

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

modyfikacje kolumn z wartościami domyślnymi

ALTER TABLE pracownicy

- ADD CONSTRAINT DF_PLACA_DOD DEFAULT 200

FOR PRAC_PLACA_DOD

- ALTER COLUMN PRAC_PLACA_DOD int

- DROP COLUMN PRAC_PLACA_DOD
- DROP CONSTRAINT DF_PLACA_DOD
- ADD PRAC_PLACA_DOD int CONSTRAINT

DF_PLACA_DOD DEFAULT 300

- ALTER COLUMN PRAC_PLACA_DOD numeric(6)
- DROP CONSTRAINT DF_PLACA_DOD
- ALTER COLUMN PRAC_PLACA_DOD numeric(6)

MODYFIKACJA TABEL (8)

background image

10

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Pozwala sprawdzić, czy (nie)istnieją wiersze spełniające

kryterium podzapytania.

IF [NOT] EXISTS (<podzapytanie>)
<instrukcja wykonywana warunkowo>
GO

IF NOT EXISTS(SELECT * FROM pracownicy

WHERE prac_id = 280)

INSERT INTO PRACOWNICY VALUES

(280,'Kamil','Baczyński','Czeladnik',22
0,'2000-10-01',2050.00,NULL,50,123456);

GO

INSTRUKCJA IF EXIST

background image

11

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Widoki są wirtualnymi tabelami, w których znajdują się wyniki
zapytania traktowane jako prawdziwa tabela.

tworzenie widoków

CREATE VIEW <nazwa_widoku> AS <instr_select>

CREATE VIEW numery_prac AS SELECT

prac_nazwisko, prac_id FROM pracownicy

zmiana w widokach

ALTER VIEW <nazwa_widoku>
AS <instrukcja_select>

usuwanie widoków

DROP VIEW <nazwa_widoku>

DROP VIEW numery_prac

WIDOKI

background image

12

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

wykorzystanie instrukcji IF EXISTS

IF EXISTS (SELECT name FROM sysobjects

WHERE NAME='numery_prac' AND type='V')

DROP VIEW numery_prac
GO

CREATE VIEW numery_prac AS
SELECT prac_nazwisko, prac_imie, prac_id

FROM pracownicy

GO

WIDOKI (2)

background image

13

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

modyfikacja widoków

ALTER VIEW numery_prac(prac_nazwisko) AS

SELECT prac_nazwisko FROM pracownicy


ALTER VIEW numery_prac
AS
SELECT prac_nazwisko, prac_id,

zakl_nazwa, zaklady.zakl_id FROM
pracownicy INNER JOIN zaklady

ON pracownicy.prac_zakl_id =

zaklady.zakl_id

GO

WIDOKI (3)

background image

14

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Powoduje zwiększenie szybkości wyszukiwania danych w
instrukcji typu SELECT. Pogarszają sprawność instrukcji UPDATE,
DELETE

oraz

INSERT.

Indeks

wielokolumnowy

jest

wykorzystywany, gdy w klauzuli WHERE wywołana zostanie jego
pierwsza kolumna.

Kiedy używać indeksów:

Pole jest często wykorzystywane w zapytaniach

Pole posiada dużą ilość różnych wartości

Pola stosowane są często w złączeniach tabel

Kiedy nie używać indeksów:

Pole przyjmują tylko kilka różnych wartości

Nie stosuje się indeksów w przypadku częstych modyfikacji
tabel (narzuty czasowe)

INDEKSOWANIE TEABEL

background image

15

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

tworzenie indeksów

CREATE [UNIQUE] INDEX <nazwa_indeksu>
ON <tabela__widok>(kolumny_indeksowane)

CREATE INDEX IX_nazwiska_prac
ON pracownicy(prac_nazwisko)

usuwanie indeksów

DROP INDEX

<nazwa_tabeli_lub_widoku.nazwa_indeksu>

DROP INDEX pracownicy.IX_nazwiska_prac

INDEKSY

background image

16

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

wykorzystanie instrukcji IF EXISTS

IF EXISTS(SELECT * FROM sysindexes

WHERE name = 'IX_nazwiska_prac' )

DROP INDEX

pracownicy.IX_nazwiska_prac

GO
CREATE INDEX IX_nazwiska_prac
ON pracownicy(prac_nazwisko DESC,

prac_imie)

GO

INDEKSY (2)

background image

17

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Zmienne użytkownika i zmienne systemowe

declare @mojazmienna int, @nazwa char(40)

declare @data datetime

set @mojazmienna=56

set @nazwa=‘Jakiś tekst’

Set @date=getdate();

select Str(Year(@data))+' '+Str(Month(@data))+'

'+Str(Day(@data))

@@error, @@servername, @@TRANCOUNT

SELECT *, @@servername as ‘Nazwa serwera

TRANSACT-SQL (1)

background image

18

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Instrukcja warunkowa IF, BEGIN, END

declare @x int;

set @x=10;

if @x>11 select * from Pracownicy

else

begin

insert into Pracownicy (PracNazwisko) values('Jankowski');

select * from Pracownicy;

end;

TRANSACT-SQL (2)

background image

19

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Instrukcja warunkowa IF, BEGIN, END

if EXISTS (select * from Pracownicy)

BEGIN

SELECT * FROM Pracownicy

SELECT Count(*) FROM Pracownicy

END

ELSE

SELECT 'Brak rekordów'

TRANSACT-SQL (3)

background image

20

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Procedury składowane

Procedury składowane to jeden z elementów języka SQL nie
należący do standardu.

Ich zadaniem jest możliwość tworzenia złożonych struktur
programowych, przechowywanych w strukturach serwera.
Uruchamianie odbywa się często w sposób zdalny z
komputera klienta.

Od chwili wykorzystywania procedur składowanych baza
przestaje być zwykłym elementem gromadzącym dane i
może być wyposażona w tzw. reguły biznesowe,

implementowane wcześniej tylko po stronie aplikacji
klienckich.

TRANSACT-SQL (4)

background image

21

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Tworzenie procedury

CREATE PROCEDURE <nazwa procedury>
[@parametr typ_danych (długość)]
AS
Wyrażenia SQL

Usuwanie procedur

DROP PROCEDURE <nazwa_procedury>

Uruchamianie procedur

EXEC <nazwa_procedury> [parametry]
EXECUTE <nazwa_procedury> [parametry]

TRANSACT-SQL (5)

background image

22

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

CREATE PROCEDURE pro1
AS
BEGIN
IF (SELECT COUNT(*) FROM PRACOWNICY WHERE

PRAC_PLACA_POD>10000)>0

BEGIN
SELECT 'COŚ JEST'
END
ELSE
BEGIN
SELECT 'NIE MA NIC'
END
IF @@ERROR=0 SELECT 'Wszystko jest OKI'
END

EXEC pro1

TRANSACT-SQL (6)

- procedury skaładowane

background image

23

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

CREATE PROCEDURE pro2 @param1 float, @param2 char(3)
AS
BEGIN
DECLARE @a INT
SET @a=4
SELECT * FROM pracownicy WHERE

(PRAC_PLACA_POD>@param1+@a)

and (PRAC_NAZWISKO like '%'+@param2)
IF @@ERROR=0 SELECT 'NAPIS'
END

EXEC pro2 3000,'ski'

TRANSACT-SQL (7)

- procedury skaładowane

background image

24

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

CREATE PROCEDURE pro3 @@param int output
AS
BEGIN
SELECT @@param=COUNT(*) FROM PRACOWNICY
END


DECLARE @A INT
EXEC pro3 @A OUTPUT
SELECT @A

TRANSACT-SQL (8)

- procedury skaładowane

background image

25

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Funkcje definiowane przez użytkownika
Parametry wyjściowe zastąpiono wartościami
wynikowymi. Mogą one mieć postać skalarną
(dowolnego typu) jak i tabel.

CREATE FUNCTION Prac1 (@placa numeric(6,2))
RETURNS TABLE
AS
RETURN (
SELECT P.Nazwisko, P.Placa_pod
FROM Pracownicy AS P where P.Placa_pod>@placa );

select * from Prac1(100)

TRANSACT-SQL (9)

background image

26

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

CREATE FUNCTION Prac2 (@param1 numeric(6,2))
RETURNS numeric(6,2)
AS
Begin
DECLARE @zwrot numeric(6,2)
SELECT @zwrot=Avg(P.Placa_pod) FROM Pracownicy AS P
SET @zwrot=@zwrot+@param1
RETURN(@zwrot+@param1)
end;

declare @a int
EXEC @a=Prac2 200
select @a

TRANSACT-SQL (10)

- funkcje użytkownika

background image

27

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Wyzwalacze
Wyzwalacze są specjalnymi procedurami
uruchamianymi automatycznie w następstwie pewnego
zdarzenia. Związane są one z tabelami.

Tworzenie

CREATE TRIGGER nazwa_wyzwalacza
ON nazwa_tabeli
FOR [INSERT, UPDATE, DELETE]
AS kod_SQL

Usuwanie

DROP TRIGGER nazwa_wyzwalacza

TRANSACT-SQL (11)

background image

28

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

CREATE TRIGGER Trig1
ON PRACOWNICY
FOR INSERT
AS
BEGIN

END

TRANSACT-SQL (12)

- wyzwalacze

background image

29

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Rzeczywistość musi być zapisana w określonej formie w
bazie. Zmiany rzeczywistości muszą powodować zmiany w
stanie bazy.

Baza danych jest spójna wówczas, gdy jej stan

odpowiada stanowi świata rzeczywistego.

PRZETWARZANIE TRANSAKCYJNE (1)

Świat

rzeczywisty

Świat

rzeczywisty

Baza ...

Baza ...

Zmiany

świata

Zmiany

w bazie

background image

30

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Przez transakcje rozumie się grupę operacji na bazie,
która od strony logicznej stanowi całość i wykonywana jest
razem. W transakcji zostają wykonane jej wszystkie
składowe lub żaden z jej elementów.
Elementy składowe transakcji:

Odczyt i/lub zapis danych

Zakończenie transakcji z zatwierdzeniem

Wycofanie transakcji (zakończenie bez zatwierdzenia)

Przykład transakcji: przelew określonej kwoty z jednego

konta na drugie

PRZETWARZANIE TRANSAKCYJNE (2)

background image

31

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

WŁAŚCIWOŚCI TRANSAKCJI (ACID)

Atomowość (niepodzielność) – ang.

A

tomicity: zbiór operacji, które

wchodzą w skład transakcji jest niepodzielny.

Spójność - ang.

C

onsistency preservation: baza przed i po wykonaniu

transakcji musi być spójna (odpowiadać rzeczywistości). Nie mogą
być naruszone

więzy integralności

(reguły pozwalające

utrzymywać bazę w poprawnym stanie).

Izolacja – ang.

I

solation: dwie wykonywane jednocześnie transakcje

nie powinny na siebie wzajemnie wpływać. Jeśli wpływają, to musi
nastąpić ich wycofanie.

Trwałość – ang.

D

urability: po zakończeniu transakcji (z

zatwierdzeniem) wynik jej działania nie może zostać utracony
nawet przy zaniku napięcia zasilającego. W przypadku awarii
zmiany musza być odwracalne.

PRZETWARZANIE TRANSAKCYJNE (3)

background image

32

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

rozpoczęcie

- begin tran

begin transaction tr1

zatwierdzenie

- commit

commit transaction tr1

wycofanie

- rollback

rollback transaction tr1

begin transaction transakcja1;

INSERT INTO Etaty (EtatNazwa) VALUES ('Sprzątacz');

if @@ERROR>0 rollback transaction transakcja1

else commit transaction transakcja1

PRZETWARZANIE TRANSAKCYJNE (4)

background image

33

Instytut Elektrotechniki i Elektroniki Przemysłowej Politechniki Poznańskiej: J. Jajczyk

Wykorzystanie szablonów w

SQL Query Analyzer

zakładka Templates

edycja Replace Template Parameters

SZABLONY


Wyszukiwarka

Podobne podstrony:
SQL DDL
Samsung GT P5210 Galaxy Tab 3 10 1 04 1 Exploded view (en)
www gu com pl index php option=com content&task=view&id=
SQL 2(INS UPD DEL CRE TAB) z zadaniami
transakcyjny SQL
06 podstawy SQL 3id 6524 ppt
Temat6+modyf 16 05 2013
Human Development Index
7 Wykl 7 str 4 tab 1 N 5 id 612 Nieznany (2)
juki DDL 5550 DDL 8500 DDL 8700 manual
Oracle Database 11g i SQL Programowanie or11pr
mapi com The Ayurvedic View of Marijuana
BAZY DANYCH SQL (2)
Diet, Weight Loss and the Glycemic Index
Juki DDL 8700 7
Negative Volume Index, giełda(3)
Tab 65, Studia, 1 rok, od Magdy, FIZYKA, Fizyka, Labolatorium

więcej podobnych podstron