Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ------------------------------------------------------------------------------------------
- /*
- ვამოწმებთ ბაზის არსებობას Database–ბში
- არსებობის შემთხვევაში ვშლით ბაზას და თავიდან ვქმნით
- */
- --------------------------------------------------------------[DELETE THIS]
- USE master
- ALTER DATABASE პენტიუმი SET single_user WITH ROLLBACK immediate
- restore DATABASE პენტიუმი
- ALTER DATABASE პენტიუმი SET multi_user
- ---------------------------------------------------------------------------
- USE master
- IF EXISTS (SELECT name FROM sys.DATABASES WHERE name=N'პენტიუმი')
- DROP DATABASE პენტიუმი
- GO
- CREATE DATABASE პენტიუმი
- GO
- USE პენტიუმი
- ------------------------------------------------------------------------------------------
- /*
- არსები:
- თანამშრომელი
- მომწოდებელი
- კლიენტი
- ნაწილები
- პროდუქტი
- */
- ------------------------------------------------------------------------------------------
- /*
- არსი [თანამშრომელი]:
- კომპოზიტური ატრიბუტით [მისამართი]
- და მრავალმნიშვნელოვანი ატრიბუტით [ტელეფონი]
- */
- -- თანამშრომელი:
- IF OBJECT_ID(N'თანამშრომელი', 'u') IS NOT NULL
- DROP TABLE თანამშრომელი
- GO
- CREATE TABLE თანამშრომელი
- (
- პირადი_ნომერი INT PRIMARY KEY, /* <-PRIMARY KEY გამოყენებულია აქ */
- სახელი nvarchar(50),
- გვარი nvarchar(50),
- დაბადების_თარიღი DATE,
- --მისამართი
- --ტელეფონი
- თანამდებობა nvarchar(50)
- )
- -- [მისამართი][1:1]:
- IF OBJECT_ID(N'თანამშრომლის_მისამართი', 'u') IS NOT NULL
- DROP TABLE თანამშრომლის_მისამართი
- GO
- CREATE TABLE თანამშრომლის_მისამართი
- (
- ID INT UNIQUE, /* <-UNIQUE გამოყენებულია აქ */
- ქალაქი nvarchar(50) DEFAULT(N'თბილისი'), /* <-DEFAULT გამოყენებულია აქ */
- ქუჩა nvarchar(50),
- სახლი INT,
- ბინა INT
- )
- ALTER TABLE თანამშრომლის_მისამართი
- ADD CONSTRAINT FK_თანამშრომლის_მისამართი
- FOREIGN KEY (ID) /* <-FOREIGN KEY გამოყენებულია აქ */
- REFERENCES თანამშრომელი(პირადი_ნომერი)
- ON DELETE cascade
- ON UPDATE cascade
- ALTER TABLE თანამშრომლის_მისამართი
- DROP CONSTRAINT FK_თანამშრომლის_მისამართი
- -- [ტელეფონი][1:N]:
- IF OBJECT_ID(N'თანამშრომლის_ტელეფონი', 'u') IS NOT NULL
- DROP TABLE თანამშრომლის_ტელეფონი
- GO
- CREATE TABLE თანამშრომლის_ტელეფონი
- (
- ID INT,
- ტელეფონის_ნომერი nvarchar(50)
- )
- ALTER TABLE თანამშრომლის_ტელეფონი
- ADD CONSTRAINT FK_თანამშრომლის_ტელეფონი
- FOREIGN KEY (ID) /* <-FOREIGN KEY გამოყენებულია აქ */
- REFERENCES თანამშრომელი(პირადი_ნომერი)
- ON DELETE cascade
- ON UPDATE cascade
- ALTER TABLE თანამშრომლის_ტელეფონი
- DROP CONSTRAINT FK_თანამშრომლის_ტელეფონი
- /* NONCLASTERED INDEX CREATION */
- CREATE NONCLUSTERED INDEX IX_თანამშრომელი_თანამდებობა
- ON თანამშრომელი(თანამდებობა);
- --------------------------------
- SELECT * FROM თანამშრომელი
- SELECT * FROM თანამშრომლის_მისამართი
- SELECT * FROM თანამშრომლის_ტელეფონი
- INSERT INTO თანამშრომელი
- VALUES
- (1111, N'ასლან', N'აბაშიძე', '1951-12-31', N'დირექტორი'),
- (2222, N'იური', N'რუსიშვილი', '1975-07-08', N'მოადგილე'),
- (3333, N'ირაკლი', N'სხილაძე', '1987-11-28', N'ამწყობი'),
- (4444, N'გიორგი', N'მიქაძე', '1982-07-25', N'ამწყობი'),
- (5555, N'რამაზ', N'გიორგაძე', '1964-01-18', N'ამწყობი'),
- (7777, N'ზურაბ', N'ფაფაიძე', '1990-05-22', N'ამწყობი')
- INSERT INTO თანამშრომლის_მისამართი
- VALUES
- (1111, N'თბილისი', N'დადიანი', 102, 12),
- (2222, N'თბილისი', N'გურამიშვილი', 86, 7),
- (3333, N'თბილისი', N'გურამიშვილი', 14, 1),
- (4444, N'თბილისი', N'ბეჟანიშვილი', 25, 8),
- (5555, N'თბილისი', N'ღრმაღელე', 9, 94),
- (7777, N'თბილისი', N'წერეთელი', 32, 72)
- INSERT INTO თანამშრომლის_ტელეფონი
- VALUES
- (1111, '599123456'),
- (1111, '577123456'),
- (2222, '591782314'),
- (2222, '577782314'),
- (2222, '575782314'),
- (3333, '599654321'),
- (4444, '577112233'),
- (5555, '591325127'),
- (7777, '597162873'),
- (7777, '551232323')
- -- SIMPLE JOIN (NOTHING SPECIAL)
- SELECT პირადი_ნომერი, თანამშრომლის_ტელეფონი.ტელეფონის_ნომერი
- FROM თანამშრომელი
- LEFT JOIN თანამშრომლის_ტელეფონი
- ON თანამშრომელი.პირადი_ნომერი=თანამშრომლის_ტელეფონი.ID
- -- დავითვალოთ ვის რამდენი ტელეფონი აქვს:
- SELECT თანამშრომელი.პირადი_ნომერი AS [პირადი ნომერი], თანამშრომელი.სახელი, თანამშრომელი.გვარი, COUNT(თანამშრომლის_ტელეფონი.ID) AS [ტელეფონების რაოდენობა]
- FROM თანამშრომლის_ტელეფონი
- LEFT JOIN თანამშრომელი
- ON თანამშრომლის_ტელეფონი.ID=თანამშრომელი.პირადი_ნომერი
- GROUP BY პირადი_ნომერი, სახელი, გვარი
- ORDER BY COUNT(თანამშრომლის_ტელეფონი.ID) DESC -- კლებადობით დალაგება
- -- END თანამშრომელი
- ------------------------------------------------------------------------------------------
- /*
- არსი [მომწოდებელი]:
- კომპოზიტური ატრიბუტით [მისამართი]
- და მრავალმნიშვნელოვანი ატრიბუტით [ტელეფონი]
- */
- -- მომწოდებელი:
- IF OBJECT_ID(N'მომწოდებელი', 'u') IS NOT NULL
- DROP TABLE მომწოდებელი
- GO
- CREATE TABLE მომწოდებელი
- (
- რეგისტრაციის_ნომერი INT PRIMARY KEY IDENTITY(1, 1), /* <-IDENTITY გამოყენებულია აქ */
- სახელი nvarchar(50),
- ხელმძღვანელი nvarchar(50),
- საკონტაქტო_პირი nvarchar(50)
- --მისამართი
- --ტელეფონი
- )
- -- [მისამართი][1:1]:
- IF OBJECT_ID(N'მომწოდებლის_მისამართი', 'u') IS NOT NULL
- DROP TABLE მომწოდებლის_მისამართი
- GO
- CREATE TABLE მომწოდებლის_მისამართი
- (
- ID INT UNIQUE, /* <-UNIQUE გამოყენებულია აქ */
- ქალაქი nvarchar(50) DEFAULT(N'თბილისი'), /* <-DEFAULT გამოყენებულია აქ */
- ქუჩა nvarchar(50)
- )
- ALTER TABLE მომწოდებლის_მისამართი
- ADD CONSTRAINT FK_მომწოდებლის_მისამართი
- FOREIGN KEY (ID) /* <-FOREIGN KEY გამოყენებულია აქ */
- REFERENCES მომწოდებელი(რეგისტრაციის_ნომერი)
- ON UPDATE cascade
- ON DELETE cascade
- ALTER TABLE მომწოდებლის_მისამართი
- DROP CONSTRAINT FK_მომწოდებლის_მისამართი
- -- [ტელეფონი][1:N]:
- IF OBJECT_ID(N'მომწოდებლის_ტელეფონი', 'u') IS NOT NULL
- DROP TABLE მომწოდებლის_ტელეფონი
- GO
- CREATE TABLE მომწოდებლის_ტელეფონი
- (
- ID INT,
- ტელეფონის_ნომერი nvarchar(50)
- )
- ALTER TABLE მომწოდებლის_ტელეფონი
- ADD CONSTRAINT FK_მომწოდებლის_ტელეფონი
- FOREIGN KEY (ID) /* <-FOREIGN KEY გამოყენებულია აქ */
- REFERENCES მომწოდებელი(რეგისტრაციის_ნომერი)
- ON UPDATE cascade
- ON DELETE cascade
- ALTER TABLE მომწოდებლის_ტელეფონი
- DROP CONSTRAINT FK_მომწოდებლის_ტელეფონი
- SELECT * FROM მომწოდებელი
- SELECT * FROM მომწოდებლის_მისამართი
- SELECT * FROM მომწოდებლის_ტელეფონი
- INSERT INTO მომწოდებელი
- VALUES
- ('ASUS', N'ნუგზარ ბლიაძე', N'ვიქტორა'),
- ('NVIDIA', N'დავით გიორგაძე', N'ჯემალა'),
- ('Intel', N'ჯემალი ფერაძე', N'მავთულა'),
- ('AMD', N'ალექსანდრე გორდაძე', N'მჭედველა')
- INSERT INTO მომწოდებლის_მისამართი
- VALUES
- (1, N'თბილისი', N'დადიანი'),
- (2, N'თბილისი', N'გურამიშვილი'),
- (3, N'თბილისი', N'გურამიშვილი'),
- (4, N'თბილისი', N'ბეჟანიშვილი')
- INSERT INTO მომწოდებლის_ტელეფონი
- VALUES
- (1, '599123456'),
- (1, '577123456'),
- (2, '591782314'),
- (2, '577782314'),
- (2, '575782314'),
- (3, '599654321'),
- (3, '577112233'),
- (3, '591325127'),
- (4, '597162873'),
- (4, '551232323')
- -- END მომწოდებელი
- ------------------------------------------------------------------------------------------
- /*
- არსი [კლიენტი]:
- ქვეტიპებით[კლიენტი_იურიდიული_პირი] და [კლიენტი_ფიზიკური_პირი]
- კომპოზიტური ატრიბუტით [მისამართი]
- და მრავალმნიშვნელოვანი ატრიბუტით [ტელეფონი]
- */
- -- კლიენტი:
- IF OBJECT_ID(N'კლიენტი', 'u') IS NOT NULL
- DROP TABLE კლიენტი
- GO
- CREATE TABLE კლიენტი
- (
- რეგისტრაციის_ნომერი INT PRIMARY KEY IDENTITY(1, 1),/* <-PRIMARY KEY გამოყენებულია აქ */
- კლიენტის_ტიპი nvarchar(50)
- --მისამართი
- --ტელეფონი
- )
- -- [კლიენტი_იურიდიული_პირი][1:1]:
- IF OBJECT_ID(N'კლიენტი_იურიდიული_პირი', 'u') IS NOT NULL
- DROP TABLE კლიენტი_იურიდიული_პირი
- GO
- CREATE TABLE კლიენტი_იურიდიული_პირი
- (
- სახელი nvarchar(50),
- საგადასახადო_კოდი nvarchar(50),
- ორგანიზაციის_ტიპი nvarchar(50),
- ხელმძღვანელი nvarchar(50),
- საკონტაქტო_პირი nvarchar(50),
- რეგისტრაციის_ნომერი INT PRIMARY KEY /* <-PRIMARY KEY გამოყენებულია აქ */
- )
- ALTER TABLE კლიენტი_იურიდიული_პირი
- ADD CONSTRAINT FK_კლიენტი_იურიდიული_პირი
- FOREIGN KEY (რეგისტრაციის_ნომერი) /* <-FOREIGN KEY გამოყენებულია აქ */
- REFERENCES კლიენტი(რეგისტრაციის_ნომერი)
- ON DELETE cascade
- ON UPDATE cascade
- ALTER TABLE კლიენტი_იურიდიული_პირი
- DROP CONSTRAINT FK_კლიენტი_იურიდიული_პირი
- -- [კლიენტი_ფიზიკური_პირი][1:1]:
- IF OBJECT_ID(N'კლიენტი_ფიზიკური_პირი', 'u') IS NOT NULL
- DROP TABLE კლიენტი_ფიზიკური_პირი
- GO
- CREATE TABLE კლიენტი_ფიზიკური_პირი
- (
- პირადი_ნომერი INT,
- სახელი nvarchar(50),
- გვარი nvarchar(50),
- რეგისტრაციის_ნომერი INT PRIMARY KEY /* <-PRIMARY KEY გამოყენებულია აქ */
- )
- ALTER TABLE კლიენტი_ფიზიკური_პირი
- ADD CONSTRAINT FK_კლიენტი_ფიზიკური_პირი
- FOREIGN KEY (რეგისტრაციის_ნომერი) /* <-FOREIGN KEY გამოყენებულია აქ */
- REFERENCES კლიენტი(რეგისტრაციის_ნომერი)
- ON DELETE cascade
- ON UPDATE cascade
- ALTER TABLE კლიენტი_ფიზიკური_პირი
- DROP CONSTRAINT FK_კლიენტი_ფიზიკური_პირი
- -- [მისამართი][1:1]:
- IF OBJECT_ID(N'კლიენტის_მისამართი', 'u') IS NOT NULL
- DROP TABLE კლიენტის_მისამართი
- GO
- CREATE TABLE კლიენტის_მისამართი
- (
- ID INT UNIQUE, /* <-UNIQUE გამოყენებულია აქ */
- ქალაქი nvarchar(50) DEFAULT(N'თბილისი'), /* <-DEFAULT გამოყენებულია აქ */
- ქუჩა nvarchar(50)
- )
- ALTER TABLE კლიენტის_მისამართი
- ADD CONSTRAINT FK_კლიენტის_მისამართი
- FOREIGN KEY (ID) /* <-FOREIGN KEY გამოყენებულია აქ */
- REFERENCES კლიენტი(რეგისტრაციის_ნომერი)
- ON DELETE cascade
- ON UPDATE cascade
- -- [ტელეფონი][1:N]:
- IF OBJECT_ID(N'კლიენტის_ტელეფონი', 'u') IS NOT NULL
- DROP TABLE კლიენტის_ტელეფონი
- GO
- CREATE TABLE კლიენტის_ტელეფონი
- (
- ID INT,
- ტელეფონის_ნომერი nvarchar(50)
- )
- ALTER TABLE კლიენტის_ტელეფონი
- ADD CONSTRAINT FK_კლიენტის_ტელეფონი
- FOREIGN KEY (ID) /* <-FOREIGN KEY გამოყენებულია აქ */
- REFERENCES კლიენტი(რეგისტრაციის_ნომერი)
- ON DELETE cascade
- ON UPDATE cascade
- INSERT INTO კლიენტი
- VALUES
- (N'ფიზიკური პირი'),
- (N'ფიზიკური პირი'),
- (N'ფიზიკური პირი'),
- (N'იურიდიული პირი')
- INSERT INTO კლიენტი_ფიზიკური_პირი
- VALUES
- (1111, N'გიორგი', N'აზუბაშვილი', 1),
- (2222, N'დავით', N'დადოშვილი', 2),
- (3333, N'ალეკო', N'პაპაშვილი', 3)
- INSERT INTO კლიენტი_იურიდიული_პირი
- VALUES
- (N'ტექნობუმი', '5923872364', N'მაღაზია', N'ირაკლი ხუჭუა', N'ნოდარა', 4)
- SELECT * FROM კლიენტი
- SELECT * FROM კლიენტი_ფიზიკური_პირი
- SELECT * FROM კლიენტი_იურიდიული_პირი
- INSERT INTO კლიენტის_მისამართი
- VALUES
- (1, N'თბილისი', N'დადიანი'),
- (2, N'თბილისი', N'გურამიშვილი'),
- (3, N'თბილისი', N'გურამიშვილი'),
- (4, N'თბილისი', N'ბეჟანიშვილი')
- INSERT INTO კლიენტის_ტელეფონი
- VALUES
- (1, '599123456'),
- (1, '577123456'),
- (2, '591782314'),
- (2, '577782314'),
- (2, '575782314'),
- (3, '599654321'),
- (3, '577112233'),
- (3, '591325127'),
- (4, '597162873'),
- (4, '551232323')
- SELECT * FROM კლიენტი
- SELECT * FROM კლიენტის_მისამართი
- SELECT * FROM კლიენტის_ტელეფონი
- -- მაჩვენე 'ფიზიკური პირები' მთლიანად
- SELECT * FROM კლიენტი
- INNER JOIN კლიენტი_ფიზიკური_პირი
- ON კლიენტი.რეგისტრაციის_ნომერი=კლიენტი_ფიზიკური_პირი.რეგისტრაციის_ნომერი
- WHERE კლიენტი.კლიენტის_ტიპი=N'ფიზიკური პირი'
- -- მაჩვენე 'იურიდიული პირები' მთლიანად
- SELECT * FROM კლიენტი
- INNER JOIN კლიენტი_იურიდიული_პირი
- ON კლიენტი.რეგისტრაციის_ნომერი=კლიენტი_იურიდიული_პირი.რეგისტრაციის_ნომერი
- WHERE კლიენტი.კლიენტის_ტიპი=N'იურიდიული პირი'
- -- END კლიენტი
- ------------------------------------------------------------------------------------------
- /*
- არსი [ნაწილები]:
- */
- -- ნაწილები:
- IF OBJECT_ID(N'ნაწილები', 'u') IS NOT NULL
- DROP TABLE ნაწილები
- GO
- CREATE TABLE ნაწილები
- (
- ნაწილის_კოდი INT PRIMARY KEY IDENTITY(1, 1), /* <-PRIMARY KEY გამოყენებულია აქ */
- დასახელება nvarchar(50),
- --იყენებს_ID int,
- --აწვდის_ID int not null
- )
- INSERT INTO ნაწილები
- VALUES
- (N'პროცესორი'),
- (N'დედაპლატა'),
- (N'ქულერი'),
- (N'პროცესორი'),
- (N'ქეისი')
- SELECT * FROM ნაწილები
- -- END ნაწილები
- ------------------------------------------------------------------------------------------
- /*
- არსი [პროდუქტი]:
- */
- -- პროდუქტი:
- IF OBJECT_ID(N'პროდუქტი', 'u') IS NOT NULL
- DROP TABLE პროდუქტი
- GO
- CREATE TABLE პროდუქტი
- (
- პროდუქტის_კოდი INT PRIMARY KEY IDENTITY(1, 1), /* <-PRIMARY KEY გამოყენებულია აქ */
- დასახელება nvarchar(50),
- გაკეთების_თარიღი DATE,
- გარანტია nvarchar(50),
- ფასი INT
- )
- SELECT * FROM თანამშრომელი
- SELECT * FROM პროდუქტი
- -- პასუხისმგებელი ხალხი:
- INSERT INTO პროდუქტი
- VALUES
- (N'პენტიუმ–3', CAST(GETDATE() AS DATE), N'1 წელი', 1000, 3333),
- (N'პენტიუმ–1', CAST(GETDATE() AS DATE), N'1 წელი', 1000, 3333),
- (N'პენტიუმ–2', CAST(GETDATE() AS DATE), N'1 წელი', 1000, 4444),
- (N'პენტიუმ–4', CAST(GETDATE() AS DATE), N'1 წელი', 1000, 4444),
- (N'პენტიუმ–4', CAST(GETDATE() AS DATE), N'1 წელი', 1000, 4444),
- (N'პენტიუმ–2', CAST(GETDATE() AS DATE), N'1 წელი', 1000, 5555),
- (N'პენტიუმ–3', CAST(GETDATE() AS DATE), N'1 წელი', 1000, 7777),
- (N'პენტიუმ–3', CAST(GETDATE() AS DATE), N'1 წელი', 1000, 7777)
- -- END პროდუქტი
- ------------------------------------------------------------------------------------------
- /*
- კავშირები:
- თანამშრომელი <პასუხს_აგებს> პროდუქტი 1:N
- თანამშრომელი <ამზადებს> პროდუქტი (თარიღი, კოდი) 1:N
- თანამშრომელი <იყენებს> ნაწილები (რაოდენობა) 1:N
- მომწოდებელი <აწვდის> ნაწილები (რაოდენობა) 1:N
- კლიენტი <უკვეთავს> პროდუქტი (შეკვეთის_თარიღი, შეკვეთის_ნომერი) N:M
- */
- -- თანამშრომელი <პასუხს_აგებს> პროდუქტი 1:N
- ALTER TABLE პროდუქტი
- DROP COLUMN პასუხს_აგებს_ID
- ALTER TABLE პროდუქტი
- ADD პასუხს_აგებს_ID INT
- ALTER TABLE პროდუქტი
- ADD CONSTRAINT FK_პასუხს_აგებს
- FOREIGN KEY (პასუხს_აგებს_ID) /* <-FOREIGN KEY გამოყენებულია აქ */
- REFERENCES თანამშრომელი(პირადი_ნომერი)
- ON DELETE cascade
- ON UPDATE cascade
- ALTER TABLE პროდუქტი
- DROP CONSTRAINT FK_პასუხს_აგებს
- SELECT * FROM პროდუქტი
- /*
- (3)ამოცანა:
- ვაჩვენოთ ვინ რაზე აგებს პასუხს.
- */
- SELECT პირადი_ნომერი, სახელი, გვარი, პროდუქტი.დასახელება
- FROM თანამშრომელი
- JOIN პროდუქტი
- ON პროდუქტი.პასუხს_აგებს_ID=თანამშრომელი.პირადი_ნომერი
- ORDER BY თანამშრომელი.პირადი_ნომერი
- -- თანამშრომელი <ამზადებს> პროდუქტი (თარიღი, კოდი) 1:N
- IF OBJECT_ID(N'ამზადებს', 'u') IS NOT NULL
- DROP TABLE ამზადებს
- GO
- CREATE TABLE ამზადებს
- (
- დამზადების_თარიღი DATE,
- დამზადების_კოდი INT PRIMARY KEY,
- პირადი_ნომერი INT FOREIGN KEY REFERENCES თანამშრომელი (პირადი_ნომერი)
- ON DELETE cascade
- ON UPDATE cascade NOT NULL,
- პროდუქტის_კოდი INT UNIQUE FOREIGN KEY REFERENCES პროდუქტი (პროდუქტის_კოდი) NOT NULL
- )
- SELECT * FROM თანამშრომელი
- SELECT * FROM პროდუქტი
- SELECT * FROM ამზადებს
- INSERT INTO ამზადებს
- VALUES
- (CAST(GETDATE() AS DATE), 11, 3333, 1),
- (CAST(GETDATE() AS DATE), 22, 3333, 2),
- (CAST(GETDATE() AS DATE), 33, 4444, 3),
- (CAST(GETDATE() AS DATE), 44, 4444, 4),
- (CAST(GETDATE() AS DATE), 55, 4444, 5),
- (CAST(GETDATE() AS DATE), 77, 5555, 6),
- (CAST(GETDATE() AS DATE), 88, 7777, 7),
- (CAST(GETDATE() AS DATE), 99, 7777, 8)
- -- თანამშრომელი <იყენებს> ნაწილები (რაოდენობა) 1:N
- IF OBJECT_ID(N'იყენებს', 'u') IS NOT NULL
- DROP TABLE იყენებს
- GO
- CREATE TABLE იყენებს
- (
- რაოდენობა INT NOT NULL,
- პირადი_ნომერი INT UNIQUE FOREIGN KEY REFERENCES თანამშრომელი (პირადი_ნომერი)
- ON DELETE cascade
- ON UPDATE cascade NOT NULL,
- ნაწილის_კოდი INT FOREIGN KEY REFERENCES ნაწილები (ნაწილის_კოდი)
- ON DELETE cascade
- ON UPDATE cascade NOT NULL
- )
- -- მომწოდებელი <აწვდის> ნაწილები (რაოდენობა) 1:N
- IF OBJECT_ID(N'აწვდის', 'u') IS NOT NULL
- DROP TABLE აწვდის
- GO
- CREATE TABLE აწვდის
- (
- რაოდენობა INT NOT NULL,
- რეგისტრაციის_ნომერი INT UNIQUE FOREIGN KEY REFERENCES მომწოდებელი (რეგისტრაციის_ნომერი)
- ON DELETE cascade
- ON UPDATE cascade NOT NULL,
- ნაწილის_კოდი INT FOREIGN KEY REFERENCES ნაწილები (ნაწილის_კოდი)
- ON DELETE cascade
- ON UPDATE cascade NOT NULL
- )
- /*
- (1)ამოცანა:
- ვაჩვენოთ რომელმა ფირმამ რამდენი ნაწილი მოგვაწოდა.
- */
- SELECT აწვდის.რეგისტრაციის_ნომერი, მომწოდებელი.სახელი, რაოდენობა
- FROM აწვდის
- JOIN მომწოდებელი
- ON აწვდის.რეგისტრაციის_ნომერი=მომწოდებელი.რეგისტრაციის_ნომერი
- ORDER BY აწვდის.რეგისტრაციის_ნომერი
- /*
- (2)ამოცანა:
- ვაჩვენოთ რომელმა ფირმამ რა ნაწილი მოგვაწოდა.
- */
- SELECT რეგისტრაციის_ნომერი, მომწოდებელი.სახელი, ნაწილები.დასახელება
- FROM მომწოდებელი
- JOIN ნაწილები
- ON მომწოდებელი.რეგისტრაციის_ნომერი=ნაწილები.ნაწილის_კოდი
- ORDER BY მომწოდებელი.რეგისტრაციის_ნომერი
- INSERT INTO აწვდის
- VALUES
- (5, 3, 1),
- (10, 1, 2),
- (25, 4, 4),
- (5, 2, 3)
- SELECT * FROM აწვდის
- -- კლიენტი <უკვეთავს> პროდუქტი (შეკვეთის_თარიღი, შეკვეთის_ნომერი) N:M
- IF OBJECT_ID(N'უკვეთავს', 'u') IS NOT NULL
- DROP TABLE უკვეთავს
- GO
- CREATE TABLE უკვეთავს
- (
- შეკვეთის_ნომერი INT PRIMARY KEY IDENTITY(1, 1), /* <-PRIMARY KEY გამოყენებულია აქ */
- შეკვეთის_თარიღი DATE,
- პროდუქტი_ID INT FOREIGN KEY REFERENCES პროდუქტი(პროდუქტის_კოდი) NOT NULL,
- კლიენტი_ID INT FOREIGN KEY REFERENCES კლიენტი(რეგისტრაციის_ნომერი) NOT NULL
- )
- ------------------------------------------------------------------------------------------
- -- თანამშრომლის დამატება [თანამშრომელი ცხრილში]:
- IF OBJECT_ID(N'ამწყობის_შეყვანა', 'p') IS NOT NULL
- DROP PROCEDURE ამწყობის_შეყვანა
- GO
- CREATE PROCEDURE ამწყობის_შეყვანა
- @პირადი_ნომერი INT,
- @სახელი nvarchar(50),
- @გვარი nvarchar(50),
- @დაბადების_თარიღი DATE
- -- @თანამდებობა nvarchar(50)
- AS
- INSERT INTO თანამშრომელი
- VALUES
- (@პირადი_ნომერი,@სახელი,@გვარი,@დაბადების_თარიღი, N'ამწყობი')
- EXECUTE ამწყობის_შეყვანა 8888, N'ვახტანგ', N'ლალუაშვილი', '1993-05-14'
- SELECT * FROM თანამშრომელი
- -- თანამშრომლის წაშლა სახელისა და გვარის მიხედვით [თანამშრომელი ცხრილიდან]:
- IF OBJECT_ID(N'თანამშრომლის_წაშლა', 'p') IS NOT NULL
- DROP PROCEDURE თანამშრომლის_წაშლა
- GO
- CREATE PROCEDURE თანამშრომლის_წაშლა @name nvarchar(50), @surname nvarchar(50)
- AS
- BEGIN
- DELETE FROM თანამშრომელი
- WHERE თანამშრომელი.სახელი=@name AND თანამშრომელი.გვარი=@surname
- END
- EXECUTE თანამშრომლის_წაშლა N'ვახტანგ', N'ლალუაშვილი'
- SELECT * FROM თანამშრომელი
- -- ჩვენება ამწყობი თანამშრომლებისა [თანამშრომლები ცხრილიდან]
- IF OBJECT_ID(N'მაჩვენე_ამწყობი_თანამშრომლები', 'p') IS NOT NULL
- DROP PROCEDURE მაჩვენე_ამწყობი_თანამშრომლები
- GO
- CREATE PROCEDURE მაჩვენე_ამწყობი_თანამშრომლები
- AS
- SELECT * FROM თანამშრომელი
- WHERE თანამდებობა=N'ამწყობი'
- ORDER BY პირადი_ნომერი
- EXEC მაჩვენე_ამწყობი_თანამშრომლები
- -- TRIGGERS:
- IF OBJECT_ID('ფიზიკური_პირის_წაშლის_შეფერხება', 'tr') IS NOT NULL
- DROP TRIGGER ფიზიკური_პირის_წაშლის_შეფერხება
- GO
- CREATE TRIGGER ფიზიკური_პირის_წაშლის_შეფერხება
- ON კლიენტი_ფიზიკური_პირი
- after DELETE
- AS
- print(N'შეცდომა! არ შეგიძლიათ კლიენტის ქვეტიპის წაშლა.');
- ROLLBACK tran -- მოქმედების უკან დაბრუნება
- DELETE FROM კლიენტი_ფიზიკური_პირი WHERE სახელი=N'იგორა'
- --
- IF OBJECT_ID('იურიდიული_პირის_წაშლის_შეფერხება', 'tr') IS NOT NULL
- DROP TRIGGER იურიდიული_პირის_წაშლის_შეფერხება
- GO
- CREATE TRIGGER იურიდიული_პირის_წაშლის_შეფერხება
- ON კლიენტი_იურიდიული_პირი
- after DELETE
- AS
- print(N'შეცდომა! არ შეგიძლიათ კლიენტის ქვეტიპის წაშლა.');
- ROLLBACK tran -- მოქმედების უკან დაბრუნება
- DELETE FROM კლიენტი_იურიდიული_პირი WHERE სახელი=N'ALTA'
- /* FUNCTION */
- IF OBJECT_ID(N'დამიბრუნე_კონკრეტული_თანამშრომლის_ტელეფონების_რაოდენობა') IS NOT NULL
- DROP FUNCTION დამიბრუნე_კონკრეტული_თანამშრომლის_ტელეფონების_რაოდენობა
- GO
- CREATE FUNCTION დამიბრუნე_კონკრეტული_თანამშრომლის_ტელეფონების_რაოდენობა(@ID nvarchar(50))
- RETURNS INT
- AS
- BEGIN
- DECLARE @num INT
- SELECT @num=COUNT(თანამშრომლის_ტელეფონი.ID)
- FROM თანამშრომლის_ტელეფონი
- WHERE თანამშრომლის_ტელეფონი.ID=@ID
- RETURN @num
- END
- print(dbo.დამიბრუნე_კონკრეტული_თანამშრომლის_ტელეფონების_რაოდენობა('2222'));
- /* INLINE TABLE VALUED FUNCTION */
- IF OBJECT_ID(N'დამიბრუნე_ცხრილი_ფიზიკური_კლიენტის') IS NOT NULL
- DROP FUNCTION დამიბრუნე_ცხრილი_ფიზიკური_კლიენტის
- GO
- CREATE FUNCTION დამიბრუნე_ცხრილი_ფიზიკური_კლიენტის(@რეგისტრაციის_ID INT)
- RETURNS TABLE
- AS
- RETURN
- SELECT კლიენტი.რეგისტრაციის_ნომერი, კლიენტის_ტიპი, სახელი, გვარი
- FROM კლიენტი, კლიენტი_ფიზიკური_პირი
- WHERE კლიენტი.რეგისტრაციის_ნომერი=@რეგისტრაციის_ID AND @რეგისტრაციის_ID=კლიენტი_ფიზიკური_პირი.რეგისტრაციის_ნომერი
- SELECT * FROM dbo.დამიბრუნე_ცხრილი_ფიზიკური_კლიენტის(3);
- /* MULTI STATEMENT TABLE VALUED FUNCTION */
- IF OBJECT_ID(N'დამიბრუნე_ჩემებური_თანამშრომლების_ცხრილი') IS NOT NULL
- DROP FUNCTION დამიბრუნე_ჩემებური_თანამშრომლების_ცხრილი
- GO
- CREATE FUNCTION დამიბრუნე_ჩემებური_თანამშრომლების_ცხრილი(@ID INT)
- RETURNS @ჩემებური_ცხრილი TABLE
- (
- თანამდებობა nvarchar(50),
- გვარი nvarchar(50),
- სახელი nvarchar(50),
- დაბადების_თარიღი DATE
- )
- AS
- BEGIN
- INSERT @ჩემებური_ცხრილი
- SELECT თანამდებობა, გვარი, სახელი, დაბადების_თარიღი
- FROM თანამშრომელი
- WHERE თანამშრომელი.პირადი_ნომერი=@ID
- RETURN
- END
- SELECT * FROM dbo.დამიბრუნე_ჩემებური_თანამშრომლების_ცხრილი(1111);
- -- ფუნქციები:
- print(getdate());
- print(CONVERT(DATE, getdate()));
- print(CONVERT(TIME, getdate()));
- print(ascii('a'));
- print(len('vakho'));
- print(UPPER('vakho'));
- print(LOWER('VAKHO'));
- print(rtrim('vakho ') + 'asd');
- print(ltrim(' vakho'));
- print('a' + ltrim(rtrim(' vakho ')) + 'a');
- print(CAST('15' AS INT) + 17);
Advertisement
Add Comment
Please, Sign In to add comment