## Manipulation ## ## **SELECT** ``` SELECT * (or SOMETHING) FROM table_name; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - * = Everything - SOMETHING = Speficy the name of the columns we want to take the information (Columns Name) - FROM = Indicate what table to check --> *`clause`* - table_name = EX: Table (Composed of coluns and rows) (Data in form of TEXT, DATE, REAL, ...) - ; = end of the statment **AS** ``` SELECT name AS 'Titles' FROM movies; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - name = columns normal name - AS = Change the name of the Column - 'Titles' = The name column renamed - - FROM = Indicate what table to check --> *`clause`* - table_name = EX: Table (Composed of coluns and rows) (Data in form of TEXT, DATE, REAL, ...) - ; = end of the statment **DISTINCT** ``` SELECT DISTINCT tools FROM inventory; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - DISTINCT = Return unique values in the output - tools = Column name - FROM = Indicate what table to check --> *`clause`* - table_name = EX: Table (Composed of coluns and rows) (Data in form of TEXT, DATE, REAL, ...) - ; = end of the statment **Opperation** ``` SELECT * FROM movies WHERE imdb_rating > 8; ``` - `=` `!=` `>` `<` `>=` `<=` - SELECT = Indicate the action (Witch is select) --> *`clause`* - * = Everything - FROM = Indicate what table to check --> *`clause`* - movies = Table name - WHERE = Looking for value (following statement) - imdb_rating > 8 = Looking for imdb_rating that is unter 8 - ; = end of the statment **LIKE** ``` SELECT *  FROM movies WHERE name LIKE 'Se_en'; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - * = Everything - FROM = Indicate what table to check --> *`clause`* - movies = Table name - WHERE = Looking for value (following statement) - name = columns - LIKE 'Se_en' = `LIKE 'Se_en'` is a condition evaluating the `name` column for a specific pattern. - ; = end of the statment **LIKE** ``` SELECT *  FROM movies WHERE name LIKE '%man%'; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - * = Everything - FROM = Indicate what table to check --> *`clause`* - movies = Table name - WHERE = Looking for value (following statement) - name = Column name - LIKE = `LIKE` is a condition evaluating the `name` column for a specific pattern. - '%man%' = Mean anything that has something before 'man' and something after - ; = end of the statment **IS / IS NOT** ``` SELECT name FROM movies WHERE imdb_rating IS (NOT) NULL; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - * = Everything - FROM = Indicate what table to check --> *`clause`* - movies = Table name - WHERE = Looking for value (following statement) - imbd_rating = columns name - IS (NOT) NULL = Looking for field that are NULL or NOT - ; = end of the statment **BETWEEN** ``` SELECT * FROM movies WHERE name BETWEEN 'D 'AND 'G'; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - * = Everything - FROM = Indicate what table to check --> *`clause`* - movies = Table name - WHERE = Looking for value (following statement) - name = Column name - BETWEEN = Looking for value between 2 elements - 'D' AND 'G' = Values we are looking for - IS (NOT) NULL = Looking for field that are NULL or NOT - ; = end of the statment **AND** ``` SELECT *  FROM movies WHERE year BETWEEN 1990 AND 1999    AND genre = 'romance'; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - * = Everything - FROM = Indicate what table to check --> *`clause`* - movies = Table name - WHERE = Looking for value (following statement) - year = Column name - BETWEEN = Looking for value between 2 elements - '1990' AND '1999' = Values we are looking for - AND = Add a condition - genre = 'romance'; = Looking for column genre = romance - ; = end of the statment **Or** ``` SELECT *FROM movies WHERE year > 2014    OR genre = 'action'; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - * = Everything - FROM = Indicate what table to check --> *`clause`* - movies = Table name - WHERE = Looking for value (following statement) - year = Column name - > 2014 = Biger the 2014 - OR = Add a OR condition - genre = 'action'; = Looking for column genre = romance - ; = end of the statment **Order By** ``` SELECT * FROM movies ORDER BY name ASD,DSC; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - * = Everything - FROM = Indicate what table to check --> *`clause`* - movies = Table name - ORDER BY = Order by - name = columns name - ASD, DSC = Assendent, Dessendent - ; = end of the statment **Limit** ``` SELECT * FROM movies LIMIT 10; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - * = Everything - FROM = Indicate what table to check --> *`clause`* - movies = Table name - LIMIT 10 = Limit the number of responses to 10 (In this case) - ; = end of the statment **Case** ``` SELECT name, CASE   WHEN imdb_rating > 8 THEN 'Fantastic'   WHEN imdb_rating > 6 THEN 'Poorly Received'   ELSE 'Avoid at All Costs' END FROM movies; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - name = Column name - CASE = Only show element that correspond to specific CASE WHEN = Condition ELSE = Everything that does not fit in those condition - END = End the case statement - FROM = Indicate what table to check --> *`clause`* - movies = Table name - ; = end of the statment ## ## **Join** ``` SELECT * FROM orders JOIN customers   ON orders.customer_id = customers.customer_id; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - * = Everything - orders = Table - JOIN = Join to the other table - customer = Second table (the one we merge in) - ON = Explain what field are the same (to add the right info the right customer) ## ## **CREATE** ``` CREATE TABLE table_name (    id INTEGER,    name TEXT,    age INTEGER ); ``` - CREATE = Indicate the action --> *`clause - TABLE = Specify the table - table_name = EX: Table (Composed of coluns and rows) (Data in form of TEXT, DATE, REAL, ...) - id, name, age = Indicate the name of the columns - INTEGER, TEXT, ... = Indicate the type of value that will be incerted - ; = end of the statment ## ## **INSERT** ``` INSERT INTO celebs (id, name, age) VALUES (1, 'Justin Bieber', 22); ``` - INSERT INTO = Indicate the action (Add info to a table) --> *`clause - (id, name, age) = Identifying the columns that data will be inserted into. - VALUES = Specify the value that will be inclouded in the table --> *`clause - (1, 'Justin Bieber', 22) = Value included - ; = end of the statment ## ## **ALTER** ``` ALTER TABLE celebs ADD COLUMN twitter_handle TEXT; ``` - ALTER TABLE = Indicate the action (change the structure of the database) --> *`clause - celebs = Table selected - ADD COLUMN = Specify to add a columns --> *`clause - twitter_handle = Name of the column added - TEXT = Type of element in this column - ; = End of the statment ## ## **Update** ``` UPDATE celebs SET twitter_handle = '@taylorswift13' WHERE id = 4; ``` - UPDATE = Indicate the action --> *`clause - celebs = table selected - SET = Action --> *`clause - twitter_handle = Column name - = '@...' = Input to be added - WHERE id equal 4 = Searching for id equal 4 - ; = End of the statment ## ## **Delete** ``` DELETE FROM celebs WHERE twitter_handle IS NULL; ``` - DELETE = Indicate the action - FROM = Indicate what table to check --> *`clause - celebs = - WHERE = Searching for --> *`clause - twitter_handle = Column Name - IS NULL = Equal Nothing (Empty) --> *`clause - ; = End of the statment ## ## **Constraints** Reject & accept specific data ``` CREATE TABLE celebs (    id INTEGER PRIMARY KEY,    name TEXT UNIQUE,    date_of_birth TEXT NOT NULL,    date_of_death TEXT DEFAULT 'Not Applicable' ); ``` 1. `PRIMARY KEY` columns can be used to uniquely identify the row. Attempts to insert a row with an identical value to a row already in the table will result in a _constraint violation_ which will not allow you to insert the new row. 2. `UNIQUE` columns have a different value for every row. This is similar to `PRIMARY KEY` except a table can have many different `UNIQUE` columns. 3. `NOT NULL` columns must have a value. Attempts to insert a row without a value for a `NOT NULL` column will result in a constraint violation and the new row will not be inserted. 4. `DEFAULT` columns take an additional argument that will be the assumed value for an inserted row if the new row does not specify a value for that column. ## Function ## ## **Count** ``` SELECT COUNT(*) FROM table_name; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - COUNT() = Count the number of row in the column (star) = ALL --> *`clause - FROM = Indicate what table to check --> *`clause`* - table_name = table name - ; = End of the statement ## ## **Sum** ``` SELECT SUM(downloads) FROM table_name; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - SUM(downloads) = Check the summury of the download column --> *`clause - FROM = Indicate what table to check --> *`clause`* - table_name = table name - ; = End of the statement ## ## **Max / Min** ``` SELECT MAX(downloads) FROM Table_name; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - MAX(downloads) = Check the maximum download (Highest value) --> *`clause - FROM = Indicate what table to check --> *`clause`* - table_name = table name - ; = End of the statement ## ## **Average** ``` SELECT AVG(downloads) FROM fake_apps; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - AVG(downloads) = Check the average download --> *`clause - FROM = Indicate what table to check --> *`clause`* - table_name = table name - ; = End of the statement ## ## **Round** ``` SELECT ROUND(price, 0) FROM fake_apps; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - ROUND(price, 0) = round the price value with 0 precision value after the decimal - FROM = Indicate what table to check --> *`clause`* - table_name = table name - ; = End of the statement ## ## **Group By I** ``` SELECT year,    AVG(imdb_rating) FROM movies GROUP BY year ORDER BY year; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - year, AVG(imdb_rating) = columns - FROM = Indicate what table to check --> *`clause`* - movies = Table - GROUP BY year = Group elements by years - ; = End of the statement ## ## **Group By II** ``` SELECT category,    price,    AVG(downloads) FROM fake_apps GROUP BY category, price; ``` - SELECT = Indicate the action (Witch is select) --> *`clause`* - year, AVG(imdb_rating), ... = columns - FROM = Indicate what table to check --> *`clause`* - movies = Table - GROUP BY category, price = Group elements by category and price - ; = End of the statement