-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathday3_sql_practice.sql
More file actions
222 lines (171 loc) · 5.14 KB
/
day3_sql_practice.sql
File metadata and controls
222 lines (171 loc) · 5.14 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
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
-- 🗂️ DAY 3: SQL DDL COMMANDS & CONSTRAINTS PRACTICE
-- =============================================
-- 🏗️ DDL COMMANDS PRACTICE
-- =============================================
-- ✅ 1. CREATE COMMAND
-- Database and table creation with constraints
CREATE DATABASE student;
USE student;
CREATE TABLE details (
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR(50) NOT NULL,
created DATE DEFAULT (CURRENT_DATE)
);
-- ✅ 2. ALTER COMMAND
-- Table structure modifications
-- Add new column
ALTER TABLE details ADD gender VARCHAR(15);
SELECT * FROM details;
-- Drop column
ALTER TABLE details DROP COLUMN gender;
SELECT * FROM details;
-- Modify column data type
ALTER TABLE details MODIFY student_name VARCHAR(20);
-- Change column name and properties
ALTER TABLE details CHANGE COLUMN created created_date DATE DEFAULT (CURRENT_DATE);
SELECT * FROM details;
-- Add column with constraint
ALTER TABLE details ADD age INT;
ALTER TABLE details ADD CONSTRAINT chh_age CHECK (age > 0);
SELECT * FROM details;
-- Drop constraint and column
ALTER TABLE details DROP CONSTRAINT chh_age;
ALTER TABLE details DROP COLUMN age;
-- ✅ 3. DROP COMMAND
-- Database and table deletion
CREATE DATABASE aman;
USE aman;
CREATE TABLE aman_info(
id INT PRIMARY KEY AUTO_INCREMENT,
phone_number VARCHAR(15) NOT NULL UNIQUE
);
-- Drop table and database
DROP TABLE aman_info;
DROP DATABASE aman;
-- ✅ 4. TRUNCATE COMMAND
-- Delete all data but keep structure
CREATE DATABASE aman;
USE aman;
CREATE TABLE aman_info(
id INT PRIMARY KEY AUTO_INCREMENT,
phone_number VARCHAR(15) NOT NULL UNIQUE
);
-- Insert sample data
INSERT INTO aman_info(phone_number)
VALUES
(9919990901),
(9914569090),
(910999090);
SELECT * FROM aman_info;
-- Truncate table (all data deleted)
TRUNCATE TABLE aman_info;
SELECT * FROM aman_info;
-- ✅ 5. RENAME COMMAND
-- Table renaming
RENAME TABLE aman_info TO av_info;
SHOW TABLES;
-- =============================================
-- 🔗 CONSTRAINTS PRACTICE
-- =============================================
-- ✅ PRIMARY KEY Constraints
USE gym_managment;
-- Single column primary key
CREATE TABLE details_type01(
person_id INT PRIMARY KEY,
person_name VARCHAR(50)
);
-- Composite primary key
CREATE TABLE details_type02(
person_id INT,
person_name VARCHAR(50),
person_phone VARCHAR(15),
PRIMARY KEY (person_id, person_phone)
);
-- ✅ FOREIGN KEY + NOT NULL Constraints
CREATE TABLE tools(
tool_id INT PRIMARY KEY,
tool_name VARCHAR(50) NOT NULL
);
CREATE TABLE tool_users(
user_id INT PRIMARY KEY,
user_name VARCHAR(50) NOT NULL,
tool_id INT,
FOREIGN KEY (tool_id) REFERENCES tools(tool_id)
);
-- ✅ UNIQUE + NOT NULL Constraints
-- Add unique constraint to existing table
ALTER TABLE details_type02 MODIFY person_phone VARCHAR(15) UNIQUE;
-- Table with unique and not null constraints
CREATE TABLE details_01types(
person_id INT,
person_first_name VARCHAR(50) NOT NULL,
person_last_name VARCHAR(50) NOT NULL,
person_phone VARCHAR(15) UNIQUE,
PRIMARY KEY (person_id, person_phone)
);
-- Alternative unique constraint syntax
CREATE TABLE details_02types(
person_id INT PRIMARY KEY,
person_first_name VARCHAR(50) NOT NULL,
person_last_name VARCHAR(50) NOT NULL,
person_phone VARCHAR(15) UNIQUE,
UNIQUE (person_id, person_phone)
);
-- ✅ CHECK Constraints
-- Basic check constraint
CREATE TABLE details01(
person_id INT PRIMARY KEY,
person_name VARCHAR(50),
person_phone VARCHAR(15),
person_age INT CHECK (person_age > 18)
);
-- Check constraint with custom name
CREATE TABLE details02(
person_id INT PRIMARY KEY,
person_name VARCHAR(50),
person_phone VARCHAR(15),
person_age INT CHECK (person_age > 18),
person_income INT CONSTRAINT income_check CHECK (person_income > 10000)
);
-- Drop check constraint
ALTER TABLE details02 DROP CONSTRAINT income_check;
DESC details02;
-- ✅ DEFAULT Constraints
-- Default timestamp
CREATE TABLE details_01(
person_id INT PRIMARY KEY,
person_name VARCHAR(50),
join_date TIMESTAMP DEFAULT (CURRENT_TIMESTAMP)
);
-- Default enum value
CREATE TABLE details_02(
person_id INT PRIMARY KEY,
person_name VARCHAR(50),
daily_login ENUM('SUCCESS', 'PENDING') DEFAULT 'PENDING'
);
-- =============================================
-- 🔍 SYSTEM COMMANDS PRACTICE
-- =============================================
-- Show all databases
SHOW DATABASES;
-- Show current database
SELECT DATABASE();
-- Show tables in current database
SHOW TABLES;
-- Describe table structure
DESCRIBE details_01;
-- Show complete table creation script
SHOW CREATE TABLE details_01;
-- Show all columns information
SHOW COLUMNS FROM details_01;
-- =============================================
-- 🎯 PRACTICE SUMMARY
-- =============================================
/*
MASTERED CONCEPTS:
✅ All 5 DDL Commands (CREATE, ALTER, DROP, TRUNCATE, RENAME)
✅ All 7 SQL Constraints (Primary Key, Foreign Key, Unique, Not Null, Check, Default, Index)
✅ Data Integrity Types (Entity, Referential, Domain, Business)
✅ System Metadata Commands
✅ Practical Implementation with Real Examples
*/