Building on what TungDo said, the TESTCYCL table holds records for Test Instances. A Test Instance is the what you see in each row of the Execution Grid tab when looking at a Test Set in the Test Lab module.
A Test Instance links back to a Test Configuration, which links to a Test Case in the Test Plan module. A Test Case can have multiple Test Configurations. For instance you may want to execute a Test Case on both Windows 7 and on Windows 8.1. If the steps to execute the case are the same, you can create one Test Case with two Test Configurations; one for Win 7 and one for Win 8.1. Then in a Test Set, you add each Test Configuration that you want to execute as a Test Instance. (Note also that a Test Configuration can exist in more than one Test Set, so there is not necessarily a one-to-one relationship between Test Case/Test Configuration/Test Instance.)
A Test Instance can in the Execution grid will show you the most recent Run information; the date of the run, the status of the run (Pass, Fail, etc.), who executed the run.
A Test Instance can be run multiple times. Each run of a Test Instance creates a Run record in the RUN table. Each Run has its own Status.
So, regarding your second question
2. If I have to find how many times each test case was executed, which of the below queries should I use? SELECT DISTINCT TC_TEST_ID, COUNT(TC_TEST_ID) FROM TESTCYCL GROUP BY TC_TEST_ID SELECT RN_TEST_ID, COUNT(RN_RUN_ID) FROM RUN GROUP BY RN_TEST_ID
To find out the total number of times each test case was executed, you need to use the second query and count the number of Runs. The first query would tell you how many Test Instances exist for each Test Case.
Regarding your first question
1. If I have to get the number of test cases for each execution status, which of the below queries should I use?
Can you clarify what measurement you are trying to get and why? Is this query aimed and getting results for the number of Test Cases that have Passed vs. Failed vs. other test statuses? Do you want only the most recent result, or information for every execution of each test? If you have a single test in more than one test set, do you want the information based on the Test Instances, or the original Test Cases in the Test Plan?