SQL-Structured Query Language is a special-purpose programming language designed for managing data held in a relational database management system (RDBMS), or for stream processing in a relational data stream management system (RDSMS). NoSQL (“non-SQL” or “non-relational”) database provides a mechanism for storage and retrieval of data that is modelled by means other than the tabular relations used in relational databases.
The most important question that everyone seems to be asking, “is SQL a thing of the past, and are NoSQL solutions the way forward?”. SQL and NoSQL do the same thing i.e. store data using different approaches, which may help or hinder your project. NoSQL is not a replacement for SQL, it is just an alternative.
There is no clear distinction between SQL and NoSQL as some NoSQL features are being adopted by some SQL databases and vice versa.
SQL databases are table based databases consisting of n number of rows and columns, whereas NoSQL databases are document based, key-value pairs, graph, wide-column stores or columnar. In an SQL database, it’s impossible to add data until you define tables and field types, whereas, in a NoSQL database, data can be added anywhere, at any time without even specifying a document design as each document can have a completely different structure.
For the complex query intensive environment, SQL databases are better suited.
Examples of SQL are MySql, Oracle, Sqlite and examples of NoSQL database are MongoDB and CouchDB.
If your data needs are changing rapidly or growing fast maybe NoSQL will be more suitable for you. But if the data you have isn’t changing in structure and there is manageable growth, SQL technologies may fulfil your needs best.