= SQL = Stuctered Query Language is a language that describes a method of fetching and describing the relationship between different types of data == Filtering data == To filter data we by some specifiers we use the `WHERE` clause. The where clause can filter based on the default comparison operators. It can also do string comparisons. This system also works with dates, where all dates are in format `YYYY-MM-DD`. === IN === To see if an attribute is in a set we can use the `IN` keyword in conjunction with a `WHERE` statement. For example, `SELECT * FROM holidays WHERE Country IN ('spain', 'portugaul', 'USA');` === NOT === The `NOT` keyword can be placed before a conditional to specify that we want everything that does NOT mean that condition. === LIKE === `LIKE` lets us filter on patterns. We can use the character `%` to specify a wildcard, for any number of characters. We can use the character `_` to give an exact number of wildcard characters we are looking for. For example, `SELECT * FROM Bands WHERE BandName LIKE '%light%';` will return all bands with the string 'light' in their name. === DISTINCT === `DISTINCT` filters results by only returning unique values in a column == Views == A view can be created with the following command {{{ CREATE VIEW [view_name] AS SELECT column1, column2, ... FROM table WHERE condition; }}} For example, this view returns all products witha price higher than the average price of the table {{{ CREATE VIEW [Products above average price] AS SELECT Name, Price FROM Products WHERE Price > (SELECT AVG(Price) FROM Products) SELECT * FROM [Prodcuts above average price] }}} Views *can* be inserted into, you simply must specify the columns being inserted into. == Acess control commands == Two commands for managing access rights * grant * used to grant one or more access rights or can be used to assign a user to a role * revoke * revokes the acess rights Typical access rights include * select * insert update * delete * references == Also see == [[databases]] [[index]]