Вы находитесь на странице: 1из 11

//PRIMARY KEY IS BOTH NOT NULL AND UNIQUE; and there can be compound(composite key)

primary key as well


// how to show the all the tables of a databases;

Show tables;

CREATE TABLE student();


DESCRIBE student; // DESCRIBE ABOUT ALL THE ATTRIBUTES

DROP TABLE student; // table will get deleted

#modify a tabel
ALTER TABLE student
ADD gpa DECIMAL(3,2); //

//to delete a attribute from a table


ALTER TABLE student
DROP gpa;

#INSERTTION#
INSERT INTO student
VALUES(1, 'JACK','biology');

SELECT *
FROM student; // grab all the information about the table

INSERT INTO student


VALUES(2, 'JACfdK','biology2'); // push_back ho jayega

INSERT INTO student(student_id,student_name) values(3,’jonas’); #which means you can insert to


some particular attributes too.

#adding primary key later on after the creation of table


Alter table student
ADD PRIMARY KEY(student_id);

#droping a primary key later on after the creation of table


Alter table STUDENT drop primary key(student_id); #this is wrong
Alter table drop primary key; #correct one

#ADDING CONSTRAINTS
Student_id varchar(20) NOT NULL;
Student_name varchar(68) UNIQUE; // it will have null values
Student name varchar(56) not null unique;
#UPDATION
1. UPDATE student
SET s_name = ‘siddharth’
WHERE s_name = ‘mayank’; // can also be s_id = 6
2. UPDATE student
SET s_name = ‘mayak’
WHERE s_id = 45 OR s_name = ‘rahul’;
3. UPDATE student
SET s_name = ‘mayank’ // whole row got affected;

#DELETION OF A PARTICULAR ROW


DELETE FROM student; // all row will be deleted

DELETE FROM STUDENT


WHRE s_name = ‘siddharth’;

DELETE FROM STUDENT


WHERE s_name = ‘undecided’ AND ‘s_id = 5’

#DROPING A TABLE,
DELETE FROM STUDENT; #pura rows delete but the table still exits
DROP TABLE STUDENT; #this will delete the complete table

SOME QUERIES // LITTLE QUERIES (ASK THE DATABASE FOR PARTICULAR INFO. ABOUT THE TABLE)
SELECT * (means select every column) from student;
SELECT s_id from student;
OR
SELECT student.s_id from student; #selecting a particular column

SELECT student.s_id, student.s_name FROM student ORDER BY s_name // this will give student name in
increasing order OR
SELECT student.s_id, student.s_name FROM student ORDER BY s_name ASC;

SELECT student.s_id, student.s_name FROM student ORDER BY name DESC // this will give student
name in decreasing order

SELECT s_id,s_name FROM student ORDER BY s_id , s_name; //make a note of it

SELECT * FROM student LIMIT 2;


SELECT * FROM student ORDER BY student_id DESC LIMIT 2; //DESC k baad limit

SELECT * FROM student where s_name = ‘siddharth’;


SELECT * FROM student where s_name = ‘siddharth’ AND s_branch = ‘cse’ #selecting a particular row
SELECT s_name,s_id FROM student where s_name=’siddharth’ OR s_crush=’viru’
SO YOU CAN PLAY WITH THE WHERE STATEMENT BY USING “ < , > , <=, >=,<>(NOT EQUAL TO)
,AND,OR,
----------------------SO ANYTHING FOLLOWED BY “--“ IS COMMENT HERE -------------------

SELECT * FROM student WHERE s_name IN (‘Claire’, ‘Kate’,’Mike’) #jiska s_name ‘claire OR ‘kate’ OR
‘Mike’ ho it will list it out in fashion

SELECT * FROM student WHERE s_name IN (‘Claire’, ‘Kate’,’Mike’) AND s_id >15 # AND ko combine kar
diya hai maine

COMPANY DATABASE INTO (you’re rarely going to get a single table so must
know how to work upon multiple tables )

CREATE TABLE employee (


emp_id INT PRIMARY KEY,
first_name VARCHAR(40),
last_name VARCHAR(40),
birth_day DATE,
sex VARCHAR(1),
salary INT,
super_id INT,
branch_id INT
);

CREATE TABLE branch (


branch_id INT PRIMARY KEY,
branch_name VARCHAR(40),
mgr_id INT,
mgr_start_date DATE,
FOREIGN KEY(mgr_id) REFERENCES employee(emp_id) ON DELETE SET NULL
); #so here mgr_id is a foreign keyword , it’s not a necessary keyword

ALTER TABLE employee #LATER ON YOU CAN ADD REFERENCES IN ORDER TO HAVE FOREIGN KEY.
ADD FOREIGN KEY(branch_id)
REFERENCES branch(branch_id)
ON DELETE SET NULL;

ALTER TABLE employee


ADD FOREIGN KEY(super_id)
REFERENCES employee(emp_id)
ON DELETE SET NULL;

CREATE TABLE client (


client_id INT PRIMARY KEY,
client_name VARCHAR(40),
branch_id INT,
FOREIGN KEY(branch_id) REFERENCES branch(branch_id) ON DELETE SET NULL
);
CREATE TABLE works_with (
emp_id INT,
client_id INT,
total_sales INT,
PRIMARY KEY(emp_id, client_id), #COMPOSITE PRIMARY KEY
FOREIGN KEY(emp_id) REFERENCES employee(emp_id) ON DELETE CASCADE,
FOREIGN KEY(client_id) REFERENCES client(client_id) ON DELETE CASCADE
);

CREATE TABLE branch_supplier (


branch_id INT,
supplier_name VARCHAR(40),
supply_type VARCHAR(40),
PRIMARY KEY(branch_id, supplier_name), #HERE FOREIGN KEY IS A PRIMARY KEY,SO AFTER
DELETION OF A FOREIGN KEY WILL PURA DLETE YE BATAYA THA
FOREIGN KEY(branch_id) REFERENCES branch(branch_id) ON DELETE CASCADE
);

-- -----------------------------------------------------------------------------

-- Corporate
INSERT INTO employee VALUES(100, 'David', 'Wallace', '1967-11-17', 'M', 250000, NULL, NULL); #abhi
super_id and branch_id has not been created yet that’s why NULLn

INSERT INTO branch VALUES(1, 'Corporate', 100, '2006-02-09');

UPDATE employee #updation in david wallace


SET branch_id = 1
WHERE emp_id = 100;
------------------------------------------------------------------------------------------
INSERT INTO employee VALUES(101, 'Jan', 'Levinson', '1961-05-11', 'F', 110000, 100, 1);

-- Scranton #it’s comment actually


INSERT INTO employee VALUES(102, 'Michael', 'Scott', '1964-03-15', 'M', 75000, 100, NULL);

INSERT INTO branch VALUES(2, 'Scranton', 102, '1992-04-06');

UPDATE employee
SET branch_id = 2
WHERE emp_id = 102;

INSERT INTO employee VALUES(103, 'Angela', 'Martin', '1971-06-25', 'F', 63000, 102, 2);
INSERT INTO employee VALUES(104, 'Kelly', 'Kapoor', '1980-02-05', 'F', 55000, 102, 2);
INSERT INTO employee VALUES(105, 'Stanley', 'Hudson', '1958-02-19', 'M', 69000, 102, 2);

-- Stamford #it’s comment actually


INSERT INTO employee VALUES(106, 'Josh', 'Porter', '1969-09-05', 'M', 78000, 100, NULL);

INSERT INTO branch VALUES(3, 'Stamford', 106, '1998-02-13');

UPDATE employee
SET branch_id = 3
WHERE emp_id = 106;

INSERT INTO employee VALUES(107, 'Andy', 'Bernard', '1973-07-22', 'M', 65000, 106, 3);
INSERT INTO employee VALUES(108, 'Jim', 'Halpert', '1978-10-01', 'M', 71000, 106, 3);

-- BRANCH SUPPLIER #it’s comment actually


INSERT INTO branch_supplier VALUES(2, 'Hammer Mill', 'Paper');
INSERT INTO branch_supplier VALUES(2, 'Uni-ball', 'Writing Utensils');
INSERT INTO branch_supplier VALUES(3, 'Patriot Paper', 'Paper');
INSERT INTO branch_supplier VALUES(2, 'J.T. Forms & Labels', 'Custom Forms');
INSERT INTO branch_supplier VALUES(3, 'Uni-ball', 'Writing Utensils');
INSERT INTO branch_supplier VALUES(3, 'Hammer Mill', 'Paper');
INSERT INTO branch_supplier VALUES(3, 'Stamford Lables', 'Custom Forms');

-- CLIENT #it’s comment actually


INSERT INTO client VALUES(400, 'Dunmore Highschool', 2);
INSERT INTO client VALUES(401, 'Lackawana Country', 2);
INSERT INTO client VALUES(402, 'FedEx', 3);
INSERT INTO client VALUES(403, 'John Daly Law, LLC', 3);
INSERT INTO client VALUES(404, 'Scranton Whitepages', 2);
INSERT INTO client VALUES(405, 'Times Newspaper', 3);
INSERT INTO client VALUES(406, 'FedEx', 2);

-- WORKS_WITH #it’s comment actually


INSERT INTO works_with VALUES(105, 400, 55000);
INSERT INTO works_with VALUES(102, 401, 267000);
INSERT INTO works_with VALUES(108, 402, 22500);
INSERT INTO works_with VALUES(107, 403, 5000);
INSERT INTO works_with VALUES(108, 403, 12000);
INSERT INTO works_with VALUES(105, 404, 33000);
INSERT INTO works_with VALUES(107, 405, 26000);
INSERT INTO works_with VALUES(102, 406, 15000);
INSERT INTO works_with VALUES(105, 406, 130000);

--Find all the employes


Select * from client;

--find all the employees ordered by salary


Select *
from employee
ORDER BY salary DESC
--find all employees ordered by sex then name
Select *
From employee
ORDER BY sex, first_name , last_name;
--find the first 5 employee in the table
Select *
From employee
LIMIT 5;

--find the first and last names of all employees


SELECT first_name, last_name
FROM employee;
--you can even change the column name (as first_name and last_name in above column )
SELECT first_name AS forername, last_name AS surname
FROM employee; #hence you changed the column name

--find out all the different genders


SELECT DISTINCT sex
FROM employee;
SELECT DISTINCT branch_Id
FROM employee;

SQL FUNCTIONS
--FIND THE NUMBER OF EMPLOYEES
SELECT COUNT(emp_id) #it will give total count of the emp_ ids
FROM employee;

--FIND THE NUMBER OF FEMALE EMPLOYEES born after 1970


SELECT COUNT(emp_id)
FROM employee
WHERE sex = ‘F’ AND birth_data > ‘1970-01-01’;

--FIND THE AVERAGE OF ALL THE EMPLOYEE’S SALARIES;


SELECT AVG()
FROM employee
WHERE sex = ‘M’ ;
-----this will give the average of all the employee salaries

--FIND THE sum OF ALL THE EMPLOYEE’S SALARIES;


SELECT SUM()
FROM employee
WHERE sex = ‘M’ ;
-----this will give the SUM of all the employee salaries
--FIND OUT HOW MANY MALES AND FEMALES THERE ARE (also called aggregation)
SELECT COUNT(sex)
FROM employee

SELECT COUNT(sex), sex


FROM employee #this is not exactly what we want

SELECT COUNT(sex), sex


FROM employee
GROUP BY sex; #i am telling the sequel to group different categories in a particular attributes

SELECT SUM(total_sales), emp_id


FROM works_with
GROUP BY emp_id # group me emp_id of one type ka sum dega

--% = any # characters, _= one character

--find any client’s who are an LLC


SELECT *
FROM client
WHERE client_name LIKE ‘ %LLC’ ;

SELECT *
FROM branch_supplier
WHERE LIKE ‘ % Label%’ ; #will only give the “ Lable” jahan pe hoga

SELECT *
FROM employee
WHERE birth_data LIKE ‘____-10%’;

SELECT *
FROM employee
WHERE birth_data LIKE ‘____-10%’;

SELECT *
FROM client
WHERE client_name LIKE ‘%school%’; #school will be searched

UNION IN SQL
--find a list of employe and branch names
SELECT first_name
FROM employee;

SELECT branch_name
FROM employee;

SELECT first_name
FROM employee
UNION
SELECT branch_name
FROM employee; #IN A SINGLE COLUMN ALL THOSE first_name and branch_name

SELECT first_name, last_name


FROM employee
UNION
SELECT branch_name
FROM employee; #HERE YOU’LL GET AN ERROR COZ UPPAR ME 2 COLUMN AND NICHE ME EK
COLUMN SO THEY SHOULD HAVE SAME NUMBER OF COLUMN [[ALSO SAME DATATYPE AS WELL]]
THEN ONLY THEY WILL BE IN SAME COLUMN
SELECT first_name
FROM employee
UNION
SELECT branch_name
FROM employee
UNION
SELECT client_name
FROM client;

SELECT first_name AS company_names


FROM employee
UNION
SELECT branch_name
FROM employee
UNION
SELECT client_name
FROM client;

SELECT client_name, branch_id


FROM client
UNION
SELECT supplier_name, branch_id
FROM branch_supplier; #both have 2 columns

--find a list of all money earned by the company


SELECT salary
FROM employee
UNION
SELECT total_sales
FROM works_with

JOIN , LEFT JOIN AND RIGHT JOIN


INSERT INTO branch VALUES(4, ‘Buffalo’, NULL,NULL);
--find all branches and the names of the branch managers
SELECT employee.emp_id, employee.first_name, branch.branch_name #here we’ve used columns of
different tables
FROM employee
JOIN branch
ON employee.emp_id = branch.mgr_id;
#HERE THE OUTPUT WILL BE COLUMNS FROM DIFFERENT TABLE (INTO A SINGLE TABLE)

--------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
NESTED QUERIES
SELECT works_with.emp_id
FROM works_with
WHERE works_with.total_sales > 20000;

SELECT employee.first_name, employee.last_name


FROM employee
WHRE employee.emp_id IN (
SELECT works_with.emp_id
FROM works_with
WHRE works_with.total_sales > 30000
);

--Find all clients who are handled by the branch


--
SELECT branch.branch_id
FROM branch
WHRE branch.branch_id = 102;

SELECT branch.branch_id
FROM branch
WHRE branch.mgr_id = 102;
SELECT client.client_name
FROM client
WHERE client.branch_id = (
SELECT branch.branch_id
FROM branch
WHERE branch.mgr_id =102 #yaha pe semi colon nahi
)

SELECT client.client_name
FROM client
WHERE client.branch_id = (
SELECT branch.branch_id
FROM branch
WHERE branch.mgr_id =102 #yaha pe semi colon nahi
LIMIT 1
);

SO WE MUST HAVE BASIC KNOWLEDGE OF NESTED QUERY


-------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------
DELETE IN SQL LANGUAGE ()
 ON DELETE SET NULL
NOW RECALL THE WAY “ FOREIGN KEY WAS DECLARED for the ‘BRANCH TABLE’ ” ‘ON DELETE
SET null’
‘ON DELETE SET null’ ===== WHEN EVER IT’S GET DELETED THEN IT WILL BECOME NULL
DELETE FROM employee
WHERE emp_id = 102;

SELECT * FROM branch; #YOU CAN SEE THE CHANGES REFLECTED IN THE BRANCH TABLE
#also the same changes will reflect on the employee table in the place of super_id (u can see
lot of NULL in the super_id) super id was also a foreign key

 DELETE CASCADE

DELETE FROM branch


WHERE branch_id = 2;

SELECT * FROM branch_supplier;


NOTE:-- SINCE PRIMARY KEY CAN’T BE null HENCE THEY ARE DELETED FROM THE TABLE,

-------------------------------------------------------------------------------------------------------------
<-TRIGGERS->
Which define a certain action performed in the database, if some row is deleted from the database
this action need to be performed,
CREATE TABEL trigger_test(
message VARCHAR(100) #one column ‘message’
);

DELIMITER $$
CREATE
TRIGGER my_trigger BEFEORE INSERT
ON employee
FOR EACH ROW BEGIN
INSERT INTO trigger_test VALUES(‘added new employee’);
END$$
DELIMITER ;

Вам также может понравиться