MySQL DB Topic To Learn Database
MySQL DB Topic To Learn Database
Day 06 --Clasuses
--LIMIT
--Let's understand pagination first
--Ex - SELECT * FROM <tab_name> LIMIT quantity;
--OFFSET
--Must be in the end
--ORDER BY
--Ascending by default
--single column, multiple column
--DESC
--DISTINCT
--To avoid duplicacy
--Ex - SELECT DISTINCT col_name FROM <tab_name>;
--Comes right after SELECT
--Multiple Columns
Day 12 --Subqueries
-- SELECT .......WHERE creditlimit = (another select query which
returns a creditlimit val)
--Case
--SELECT customername, country,
CASE
WHEN country = 'USA' THEN 'US'
WHEN country = 'INDIA' THEN 'IN'
ELSE 'some text'
END AS country_code
FROM customers;
--IFNULL(column_name, alt_value)
--Altering table structure
--ALTER TABLE <tab_name>
ADD col_name data_type;
DROP COLUMN col_name;
MODIFY COLUMN col_name data_type;
--Let's talk about relationships
--ONE TO ONE
--ONE TO MANY
--MANY TO MANY
--FOREIGN KEY
Day 16 --VIEWS
--Facts
--View is a named query stored in the database catalog.
--Increases security - Restrict Access
--Virtual tables
--Creating views
CREATE VIEW view_name AS select query
--Operations
SELECT * from view_name
Can also apply conditions in where clause, join with other data
--Dropping views
DROP VIEW view_name;
--Altering views
CREATE OR REPLACE VIEW view_name AS select query
--Editing views
--Deleting data & Updating data from views
--Also effects the origional data
--WITH CHECK OPTION
Day 17 --Delimiter
--DELIMITER $$
--Stored procedures
--Saves the mysql queries inside the database itself
--Can do the programming stuff like if-else, loops
--Optimization from db side
--Creating a stored procedure
DELIMITER $$
CREATE PROCEDURE cust_info()
BEGIN
SELECT customerName, country
FROM customers ORDER BY customerName;
END$$
DELIMITER ;
--Calling
CALL cust_info();
--Deleting
DROP PROCEDURE prod_name;
--IF EXISTS
--Parameter or Argument passing
--Types
--IN
--OUT
--INOUT
--Syntax
prod_name(IN val_name data_type(size), ...)
--Task - Make a prod which accepts customernumber and returns the total
number of orders by customer
--Defining variables
--User variable (for queries)
SET @var_name = val;
--Inside procedure
--DECLARE var_name data_type DEFAULT val;
--Setting values in variables
--SELECT col_name INTO var_name FROM......;
Day 18 --Functions
--Same as procedures but can return only one val
--CREATE FUNCTION fun_name (args)
RETURNS data_type
attribute - DETERMINISTIC - returns the same val - do not
modifies data
--general use is formula based calculations
READS SQL DATA - retrieve data
MODIFIES SQL DATA - DML commands
BEGIN
...
RETURN val;
END
--DROP FUNCTION IF EXISTS fun_name;
--IF ...THEN...END IF;
--IF ...THEN ... ELSE ...END IF;
--IF ...THEN ... ELSEIF ...END IF;
--Triggers
--What ?
--Used for updating data automatically
--Use for logging
--when
--BEFORE or AFTER
--Actions
--INSERT or UPDATE or DELETE
--Type
--FOR EACH ROW
--Statement level (Unsupported in MySQL)
--Fetching row data
--OLD/NEW
--Creating Trigger
DELIMITER $$
CREATE TRIGGER trigger_name
<when> <action>
ON table_name FOR EACH ROW
BEGIN
...
END;
$$
DELIMITER ;
--SHOW TRIGGERS;
--LIKE clause in showing tables or functions or triggers
--DROP TRIGGER IF EXISTS trig_name
Day 19 --User
--CREATE USER username IDENTIFIED BY 'passowrd';
--SELECT * FROM mysql.user;
--DROP USER IF EXISTS user_name;
--Privilages
--GRANT {SELECT, INSERT, DELETE, UPDATE or ALL}
ON {db_name or *(for all db)}.{tab_name or * (for all tab)} TO
username;
--REVOKE ...
Topics to be explored
--Events
--Transaction
--Indexing
--Normalization
--MySQL Errors
--Can validate the inputs
--MySQL Docs
--SIGNAL SQLSTATE 'sql_err_code'
SET MESSAGE_TEXT = 'msg';
--45000