200 likes | 234 Views
MySQL Subquery Source: Dev.MySql.com. Recall. Query (from the Layman’s Point of View) A question often required to be expressed in a formal way. Recall continued …. Query (from the Programmer’s Point of View) A statement which user gives in database.
E N D
Recall • Query (from the Layman’s Point of View) • A question often required to be expressed in a formal way.
Recall continued … • Query (from the Programmer’s Point of View) • A statement which user gives in database. • A piece of code (a query) that is sent to a database in order to get information back from the database. It is used as the way of retrieving the information from database.
Recall continued … - A database "query" is basically a "question" that you ask the database. The results of the query is the information that is returned by the database management system. Queries are usually constructed using SQL (structured query language) which resembles a high-level programming language.
Recall continued… • The term 'query' means to search, to question, or to find. When you query a database, your searching for information in the database. Different query languages exist for different type of databases. Read more: http://wiki.answers.com/Q/What_is_a_database_query#ixzz2dr2qCz00
a SELECT statement that is most often used as part of another SELECT statement, but could also be used with an INSERT, UPDATE, or DELETE and other statements. Subquery • A SELECT statement within another statement. • A SELECT statement that is most often used as a part of another SELECT statement, but could also be used with an INSERT, UPDATE, or DELETE and other statements.
Subqueries are used in order to achieve very complex searches and complex reports, as well as for various optimizations. • You can use a subquery in the FROM clause of a SELECT to allow you to have essentially any number of GROUP BY clauses to further and further refine your result.
Basic Rules • A subquery makes it possible to combine two or more queries into a single statement, and use the results of one query in the conditional clause of the other. • Subqueries are usually regular SELECT statements, and are separated from their parent query by parentheses.
Basic Rules continued … • A subquery must return a single column of results, or else MySQL will not know how to handle the result set. • You can nest subqueries to any depth, so long as the basic rules above are followed.
Subqueries are usually preceded by a conditional WHERE clause, which can contain any of the following comparison and logical operators:
Operator What It Means -------------------------------------- = values are equal <> values are unequal <= value on left is less than or equal to value on right >= value on left is greater than or equal to value on right < value on left is less than value on right
> value on left is greater than value on right BETWEEN value on left lies between values on right NOT logical NOT AND logical AND OR logical OR
The Main Advantages of Subqueries • They allow queries that are structured so that it is possible to isolate each part of a statement. • They provide alternative ways to perform operations that would otherwise require complex joins and unions.
Advantages … • Many people find subqueries more readable than complex joins or unions. Indeed, it was the innovation of subqueries that gave people the original idea of calling the early SQL “Structured Query Language.”
An example of a subquery: • SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2); • In this example, SELECT * FROM t1 ... is the outer query (or outer statement), and (SELECT column1 FROM t2) is the subquery. We say that the subquery is nested within the outer query, and in fact it is possible to nest subqueries within other subqueries, to a considerable depth. A subquery must always appear within parentheses.
A subquery can return a scalar (a single value), a single row, a single column, or a table (one or more rows of one or more columns). These are called scalar, column, row, and table subqueries. Subqueries that return a particular kind of result often can be used only in certain contexts, as described in the following sections.
There are few restrictions on the type of statements in which subqueries can be used. A subquery can contain many of the keywords or clauses that an ordinary SELECT can contain: DISTINCT, GROUP BY, ORDER BY, LIMIT, joins, index hints, UNION constructs, comments, functions, and so on.
A subquery's outer statement can be any one of: SELECT, INSERT, UPDATE, DELETE, SET, or DO. • In MySQL, you cannot modify a table and select from the same table in a subquery. This applies to statements such as DELETE, INSERT, REPLACE, UPDATE, and (because subqueries can be used in the SET clause) LOAD DATA INFILE.
An example statement that shows the major points about subquery syntax as specified by the SQL standard and supported in MySQL: • DELETE FROM t1 WHERE s11 > ANY (SELECT COUNT(*) /* no hint */ FROM t2 WHERE NOT EXISTS (SELECT * FROM t3 WHERE ROW(5*t2.s1,77)= (SELECT 50,11*s1 FROM t4 UNION SELECT 50,77 FROM (SELECT * FROM t5) AS t5)));