There are numerous differences between SQL and NoSQL databases. For a start SQL databases are table based while NoSQL are document based, key-value pairs, graph databases or wide-column stores.
What this means is that SQL databases are capable of representing data in the form of tables which consist of rows of data. NoSQL databases are a collection of the above mentioned categories and they do not have standard schema definitions that need to be followed.
The schema for SQL databases are predefined while NoSQL databases have dynamic schema so that they can deal with unstructured data.
This is important because of the predicted rise in unstructured data which is growing by 56% per year, compared to 12% a year for structured data. In 2013 there was an estimated 80 exabytes of unstructured data, with that number now standing at over 300 exabytes – this is one of the reasons why some believe that NoSQL databases will be the database of the future.
Another difference is that SQL databases are vertically scalable while NoSQL scale horizontally. SQL uses structure query language that defines and manipulates data whereas NoSQL queries are focused on the collection of documents.
SQL databases are typically a good fit for a complex query intensive environment, something that NoSQL doesn’t excel in.
That’s not to say they are bad but NoSQL is just better suited to different workloads for example it works better with hierarchical data storage but SQL databases aren’t well suited to this.