Joining sys.columns and sys.tables on database name

Randy Minder's answer is the most correct one. But in case if you want to continue with sys.columns and sys.tables join them on object_id.

select   tab.name, col.name
from    sys.columns col
inner join sys.tables tab
    on col.object_id = tab.object_id

You can use this to get the table names from sys.columns table it self.

select object_name(object_id),name 
from sys.columns

You generally do not want to query the sys.columns or sys.tables (or any system tables) directly. You should be using the INFORMATION_SCHEMA views. These views are the ANSI standard way of querying system tables that could change from release to release. The INFORMATION_SCHEMA views will not change, at least in a breaking way.

SELECT COLUMN_NAME,* 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = <TableName> AND TABLE_SCHEMA= <SchemaName>

Of course, the WHERE clause is optional here and could be omitted to see all columns in all tables etc.