-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathsession-5.sql
More file actions
205 lines (149 loc) · 6.39 KB
/
session-5.sql
File metadata and controls
205 lines (149 loc) · 6.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
/*===================================================
DDL COMMANDS (CREATE TABLE, DROP TABLE,ALTER TABLE)
====================================================*/
/*-----------------------------------------------------
/* CREATE TABLE
/*-----------------------------------------------------
/*personel adinda bir tablo oluşturunuz. Tabloda first_name,
last_name, age(INT) ve hire_date (Date) sutunları bulunmalıdır. */
CREATE TABLE personel(
first_name TEXT,
last_name TEXT,
age INT,
hire_date DATE
);
/* Aynı isimle yeniden bir veritabanı oluşturulmak istenirse hata verir.
Bu hatayı almamak için IF NOT EXISTS keywordu kullanılabilir */
CREATE TABLE IF NOT EXISTS personel(
first_name TEXT,
last_name TEXT,
age INT,
hire_date DATE
);
/* Veritabanında vacation_plan adında yeni bir tablo oluşturunuz.
Sutun isimleri place_id, country, hotel_name, employee_id,
vacation_length, budget */
CREATE TABLE vacation_plan (
place_id INT,
country NVARCHAR(50),
hotel_name NVARCHAR(100),
employee_id INTEGER,
vacation_length INT,
budget REAL
);
/*---------------------------------------------------
/* DROP TABLE
/*---------------------------------------------------
/* personel tablosunu siliniz */
DROP TABLE personel;
/* Bir tabloyu silerken tablo bulunamazsa hata verir.
Bu hatayı görmemek için IF EXISTS keywordu kullanılabilir.*/
DROP TABLE IF EXISTS personel;
-- NOT: SQL'de TRUNCATE TABLE komutu bulunmasına karşın SQLite
-- bu komutu desteklememektedir. Truncate komutu bir tabloyu
-- değil içindeki tüm verileri silmek için kullanılır.
INSERT INTO vacation_plan VALUES(34, "TURKEY", 'HOTEL ISTANBUL',1, 7, 4000);
-- NOT: Aynı komut tekrar çalıştırılırsa herhangi bir kısıt yoksa ise aynı veriler
-- tekrar tabloya girilmiş olur.
INSERT INTO vacation_plan VALUES(42, "TURKEY", 'HOTEL MEVLANA',2, 4, 2000);
/*vacation_plan tablosuna vacation_lenght ve budget sutunlarını eksik
olarak veri girişi yapınız*/
INSERT INTO vacation_plan (place_id,country, hotel_name, employee_id)
VALUES(06, "TURKEY", 'HOTEL BAŞKENT',3);
-- NOT : giriş yapılmayan sutunlara NULL atanır.
/*------------------------------------------------------------------------------------------
/* CONSTRAINTS - KISITLAMALAR
/*-----------------------------------------------------------------------------------------
NOT NULL - Bir Sütunun NULL içermemesini garanti eder.
UNIQUE - Bir sütundaki tüm değerlerin BENZERSİZ olmasını garanti eder.
PRIMARY KEY - Bir sütünün NULL içermemesini ve sütundaki verilerin
BENZERSİZ olmasını garanti eder.(NOT NULL ve UNIQUE birleşimi gibi)
FOREIGN KEY - Başka bir tablodaki Primary Key’i referans göstermek için kullanılır.
Böylelikle, tablolar arasında ilişki kurulmuş olur.
DEFAULT - Herhangi bir değer atanmadığında Başlangıç değerinin atanmasını sağlar.*/
CREATE TABLE workers(
id INT PRIMARY KEY,
id_number TEXT NOT NULL UNIQUE,
name TEXT DEFAULT 'NONAME',
salary INTEGER NOT NULL
);
INSERT INTO workers VALUES(1,"12345678910","CAN CANAN", 10000);
-- UNIQUE CONST VIOLATION
-- INSERT INTO workers VALUES(1,"4445678910","AHMET CANAN", 7000);
INSERT INTO workers VALUES(3,"566678910",NULL, 9000);
--name kısmına NONAME yazılır. (DEFAULT)
INSERT INTO workers (id, id_number, salary) VALUES(4,"57786678910",9000);
/*vacation_plan tablosunu place_id sutunu PK ve employee_id sutununu
ise FK olarak değiştirirek vacation_plan2 adinda yeni bir tablo oluşturunuz.
Bu tablo, employees tablosu ile ilişkili olmalıdır */
CREATE TABLE vacation_plan2 (
place_id INT,
country NVARCHAR(50),
hotel_name NVARCHAR(100),
employee_id INTEGER,
vacation_length INT,
budget REAL,
PRIMARY KEY(place_id),
FOREIGN KEY (employee_id) REFERENCES employees(EmployeeId)
);
/* Employees tablosundaki EmployeeId'si 1 olan kişi için
bir tatil planı giriniz.*/
INSERT INTO vacation_plan2 VALUES(34,"TURKEY", 'HAPPY NATION',1,5,5000);
/* Employees tablosunda bulunmayan bir kişi için (EmployeeId=9)
olan kişi için bir tatil planı giriniz.*/
--HATA (FOREIGN KEY constraint failed)
--INSERT INTO vacation_plan2 VALUES(35,"TURKEY", 'HOTEL DELRAY',9,4,3000);
/*JOIN işlemi ile 2 tablodan veri çekme*/
/* FirstName, LastName, vacation_length, hotel_name*/
SELECT e.FirstName, e.LastName, v.vacation_length, v.hotel_name
FROM employees e
LEFT JOIN vacation_plan2 v
--INNER JOIN vacation_plan2 v
ON e.EmployeeId = v.employee_id;
/*------------------------------------------------------------------------------------------
/* ALTER TABLE (ADD, RENAME TO, DROP)
/* SQLITE MODIFY VE DELETE KOMUTLARINI DOĞRUDAN DESTEKLENMEZ
/*------------------------------------------------------------------------------------------
/*vacation_plan2 tablosuna name adında ve DEFAULT değeri noname olan
yeni bir sutun ekleyelim */
ALTER TABLE vacation_plan2
ADD name TEXT DEFAULT 'isimsiz';
/*vacation_plan2 tablosundaki name sutununu siliniz*/
ALTER TABLE vacation_plan2
DROP COLUMN name;
/* workers tablosunun adını people olarak değiştiriniz */
ALTER TABLE vacation_plan2
RENAME TO people;
ALTER TABLE people
RENAME TO vacation_plan2;
/*------------------------------------------------------------------------------------------
/* UPDATE,DELETE
-- SYNTAX
----------
-- UPDATE tablo_adı
-- SET sutun1 = yeni_deger1, sutun2 = yeni_deger2,...
-- WHERE koşul;
--DELETE tablo_adı
--WHERE koşul;
/*-----------------------------------------------------------------------------------------*/
/*vacation_plan2 tablosundaki employee_id=1 olan kaydini hotel_name'ini
Komagene Hotel olarak güncelleyiniz.*/
UPDATE vacation_plan2
SET hotel_name = "KOMAGENE HOTEL"
WHERE employee_id = 1;
/* people tablosunda salary sutunu 7000 'den az olanların
salary(maaşına) %10 zam yapacak sorguyu yazınız*/
UPDATE vacation_plan2
SET hotel_name = 'Komagene Hotel'
WHERE employee_id = 1;
/* workers tablosunda salary sutunu 9000 'den fazla olanların salary(maaşına)
%10 zam yapacak sorguyu yazınız*/
UPDATE workers
SET salary = salary*1.1
WHERE salary >= 9000;
/*workers tablosundaki tüm kayıtların salary sutununu 10000 olarak güncelleyiniz */
UPDATE workers
SET salary=10000;
/*workers tablosundaki id=1 olan kaydı siliniz*/
DELETE FROM workers
WHERE id=1;