-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDay_03 - Auto Increment, Alter Table.sql
310 lines (221 loc) · 7.7 KB
/
Day_03 - Auto Increment, Alter Table.sql
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
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
use training;
-- PRIMARY KEY CONSTRAINT (UNIQUE + NOT NULL)
CREATE TABLE pk_table(
custid INT PRIMARY KEY, -- SIMPLE PRIMARY KEY
custname VARCHAR(100) NOT NULL,
age INT CHECK (age>20 and age<=60),
city VARCHAR(100) DEFAULT 'HYDERABAD',
mobile VARCHAR(100) UNIQUE
);
INSERT INTO pk_table VALUES(1000,'Madhan',36,'Chennai','9876543211');
SELECT * FROM Pk_table;
INSERT INTO pk_table VALUES(1000,'Ravi',37,'Bangalore','9876543212'); -- ERROR since custid 1000 is duplicate value
INSERT INTO pk_table VALUES(1001,'Ravi',37,'Bangalore','9876543212');
SELECT * FROM Pk_table;
INSERT INTO pk_table(custname,age,city,mobile) VALUES('Ganga',27,'Pune','9876543213'); -- ERROR since custid does't have a value
INSERT INTO pk_table(custid,custname,age,city,mobile) VALUES(1002,'Ganga',27,'Pune','9876543213');
SELECT * FROM Pk_table;
INSERT INTO pk_table(custid,custname,age,city,mobile) VALUES(1003,'Begam',27,'Pune','+91-9876543214');
SELECT * FROM Pk_table;
CREATE TABLE pk_table_comp(
custid INT , -- SIMPLE PRIMARY KEY
custname VARCHAR(100) NOT NULL,
age INT CHECK (age>20 and age<=60),
city VARCHAR(100) DEFAULT 'HYDERABAD',
mobile VARCHAR(100) UNIQUE,
primary key (custid,custname) -- COMPOSITE PRIMAY KEY
);
INSERT INTO pk_table_comp VALUES(1000,'Raja',30,'Chennai','9898989898');
SELECT * FROM pk_table_comp;
INSERT INTO pk_table_comp VALUES(1000,'Rajesh',30,'Chennai','9898989899');
SELECT * FROM pk_table_comp;
INSERT INTO pk_table_comp VALUES(1001,'Raja',30,'Chennai','9898989890');
SELECT * FROM pk_table_comp;
INSERT INTO pk_table_comp VALUES(1001,'Raja',36,'Bangalore','9898989891'); -- ERROR since '1001-Raja' is duplicate
-- =======================================================================================================
-- FOREIGN KEY
CREATE TABLE customers(
cust_id INT PRIMARY KEY,
custname VARCHAR(100) NOT NULL,
city VARCHAR(100) DEFAULT 'HYDERABAD'
);
INSERT INTO customers VALUES(1000,'Bala','Bangalore'),(1001,'Irfan','Hyderabad'),(1002,'Anand','Chennai');
SELECT * FROM customers;
CREATE TABLE orders (
ord_id INT primary key,
cust_id INT ,
produ_name varchar(100),
amount INT,
CONSTRAINT fk_orders FOREIGN KEY (cust_id) REFERENCES customers(cust_id)
);
INSERT INTO orders VALUES(1,1000,'Mobile',50000);
SELECT * FROM orders;
INSERT INTO orders VALUES(2,1003,'Laptop',100000); -- 1003 is not present in the cusomers table
INSERT INTO orders VALUES(2,1001,'Laptop',100000);
SELECT * FROM orders;
SELECT * FROM customers;
DELETE FROM customers WHERE cust_id=1000; -- Can't delete 1000 since the child table orders has 1000 in it
-- If you want to remove the customer id 1000 then first we need to remove from child table and then we can remove from parent table
DELETE FROM orders WHERE cust_id=1000;
DELETE FROM customers WHERE cust_id=1000;
SELECT * FROM customers;
-- =======================================================================================================
CREATE TABLE orders (
ord_id INT primary key,
cust_id INT ,
produ_name varchar(100),
amount INT,
CONSTRAINT fk_orders FOREIGN KEY (cust_id) REFERENCES customers(cust_id) ON DELETE CASCADE
);
INSERT INTO orders VALUES(1,1000,'Mobile',50000);
INSERT INTO orders VALUES(2,1001,'Laptop',100000);
SELECT * FROM orders;
DELETE FROM customers WHERE cust_id=1000;
DROP TABLE orders;
CREATE TABLE orders (
ord_id INT primary key,
cust_id INT ,
produ_name varchar(100),
amount INT,
CONSTRAINT fk_orders FOREIGN KEY (cust_id) REFERENCES customers(cust_id) ON UPDATE CASCADE
);
-- ====================================== auto_increment ======================================
CREATE TABLE users(
user_id INT UNIQUE auto_increment,
user_name VARCHAR(100),
city VARCHAR(100)
);
INSERT INTO users(user_name, city) VALUES('Ganesh','Mumbai');
SELECT * FROM users;
INSERT INTO users(user_name, city) VALUES('Ramya','Kolkatta');
SELECT * FROM users;
INSERT INTO users(user_name, city) VALUES('Siva','Chennai');
SELECT * FROM users;
INSERT INTO users VALUES(100,'Raghul','Chennai');
SELECT * FROM users;
INSERT INTO users(user_name, city) VALUES('Venkatesh','Hyderabad');
SELECT * FROM users;
INSERT INTO users VALUES(50,'Ashwin','Chennai');
SELECT * FROM users;
INSERT INTO users(user_name, city) VALUES('Tharani','Hyderabad');
SELECT * FROM users;
-- =======================================================================================================
-- ALTER STATEMENT
-- ADD A NEW COLUMN
-- REMOVE THE COLUMN
-- MODIFYING THE COLUMN
-- RENAMING THE COLUMN
-- RENAMING THE TABLE
SELECT * FROM CUSTOMERS;
DESC CUSTOMERS;
ALTER TABLE CUSTOMERS
ADD COLUMN country VARCHAR(100);
SELECT * FROM CUSTOMERS;
INSERT INTO CUSTOMERS VALUES(1003,'Durga','Hyderabad','India');
SELECT * FROM CUSTOMERS;
UPDATE CUSTOMERS SET country='India' WHERE country is null;
SELECT * FROM CUSTOMERS;
ALTER TABLE CUSTOMERS
ADD COLUMN profession VARCHAR(100) DEFAULT 'Software Engineer';
SELECT * FROM CUSTOMERS;
DESC customers;
-- REMOVING THE COLUMN
ALTER TABLE CUSTOMERS
DROP COLUMN country;
SELECT * FROM CUSTOMERS;
-- MODIFY THE COLUMN
DESC CUSTOMERS;
ALTER TABLE CUSTOMERS
MODIFY COLUMN city VARCHAR(20) DEFAULT 'New Delhi';
DESC CUSTOMERS;
ALTER TABLE CUSTOMERS
MODIFY custname VARCHAR(100) UNIQUE NOT NULL;
DESC CUSTOMERS;
-- Rename the column
ALTER TABLE CUSTOMERS
RENAME COLUMN city TO location;
DESC CUSTOMERS;
SELECT * FROM CUSTOMERS;
-- RENAME THE TABLE
ALTER TABLE office
RENAME TO organisation;
RENAME TABLE organisation TO office;
-- ADD PK CONSTRAIN
DESC product;
ALTER TABLE product
ADD PRIMARY KEY (prod_id); -- ERROR SINCE THERE IS A NULL VALUE PRESENT
SELECT * FROM product;
DELETE FROM product WHERE prod_id IS NULL;
ALTER TABLE product
ADD PRIMARY KEY (prod_id);
DESC product;
ALTER TABLE product
MODIFY COLUMN amount INT CHECK(amount>0);
DESC product;
SELECT * FROM PRODUCT;
INSERT INTO product VALUES(12,'toys',0); -- ERRPR
INSERT INTO product VALUES(12,'toys',100);
SELECT * FROM product;
-- =======================================================================================================
-- DELETE , TRUNCATE , DROP
-- DELETE statement can be used to delete one/many/all rows
DELETE FROM product WHERE amount IS NULL;
SELECT * FROM product;
DELETE FROM product WHERE amount<50000;
SELECT * FROM product;
DELETE FROM product;
SELECT * FROM PRODUCT;
-- TRUNCATE
-- TRUNCATE is delete all the records in a table
SELECT * FROM users;
TRUNCATE TABLE users;
SELECT * FROM users;
-- DROP
-- Drop will delete the entire data as well as the table as well
SELECT * FROM customer;
DROP TABLE customer;
SELECT * FROM customer;
-- =======================================================================================================
-- TCL - TRANSACTION CONTROL LANGUAGE
START TRANSACTION;
SELECT * FROM CUSTOMERS;
DELETE FROM CUSTOMERS WHERE custname IN ('Irfan','Anand');
SELECT * FROM CUSTOMERS;
COMMIT;
SELECT * FROM CUSTOMERS;
SELECT * FROM unique_table;
START TRANSACTION;
SELECT * FROM unique_table;
DELETE FROM unique_table;
SELECT * FROM unique_table;
ROLLBACK;
SELECT * FROM unique_table;
START TRANSACTION;
DELETE FROM unique_table WHERE custid IS NULL;
SELECT * FROM unique_table;
COMMIT;
START TRANSACTION;
SELECT * FROM unique_table;
TRUNCATE TABLE unique_table;
SELECT * FROM unique_table;
ROLLBACK;
SELECT * FROM unique_table;
START TRANSACTION;
SELECT * FROM OFFICE;
SAVEPOINT p1;
UPDATE OFFICE SET salary=10000 WHERE salary='';
SELECT * FROM OFFICE;
SAVEPOINT p2;
UPDATE OFFICE SET company='WIPRO' WHERE company='';
SELECT * FROM OFFICE;
SAVEPOINT p3;
DELETE FROM OFFICE WHERE Place='';
SELECT * FROM OFFICE;
SAVEPOINT p4;
DELETE FROM OFFICE WHERE AGE=0;
SELECT * FROM OFFICE;
ROLLBACK TO SAVEPOINT p4;
ROLLBACK TO SAVEPOINT p3;
COMMIT;
SELECT * FROM OFFICE;
-- =============================================== THE END ===============================================