I do not recommend you to use a string column as your primary key.
Why : performance will be better if you keep an int primary key (SID). You can still have a column for your computed value, that can be set unique accross the table => you will keep the desired functionnality. But you will have much more efficient searches and joins on this table with an int primary key.
And to answer to your question, here is the version for SQL Compact:
create table Student
(
SID int PRIMARY KEY IDENTITY(1,1),
STID nvarchar(14)) UNIQUE NOT NULL,
Name nvarchar(20) NOT NULL,
City nvarchar(30) NOT NULL,
Phone varchar(10) NOT NULL
);
But, as it has been told to you, with SQL Server Compact you will have to handle the creation of the STID value in your code, as the database engine cannot handle that for you. Something like:
Student.STID = string.Format("SID-{0}", student.SID);
Hope this helps.