title: Why doesn't SQL always accept expressions in place of integers?
body: <p>In an imperative programming language you are allowed to place expression everywhere where an integer is expected. Why in SQL this isn't so? Why doesn't SQL accept something like this:</p>
  
  <pre><code>  Create Table Entries (Title Varchar((Select Count(ID) From SomeOtherTable)))
  </code></pre>
  
  <p>When, for example, this works:</p>
  
  <pre><code>  Select * From Entries Where id = (Select Count(id) From SomeOtherTable)
  </code></pre>
  
  <p>Now, of course, these examples are silly. I don't really care if I can create tables based on a dynamic information. I want to understand why SQL is different in this regard from, say, C or C# or Delphi, etc. In these languages I know what will work based on intuitive rules. When I am writing a query, I am kind of unsure whether some construction will be accepted: sometimes it will be and sometimes it won't (I am still new to SQL, so maybe this is the main reason).</p>
  
  <p>I am using Interbase 7.5 if this has some relevance.</p>