Specifically I am trying to grasp how SQL statements differ from normal C style programming, I can't seem to understand how to do stuff like "for every userid in this table that has another column of data equal to such and such, run this stored procedure" which in programming would be a for loop, how the heck do you do stuff like that?
Or like, for each row in tableA that has a contentID of 11, add a new row to tableB containing this data and the userID from the row of tableA found containing contentID of 11...
Anyone mind possibly writing a bit on how I should understand SQL statements compared to programming? I feel like I could wield it better if I understood how I was suppose to think about it...
SQL and C# are both programming languages used in computing. They are used in the development of webs, applications, and cloud storage to facilitate them to work more efficiently when it comes to data processing and management.
No it is not necessary you can learn any programming languages before learning C language. You can start learning with object oriented programming languages like java/C++.
Because of its narrow application domain, SQL is relatively easier to learn than most general-purpose programming languages.
SQL is one of the easiest languages to learn, and the concepts, syntax, queries, and data formats are not only easy to remember but have name-dependent functions too. That is, you would not be confused in any function, concepts of tables, and picking up the various necessary RDBMS tools makes it even more exciting.
They are approaching the world from different points of view. C is about performing actions. SQL is about storing data, and manipulating data. The only "actions" it is good at are pulling and changing data.
Think of all your data like a Venn diagram- SQL lets you "look" at any part of that diagram you want.
If you want to actually do something to that data, then in C, you might say "Go to every user and perform this action on them", as in
//if a customer is late, send them a reminder
for(int i=0;i<USER_COUNT-1;++i){
if(LATE_ON_PAYMENTS=CustomerType(Customers[i])){
SendReminder(Customers[i]);
} //if cust is late on their payments
} //for ea customer
In SQL, you would be able to ASK for the list of users, as in:
SELECT *
FROM CUSTOMERS
WHERE LATE_FLAG = 'Y';
Or you could change data regarding those customers, as in:
UPDATE CUSTOMERS
SET TRUST_LEVEL = TRUST_LEVEL - 1 --trust a little less when they are late
WHERE LATE_FLAG = 'Y';
Note that this UPDATE could affect any number of rows, but there is no loop... you are simply saying "look up these records, and change them in this way".
But if you wanted to send them a reminder, well that's just too bad... you've got to use C or a stored procedure to do that.
You really get the best of both worlds when you combine a traditional language with SQL. If you can replace the earlier example in C with this (disclaimer: I know this is bogus code, it's just an example):
//if a customer is late, send them a reminder
//get all the late customers
sqlCommand = 'SELECT CUSTOMER_ID FROM CUSTOMERS WHERE LATE_FLAG = ''Y''';
dataSet = GetDataSet(sqlCommand);
//now loop through the late customers i just retrieved
for(int i=0;i<dataSet.RecordCount - 1;++i){
SendReminder(dataSet[i].Field('CUSTOMER_ID'));
} //for ea customer
Now the code is more readable, and everyone is pointed at the same data source at runtime. You also avoid the potentially messy code in C that would have been involved in building your list of customers - now it is just a dataset.
Just as SQL sucks at doing imperative actions, C sucks at manipulating data sets. Used together, they can easily get data, manipulate it, and perform actions on it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With