# Accessing Metadata

The dictionary or catalog stores information about the database itself. This is data about data or 'metadata'.

It holds:

* Description of database objects (tables, users, rules, views, indexes,..)
* Information about who is using what data (locks)
* Schemas and mapping
* The dictionary itself

For example, consider the following relations:

ACTOR(**AID**, FIRSTNAME, LASTNAME)

MOVIE(**MID**, MNAME, BUDGET, GROSS)

ACTED\_IN(**AID**, **MID**, STARRING, WAGE)

**Listing all the tables that exist in the 'test' schema:**

```
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'TEST'
```

**Listing all tables that have more than 3 columns:**

```
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'TEST'
GROUP BY TABLE_NAME
HAVING COUNT(*) > 3
```

**Listing the first name and last name of all actors whose last name is equal to the name of an attribute in MOVIE:**

```
SELECT FIRSTNAME, LASTNAME
FROM TEST.ACTOR, INFORMATION_SCHEMA.COLUMNS I
WHERE TABLE_SCHEMA = 'TEST'
AND I.TABLE_NAME = 'MOVIE'
AND LASTNAME = I.COLUMN_NAME
```
