LAB Experiment FINAL
LAB Experiment FINAL
```sql
-- Create a database
USE student_management;
-- Create a table
student_id INT,
first_name VARCHAR(50),
last_name VARCHAR(50),
age INT,
email VARCHAR(100)
);
```
```sql
department_id INT,
CONSTRAINT fk_department
REFERENCES departments(department_id)
);
);
```
```sql
VALUES
```sql
UPDATE students
SET age = 23
WHERE student_id = 1;
UPDATE students
WHERE student_id = 3;
```
-- Start transaction
START TRANSACTION;
-- Perform operations
-- Create savepoint
SAVEPOINT sp1;
-- Rollback to savepoint
ROLLBACK TO sp1;
-- Commit transaction
COMMIT;
-- ROLLBACK;
```
-- Create user
-- Grant privileges
-- Revoke privileges
-- Show grants
```
```sql
-- Exact match
-- Multiple conditions
WHERE age > 20 AND (last_name LIKE 'D%' OR last_name LIKE 'S%');
```
```sql
-- BETWEEN
-- IN
-- Aggregate functions
SELECT
COUNT(*) AS total_students,
AVG(age) AS average_age,
MIN(age) AS youngest,
MAX(age) AS oldest
FROM students;
```
## Experiment 9: SELECT with GROUP BY, HAVING, ORDER BY
```sql
SELECT
department_id,
COUNT(*) AS student_count
FROM students
GROUP BY department_id;
-- Having clause
SELECT
department_id,
AVG(age) AS avg_age
FROM students
GROUP BY department_id
-- Order by
```
-- Subquery in WHERE
WHERE department_id IN (
);
-- Correlated subquery
FROM students s
WHERE EXISTS (
);
```
```sql
-- Inner join
FROM students s
FROM students s
FROM students s
```
```sql
-- Create view
FROM students s
-- Create index
-- Show indexes
SHOW INDEX FROM students;
```
```sql
-- Using AUTO_INCREMENT
) AUTO_INCREMENT=1001;
-- Reset auto-increment
```
```sql
BEGIN
REPEAT
SET i = i + 1;
END //
DELIMITER ;
DELIMITER //
BEGIN
OPEN cur;
END WHILE;
CLOSE cur;
END //
DELIMITER ;
```
```sql
SELECT
first_name,
last_name,
CASE
ELSE 'Senior'
END AS student_level
FROM students;
DELIMITER //
BEGIN
DECLARE i INT DEFAULT 1;
my_loop: LOOP
SET i = i + 1;
IF i > 10 THEN
LEAVE my_loop;
END IF;
END //
DELIMITER ;
```
```sql
DELIMITER //
IN p_first_name VARCHAR(50),
IN p_last_name VARCHAR(50),
IN p_age INT,
IN p_email VARCHAR(100)
BEGIN
INSERT INTO students (first_name, last_name, age, email)
END //
DELIMITER ;
-- Call procedure
```
```sql
DELIMITER //
RETURNS VARCHAR(2)
DETERMINISTIC
BEGIN
END IF;
RETURN grade;
END //
DELIMITER ;
-- Use function
```
```sql
DELIMITER //
BEGIN
OPEN cur;
read_loop: LOOP
FETCH cur INTO s_id, s_age;
IF done THEN
LEAVE read_loop;
END IF;
END LOOP;
CLOSE cur;
END //
DELIMITER ;
```
```sql
DELIMITER //
BEGIN
END //
DELIMITER ;
student_id INT,
action VARCHAR(10),
);
DELIMITER //
BEGIN
END //
DELIMITER ;
```
-- REPLACE
-- REPEAT
-- REVERSE
SELECT
LEFT(first_name, 1) AS first_initial,
RIGHT(last_name, 2) AS last_two_chars
FROM students;
SELECT
FROM students;
```
-- SPACE
-- SUBSTR
SELECT
UPPER(first_name) AS upper_name,
LOWER(last_name) AS lower_name
FROM students;
-- TRIM
-- LENGTH
```
```php
<?php
// Database connection
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "student_management";
// Create connection
// Check connection
if ($conn->connect_error) {
// Insert data
$sql = "INSERT INTO students (first_name, last_name, age) VALUES ('John', 'Doe', 20)";
if ($conn->query($sql) {
} else {
// Select data
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["student_id"]. " - Name: " . $row["first_name"]. " " . $row["last_name"]. "<br>";
} else {
$conn->close();
?>
```
```sql
departure_time TIME,
arrival_time TIME
);
CREATE TABLE passengers (
age INT,
);
train_id INT,
passenger_id INT,
seat_number VARCHAR(10),
);
GROUP BY b.train_id
);
```
```sql
duration_years INT,
total_seats INT
);
CREATE TABLE applicants (
dob DATE,
address TEXT,
phone VARCHAR(15),
high_school_percentage DECIMAL(5,2)
);
applicant_id INT,
program_id INT,
);
SELECT p.*,
FROM programs p
LEFT JOIN (
FROM applications
GROUP BY program_id
) a ON p.program_id = a.program_id
```
```sql
operator VARCHAR(100),
source_city VARCHAR(50) NOT NULL,
departure_time DATETIME,
arrival_time DATETIME,
total_seats INT
);
phone VARCHAR(15),
email VARCHAR(100)
);
bus_id INT,
passenger_id INT,
seat_number VARCHAR(10),
);
-- Book a ticket and generate QR code
VALUES (
205,
LAST_INSERT_ID(),
'B12',
);
FROM tickets t
UPDATE tickets
This document provides a complete practical record for all 25 database experiments. Each section
includes relevant SQL queries with explanations that demonstrate the concepts covered in each
experiment.