MSSQL Server Data Type Differences for Strings
===

I wonder the difference between different data types in MSSQL server to store strings. For example ntext, nvarchar(X), varchar, nvarchar(max) etc. What could be the advices in terms of flexibility, resource usage and performance?