This can help you generate huge no of rows for your dummy data. For example. insert into test select a.* from test1 a, (select * from dual connect by level <=100000) b; or you can do something like this. Example 2 : You want to print square and cube of numbers from 1 to 10. Let's apply this idea on one example. Given the proposition (p \leftrightarrow (q \wedge r)) \oplus s (p ↔ (q∧ r))⊕s, we have to draw its truth table. First we realise that it would have 16 (= 2^4) 16(= 24) rows. This means that we would start with 8 \bold T T 's, and then alternate with as many \bold F F 's. Pass the rows from the tables at steps 7, 8, and 9 up to the UNION-ALL in step 6. This step combines the rows into one dataset. Work back up the tree to the HASH JOIN in step 3. Join the rows from steps 4 and 6, passing the surviving rows up to the HASH GROUP BY in step 2. Return the grouped rows to the SORT ORDER BY in step 1. The objective of Connect 4 is for the player to get four checkers in their color in a row. Whoever does it first is the winner. There are three ways to get four checkers in a row: horizontally, vertically, and diagonally. Bulk data processing in PL/SQL. The bulk processing features of PL/SQL are designed specifically to reduce the number of context switches required to communicate from the PL/SQL engine to the SQL engine. Use the BULK COLLECT clause to fetch multiple rows into one or more collections with a single context switch. It just didn't feel as fun as the connect four game as I like using the pieces. If you would like a modern version of the classic Connect Four game that you can play at home and online and you PDOStatement::rowCount() returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding PDOStatement object. For statements that produce result sets, such as SELECT, the behavior is undefined and can be different for each driver.Some databases may return the number of rows produced by that statement (e.g. MySQL in buffered mode), but this int executeUpdate(String sql): executes an INSERT, UPDATE or DELETE statement and returns an update account indicating number of rows affected (e.g. 1 row inserted, or 2 rows updated, or 0 rows affected). ResultSet executeQuery(String sql): executes a SELECT statement and returns a ResultSet object which contains results returned by the query. Auto Increment will always be +1 * (table count) rows off, but even with 4,000 tables and 3 million rows, that's 99.9% accurate. Much better than the estimated rows. The beauty of this is that the row counts returned in performance_schema are erased for you, as well, because greatest does not work on nulls. 3. You can use INNER JOIN to link the two tables together. More info on JOINs. SELECT * FROM People P INNER JOIN Properties Pr ON Pr.Name = P.Name WHERE P.Name = 'Joe' -- or a specific age, etc. However, it's often a lot faster to add a unique primary key to tables like these, and to create an index to increase speed. 6q7QM.