# ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਨਾ: ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ |![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/05-RelationalData.png)| |:---:| | ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਨਾ: ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | ਸੰਭਾਵਨਾ ਹੈ ਕਿ ਤੁਸੀਂ ਪਹਿਲਾਂ ਜਾਣਕਾਰੀ ਸਟੋਰ ਕਰਨ ਲਈ ਸਪ੍ਰੈਡਸ਼ੀਟ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਹੈ। ਤੁਹਾਡੇ ਕੋਲ ਕਤਾਰਾਂ ਅਤੇ ਕਾਲਮਾਂ ਦਾ ਇੱਕ ਸੈੱਟ ਹੁੰਦਾ ਸੀ, ਜਿੱਥੇ ਕਤਾਰਾਂ ਵਿੱਚ ਜਾਣਕਾਰੀ (ਜਾਂ ਡਾਟਾ) ਹੁੰਦੀ ਸੀ, ਅਤੇ ਕਾਲਮ ਜਾਣਕਾਰੀ ਦਾ ਵਰਣਨ ਕਰਦੇ ਸਨ (ਕਈ ਵਾਰੀ ਮੈਟਾਡੇਟਾ ਕਿਹਾ ਜਾਂਦਾ ਹੈ)। ਇੱਕ ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ ਇਸ ਮੂਲ ਸਿਧਾਂਤ 'ਤੇ ਬਣਿਆ ਹੁੰਦਾ ਹੈ ਕਿ ਕਾਲਮ ਅਤੇ ਕਤਾਰਾਂ ਟੇਬਲਾਂ ਵਿੱਚ ਹੁੰਦੀਆਂ ਹਨ, ਜੋ ਤੁਹਾਨੂੰ ਜਾਣਕਾਰੀ ਨੂੰ ਕਈ ਟੇਬਲਾਂ ਵਿੱਚ ਵੰਡਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਸ ਨਾਲ ਤੁਸੀਂ ਵਧੇਰੇ ਜਟਿਲ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰ ਸਕਦੇ ਹੋ, ਨਕਲ ਤੋਂ ਬਚ ਸਕਦੇ ਹੋ, ਅਤੇ ਡਾਟਾ ਦੀ ਖੋਜ ਕਰਨ ਦੇ ਤਰੀਕੇ ਵਿੱਚ ਲਚਕੀਲਾਪਨ ਰੱਖ ਸਕਦੇ ਹੋ। ਆਓ ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ ਦੇ ਸਿਧਾਂਤਾਂ ਦੀ ਖੋਜ ਕਰੀਏ। ## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ds/quiz/8) ## ਸਭ ਕੁਝ ਟੇਬਲਾਂ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ ਇੱਕ ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ ਦੇ ਕੇਂਦਰ ਵਿੱਚ ਟੇਬਲਾਂ ਹੁੰਦੀਆਂ ਹਨ। ਸਪ੍ਰੈਡਸ਼ੀਟ ਵਾਂਗ, ਇੱਕ ਟੇਬਲ ਕਾਲਮਾਂ ਅਤੇ ਕਤਾਰਾਂ ਦਾ ਸੰਗ੍ਰਹਿ ਹੁੰਦਾ ਹੈ। ਕਤਾਰ ਵਿੱਚ ਉਹ ਡਾਟਾ ਜਾਂ ਜਾਣਕਾਰੀ ਹੁੰਦੀ ਹੈ ਜਿਸ ਨਾਲ ਅਸੀਂ ਕੰਮ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ ਕਿਸੇ ਸ਼ਹਿਰ ਦਾ ਨਾਮ ਜਾਂ ਵਰਖਾ ਦੀ ਮਾਤਰਾ। ਕਾਲਮ ਉਹ ਡਾਟਾ ਵਰਣਨ ਕਰਦੇ ਹਨ ਜੋ ਉਹ ਸਟੋਰ ਕਰਦੇ ਹਨ। ਆਓ ਸ਼ਹਿਰਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਸਟੋਰ ਕਰਨ ਲਈ ਇੱਕ ਟੇਬਲ ਬਣਾਉਣ ਨਾਲ ਆਪਣੀ ਖੋਜ ਸ਼ੁਰੂ ਕਰੀਏ। ਅਸੀਂ ਸ਼ਾਇਦ ਉਨ੍ਹਾਂ ਦਾ ਨਾਮ ਅਤੇ ਦੇਸ਼ ਨਾਲ ਸ਼ੁਰੂ ਕਰੀਏ। ਤੁਸੀਂ ਇਸਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਟੇਬਲ ਵਿੱਚ ਸਟੋਰ ਕਰ ਸਕਦੇ ਹੋ: | ਸ਼ਹਿਰ | ਦੇਸ਼ | | -------- | ------------- | | ਟੋਕੀਓ | ਜਪਾਨ | | ਐਟਲਾਂਟਾ | ਸੰਯੁਕਤ ਰਾਜ | | ਆਕਲੈਂਡ | ਨਿਊਜ਼ੀਲੈਂਡ | ਧਿਆਨ ਦਿਓ ਕਿ ਕਾਲਮਾਂ ਦੇ ਨਾਮ **ਸ਼ਹਿਰ**, **ਦੇਸ਼** ਅਤੇ **ਆਬਾਦੀ** ਡਾਟਾ ਦਾ ਵਰਣਨ ਕਰਦੇ ਹਨ ਜੋ ਸਟੋਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਅਤੇ ਹਰ ਕਤਾਰ ਵਿੱਚ ਇੱਕ ਸ਼ਹਿਰ ਬਾਰੇ ਜਾਣਕਾਰੀ ਹੁੰਦੀ ਹੈ। ## ਇੱਕ ਟੇਬਲ ਦੇ ਤਰੀਕੇ ਦੀਆਂ ਕਮਜ਼ੋਰੀਆਂ ਸੰਭਾਵਨਾ ਹੈ ਕਿ ਉਪਰੋਕਤ ਟੇਬਲ ਤੁਹਾਡੇ ਲਈ ਕਾਫੀ ਜਾਣੂ ਲੱਗਦਾ ਹੈ। ਆਓ ਆਪਣੀ ਵਧ ਰਹੀ ਡੇਟਾਬੇਸ ਵਿੱਚ ਕੁਝ ਹੋਰ ਡਾਟਾ ਸ਼ਾਮਲ ਕਰੀਏ - ਸਾਲਾਨਾ ਵਰਖਾ (ਮਿਲੀਮੀਟਰ ਵਿੱਚ)। ਅਸੀਂ 2018, 2019 ਅਤੇ 2020 ਸਾਲਾਂ 'ਤੇ ਧਿਆਨ ਦੇਵਾਂਗੇ। ਜੇ ਅਸੀਂ ਟੋਕੀਓ ਲਈ ਇਹ ਸ਼ਾਮਲ ਕਰੀਏ, ਤਾਂ ਇਹ ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ ਹੋ ਸਕਦਾ ਹੈ: | ਸ਼ਹਿਰ | ਦੇਸ਼ | ਸਾਲ | ਮਾਤਰਾ | | ------ | ------- | ---- | ------- | | ਟੋਕੀਓ | ਜਪਾਨ | 2020 | 1690 | | ਟੋਕੀਓ | ਜਪਾਨ | 2019 | 1874 | | ਟੋਕੀਓ | ਜਪਾਨ | 2018 | 1445 | ਤੁਸੀਂ ਸਾਡੇ ਟੇਬਲ ਬਾਰੇ ਕੀ ਧਿਆਨ ਦਿੰਦੇ ਹੋ? ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਅਸੀਂ ਸ਼ਹਿਰ ਦਾ ਨਾਮ ਅਤੇ ਦੇਸ਼ ਬਾਰ-ਬਾਰ ਨਕਲ ਕਰ ਰਹੇ ਹਾਂ। ਇਹ ਕਾਫੀ ਸਟੋਰੇਜ ਲੈ ਸਕਦਾ ਹੈ, ਅਤੇ ਬਹੁਤ ਜ਼ਰੂਰੀ ਨਹੀਂ ਹੈ ਕਿ ਕਈ ਨਕਲਾਂ ਹੋਣ। ਆਖਿਰਕਾਰ, ਟੋਕੀਓ ਦਾ ਸਿਰਫ ਇੱਕ ਹੀ ਨਾਮ ਹੈ ਜਿਸ ਵਿੱਚ ਅਸੀਂ ਦਿਲਚਸਪੀ ਰੱਖਦੇ ਹਾਂ। ਠੀਕ ਹੈ, ਆਓ ਕੁਝ ਹੋਰ ਕੋਸ਼ਿਸ਼ ਕਰੀਏ। ਹਰ ਸਾਲ ਲਈ ਨਵੇਂ ਕਾਲਮ ਸ਼ਾਮਲ ਕਰੀਏ: | ਸ਼ਹਿਰ | ਦੇਸ਼ | 2018 | 2019 | 2020 | | -------- | ------------- | ---- | ---- | ---- | | ਟੋਕੀਓ | ਜਪਾਨ | 1445 | 1874 | 1690 | | ਐਟਲਾਂਟਾ | ਸੰਯੁਕਤ ਰਾਜ | 1779 | 1111 | 1683 | | ਆਕਲੈਂਡ | ਨਿਊਜ਼ੀਲੈਂਡ | 1386 | 942 | 1176 | ਜਦੋਂ ਕਿ ਇਸ ਨਾਲ ਕਤਾਰ ਦੀ ਨਕਲ ਤੋਂ ਬਚਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਇਹ ਕੁਝ ਹੋਰ ਚੁਣੌਤੀਆਂ ਲਿਆਉਂਦਾ ਹੈ। ਹਰ ਵਾਰੀ ਨਵਾਂ ਸਾਲ ਆਉਣ 'ਤੇ ਸਾਨੂੰ ਆਪਣੀ ਟੇਬਲ ਦੀ ਬਣਤਰ ਬਦਲਣੀ ਪਵੇਗੀ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਜਿਵੇਂ ਜਿਵੇਂ ਸਾਡਾ ਡਾਟਾ ਵਧਦਾ ਹੈ, ਸਾਲਾਂ ਨੂੰ ਕਾਲਮ ਵਜੋਂ ਰੱਖਣਾ ਮੁੱਲ ਪ੍ਰਾਪਤ ਕਰਨ ਅਤੇ ਗਣਨਾ ਕਰਨ ਵਿੱਚ ਮੁਸ਼ਕਲ ਕਰ ਦੇਵੇਗਾ। ਇਸ ਲਈ ਸਾਨੂੰ ਕਈ ਟੇਬਲਾਂ ਅਤੇ ਸੰਬੰਧਾਂ ਦੀ ਲੋੜ ਹੈ। ਆਪਣਾ ਡਾਟਾ ਵੰਡ ਕੇ ਅਸੀਂ ਨਕਲ ਤੋਂ ਬਚ ਸਕਦੇ ਹਾਂ ਅਤੇ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਨ ਦੇ ਤਰੀਕੇ ਵਿੱਚ ਵਧੇਰੇ ਲਚਕੀਲਾਪਨ ਰੱਖ ਸਕਦੇ ਹਾਂ। ## ਸੰਬੰਧਾਂ ਦੇ ਸਿਧਾਂਤ ਆਓ ਆਪਣੇ ਡਾਟਾ ਵੱਲ ਵਾਪਸ ਜਾਈਏ ਅਤੇ ਫੈਸਲਾ ਕਰੀਏ ਕਿ ਅਸੀਂ ਚੀਜ਼ਾਂ ਨੂੰ ਕਿਵੇਂ ਵੰਡਣਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਅਸੀਂ ਜਾਣਦੇ ਹਾਂ ਕਿ ਅਸੀਂ ਆਪਣੇ ਸ਼ਹਿਰਾਂ ਲਈ ਨਾਮ ਅਤੇ ਦੇਸ਼ ਸਟੋਰ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਇਸ ਲਈ ਇਹ ਸ਼ਾਇਦ ਇੱਕ ਟੇਬਲ ਵਿੱਚ ਸਭ ਤੋਂ ਵਧੀਆ ਕੰਮ ਕਰੇਗਾ। | ਸ਼ਹਿਰ | ਦੇਸ਼ | | -------- | ------------- | | ਟੋਕੀਓ | ਜਪਾਨ | | ਐਟਲਾਂਟਾ | ਸੰਯੁਕਤ ਰਾਜ | | ਆਕਲੈਂਡ | ਨਿਊਜ਼ੀਲੈਂਡ | ਪਰ ਅਗਲਾ ਟੇਬਲ ਬਣਾਉਣ ਤੋਂ ਪਹਿਲਾਂ, ਸਾਨੂੰ ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਹੈ ਕਿ ਹਰ ਸ਼ਹਿਰ ਨੂੰ ਕਿਵੇਂ ਰੈਫਰੈਂਸ ਕਰਨਾ ਹੈ। ਸਾਨੂੰ ਕਿਸੇ ਕਿਸਮ ਦਾ ਪਹਚਾਣ ਪੱਤਰ, ID ਜਾਂ (ਟੈਕਨੀਕੀ ਡੇਟਾਬੇਸ ਸ਼ਬਦਾਵਲੀ ਵਿੱਚ) ਪ੍ਰਾਇਮਰੀ ਕੀ ਦੀ ਲੋੜ ਹੈ। ਪ੍ਰਾਇਮਰੀ ਕੀ ਇੱਕ ਐਸਾ ਮੁੱਲ ਹੁੰਦਾ ਹੈ ਜੋ ਟੇਬਲ ਵਿੱਚ ਇੱਕ ਖਾਸ ਕਤਾਰ ਦੀ ਪਹਚਾਣ ਕਰਦਾ ਹੈ। ਜਦੋਂ ਕਿ ਇਹ ਕਿਸੇ ਮੁੱਲ 'ਤੇ ਆਧਾਰਿਤ ਹੋ ਸਕਦਾ ਹੈ (ਉਦਾਹਰਨ ਵਜੋਂ ਅਸੀਂ ਸ਼ਹਿਰ ਦਾ ਨਾਮ ਵਰਤ ਸਕਦੇ ਹਾਂ), ਇਹ ਲਗਭਗ ਹਮੇਸ਼ਾ ਇੱਕ ਨੰਬਰ ਜਾਂ ਹੋਰ ਪਹਚਾਣ ਪੱਤਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਅਸੀਂ ਨਹੀਂ ਚਾਹੁੰਦੇ ਕਿ id ਕਦੇ ਬਦਲੇ ਕਿਉਂਕਿ ਇਸ ਨਾਲ ਸੰਬੰਧ ਟੁੱਟ ਜਾਵੇਗਾ। ਜ਼ਿਆਦਾਤਰ ਮਾਮਲਿਆਂ ਵਿੱਚ ਪ੍ਰਾਇਮਰੀ ਕੀ ਜਾਂ id ਆਟੋ-ਜਨਰੇਟ ਕੀਤੇ ਨੰਬਰ ਹੁੰਦੇ ਹਨ। > ✅ ਪ੍ਰਾਇਮਰੀ ਕੀ ਨੂੰ ਅਕਸਰ PK ਨਾਲ ਸੰਖੇਪ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ### cities | city_id | ਸ਼ਹਿਰ | ਦੇਸ਼ | | ------- | -------- | ------------- | | 1 | ਟੋਕੀਓ | ਜਪਾਨ | | 2 | ਐਟਲਾਂਟਾ | ਸੰਯੁਕਤ ਰਾਜ | | 3 | ਆਕਲੈਂਡ | ਨਿਊਜ਼ੀਲੈਂਡ | > ✅ ਤੁਸੀਂ ਦੇਖੋਗੇ ਕਿ ਅਸੀਂ ਇਸ ਪਾਠ ਦੌਰਾਨ "id" ਅਤੇ "primary key" ਸ਼ਬਦਾਂ ਨੂੰ ਬਦਲ-ਬਦਲ ਕੇ ਵਰਤਦੇ ਹਾਂ। ਇੱਥੇ ਦਿੱਤੇ ਸਿਧਾਂਤ DataFrames 'ਤੇ ਵੀ ਲਾਗੂ ਹੁੰਦੇ ਹਨ, ਜਿਸਨੂੰ ਤੁਸੀਂ ਬਾਅਦ ਵਿੱਚ ਖੋਜੋਗੇ। DataFrames "primary key" ਸ਼ਬਦਾਵਲੀ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰਦੇ, ਪਰ ਤੁਸੀਂ ਦੇਖੋਗੇ ਕਿ ਉਹ ਇਸੇ ਤਰ੍ਹਾਂ ਵਰਤਦੇ ਹਨ। ਸਾਡੇ cities ਟੇਬਲ ਬਣ ਜਾਣ ਤੋਂ ਬਾਅਦ, ਆਓ rainfall ਸਟੋਰ ਕਰੀਏ। ਸ਼ਹਿਰ ਬਾਰੇ ਪੂਰੀ ਜਾਣਕਾਰੀ ਨਕਲ ਕਰਨ ਦੀ ਬਜਾਏ, ਅਸੀਂ id ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ। ਸਾਨੂੰ ਇਹ ਵੀ ਯਕੀਨੀ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਨਵਾਂ ਬਣਾਇਆ ਟੇਬਲ ਵਿੱਚ ਵੀ ਇੱਕ *id* ਕਾਲਮ ਹੋਵੇ, ਕਿਉਂਕਿ ਸਾਰੇ ਟੇਬਲਾਂ ਵਿੱਚ id ਜਾਂ ਪ੍ਰਾਇਮਰੀ ਕੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ### rainfall | rainfall_id | city_id | ਸਾਲ | ਮਾਤਰਾ | | ----------- | ------- | ---- | ------- | | 1 | 1 | 2018 | 1445 | | 2 | 1 | 2019 | 1874 | | 3 | 1 | 2020 | 1690 | | 4 | 2 | 2018 | 1779 | | 5 | 2 | 2019 | 1111 | | 6 | 2 | 2020 | 1683 | | 7 | 3 | 2018 | 1386 | | 8 | 3 | 2019 | 942 | | 9 | 3 | 2020 | 1176 | ਨਵਾਂ ਬਣਾਇਆ **rainfall** ਟੇਬਲ ਦੇ ਅੰਦਰ **city_id** ਕਾਲਮ ਨੂੰ ਧਿਆਨ ਨਾਲ ਦੇਖੋ। ਇਸ ਕਾਲਮ ਵਿੱਚ ਉਹ ਮੁੱਲ ਹਨ ਜੋ **cities** ਟੇਬਲ ਵਿੱਚ IDs ਨੂੰ ਰੈਫਰੈਂਸ ਕਰਦੇ ਹਨ। ਟੈਕਨੀਕੀ ਰਿਲੇਸ਼ਨਲ ਡਾਟਾ ਸ਼ਬਦਾਵਲੀ ਵਿੱਚ, ਇਸਨੂੰ **foreign key** ਕਿਹਾ ਜਾਂਦਾ ਹੈ; ਇਹ ਕਿਸੇ ਹੋਰ ਟੇਬਲ ਤੋਂ ਪ੍ਰਾਇਮਰੀ ਕੀ ਹੁੰਦਾ ਹੈ। ਤੁਸੀਂ ਇਸਨੂੰ ਸਿਰਫ ਇੱਕ ਰੈਫਰੈਂਸ ਜਾਂ ਪੌਇੰਟਰ ਵਜੋਂ ਸੋਚ ਸਕਦੇ ਹੋ। **city_id** 1 ਟੋਕੀਓ ਨੂੰ ਰੈਫਰੈਂਸ ਕਰਦਾ ਹੈ। > [!NOTE] > ਫੌਰਨ ਕੀ ਨੂੰ ਅਕਸਰ FK ਨਾਲ ਸੰਖੇਪ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ## ਡਾਟਾ ਪ੍ਰਾਪਤ ਕਰਨਾ ਸਾਡੇ ਡਾਟਾ ਨੂੰ ਦੋ ਟੇਬਲਾਂ ਵਿੱਚ ਵੰਡਣ ਤੋਂ ਬਾਅਦ, ਤੁਸੀਂ ਸੋਚ ਰਹੇ ਹੋਵੋਗੇ ਕਿ ਅਸੀਂ ਇਸਨੂੰ ਕਿਵੇਂ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਾਂ। ਜੇ ਅਸੀਂ MySQL, SQL Server ਜਾਂ Oracle ਵਰਗਾ ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ ਵਰਤ ਰਹੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਇੱਕ ਭਾਸ਼ਾ ਵਰਤ ਸਕਦੇ ਹਾਂ ਜਿਸਨੂੰ Structured Query Language ਜਾਂ SQL ਕਹਿੰਦੇ ਹਨ। SQL (ਕਈ ਵਾਰੀ sequel ਉਚਾਰਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ) ਇੱਕ ਮਿਆਰੀ ਭਾਸ਼ਾ ਹੈ ਜੋ ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ ਵਿੱਚ ਡਾਟਾ ਪ੍ਰਾਪਤ ਕਰਨ ਅਤੇ ਸੋਧਣ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। ਡਾਟਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਤੁਸੀਂ `SELECT` ਕਮਾਂਡ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ। ਇਸਦਾ ਮੂਲ ਹੈ ਕਿ ਤੁਸੀਂ ਉਹ ਕਾਲਮ ਚੁਣਦੇ ਹੋ ਜੋ ਤੁਸੀਂ ਵੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ **FROM** ਉਸ ਟੇਬਲ ਤੋਂ ਜਿੱਥੇ ਉਹ ਹਨ। ਜੇ ਤੁਸੀਂ ਸਿਰਫ ਸ਼ਹਿਰਾਂ ਦੇ ਨਾਮ ਦਿਖਾਉਣੇ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤਾ ਕਮਾਂਡ ਵਰਤ ਸਕਦੇ ਹੋ: ```sql SELECT city FROM cities; -- Output: -- Tokyo -- Atlanta -- Auckland ``` `SELECT` ਉਹ ਜਗ੍ਹਾ ਹੈ ਜਿੱਥੇ ਤੁਸੀਂ ਕਾਲਮਾਂ ਦੀ ਸੂਚੀ ਦਿੰਦੇ ਹੋ, ਅਤੇ `FROM` ਉਹ ਜਗ੍ਹਾ ਹੈ ਜਿੱਥੇ ਤੁਸੀਂ ਟੇਬਲਾਂ ਦੀ ਸੂਚੀ ਦਿੰਦੇ ਹੋ। > [!NOTE] > SQL ਸਿੰਟੈਕਸ ਕੇਸ-ਅਸੰਵੇਦਨਸ਼ੀਲ ਹੁੰਦੀ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ `select` ਅਤੇ `SELECT` ਇੱਕੋ ਜਿਹਾ ਹਨ। ਪਰ, ਤੁਸੀਂ ਜਿਸ ਕਿਸਮ ਦਾ ਡੇਟਾਬੇਸ ਵਰਤ ਰਹੇ ਹੋ ਉਸ ਦੇ ਅਨੁਸਾਰ ਕਾਲਮ ਅਤੇ ਟੇਬਲ ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਹੋ ਸਕਦੇ ਹਨ। ਇਸ ਲਈ, ਇਹ ਇੱਕ ਵਧੀਆ ਅਭਿਆਸ ਹੈ ਕਿ ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਵਿੱਚ ਹਰ ਚੀਜ਼ ਨੂੰ ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਮੰਨਿਆ ਜਾਵੇ। SQL ਕਵੈਰੀਆਂ ਲਿਖਦੇ ਸਮੇਂ ਆਮ ਰਿਵਾਜ ਹੈ ਕਿ ਕੀਵਰਡਸ ਨੂੰ ਸਾਰੇ ਅੱਖਰ ਵੱਡੇ ਅੱਖਰਾਂ ਵਿੱਚ ਲਿਖਿਆ ਜਾਵੇ। ਉਪਰੋਕਤ ਕਵੈਰੀ ਸਾਰੇ ਸ਼ਹਿਰ ਦਿਖਾਏਗੀ। ਆਓ ਸੋਚੀਏ ਕਿ ਅਸੀਂ ਸਿਰਫ ਨਿਊਜ਼ੀਲੈਂਡ ਦੇ ਸ਼ਹਿਰ ਦਿਖਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਸਾਨੂੰ ਕਿਸੇ ਕਿਸਮ ਦਾ ਫਿਲਟਰ ਲਗਾਉਣਾ ਪਵੇਗਾ। ਇਸ ਲਈ SQL ਵਿੱਚ `WHERE` ਕੀਵਰਡ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ "ਜਿੱਥੇ ਕੁਝ ਸੱਚ ਹੈ"। ```sql SELECT city FROM cities WHERE country = 'New Zealand'; -- Output: -- Auckland ``` ## ਡਾਟਾ ਜੋੜਨਾ ਹੁਣ ਤੱਕ ਅਸੀਂ ਸਿਰਫ ਇੱਕ ਟੇਬਲ ਤੋਂ ਡਾਟਾ ਪ੍ਰਾਪਤ ਕੀਤਾ ਹੈ। ਹੁਣ ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ **cities** ਅਤੇ **rainfall** ਦੋਹਾਂ ਤੋਂ ਡਾਟਾ ਇਕੱਠਾ ਕਰੀਏ। ਇਹ *ਜੋੜਨ* (joining) ਰਾਹੀਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਤੁਸੀਂ ਅਸਲ ਵਿੱਚ ਦੋ ਟੇਬਲਾਂ ਦੇ ਵਿਚਕਾਰ ਇੱਕ ਜੋੜ ਬਣਾਉਂਦੇ ਹੋ, ਅਤੇ ਹਰ ਟੇਬਲ ਦੇ ਇੱਕ ਕਾਲਮ ਦੇ ਮੁੱਲਾਂ ਨੂੰ ਮਿਲਾਉਂਦੇ ਹੋ। ਸਾਡੇ ਉਦਾਹਰਨ ਵਿੱਚ, ਅਸੀਂ **rainfall** ਵਿੱਚ **city_id** ਕਾਲਮ ਨੂੰ **cities** ਵਿੱਚ **city_id** ਕਾਲਮ ਨਾਲ ਮਿਲਾਵਾਂਗੇ। ਇਸ ਨਾਲ rainfall ਦਾ ਮੁੱਲ ਉਸਦੇ ਸੰਬੰਧਿਤ ਸ਼ਹਿਰ ਨਾਲ ਜੁੜ ਜਾਵੇਗਾ। ਜੋੜ ਦੀ ਕਿਸਮ ਜੋ ਅਸੀਂ ਕਰਾਂਗੇ, ਉਸਨੂੰ *inner* join ਕਹਿੰਦੇ ਹਨ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਜੇ ਕੋਈ ਕਤਾਰ ਦੂਜੇ ਟੇਬਲ ਵਿੱਚ ਕਿਸੇ ਵੀ ਚੀਜ਼ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੀ, ਤਾਂ ਉਹ ਦਿਖਾਈ ਨਹੀਂ ਦੇਵੇਗੀ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ ਹਰ ਸ਼ਹਿਰ ਦਾ rainfall ਹੈ, ਇਸ ਲਈ ਸਾਰਾ ਡਾਟਾ ਦਿਖਾਇਆ ਜਾਵੇਗਾ। ਆਓ ਸਾਰੇ ਸ਼ਹਿਰਾਂ ਲਈ 2019 ਦਾ rainfall ਪ੍ਰਾਪਤ ਕਰੀਏ। ਅਸੀਂ ਇਹ ਕਦਮ-ਦਰ-ਕਦਮ ਕਰਾਂਗੇ। ਪਹਿਲਾ ਕਦਮ ਹੈ ਡਾਟਾ ਨੂੰ ਜੋੜਨਾ, ਜਿਸ ਲਈ ਅਸੀਂ ਜੋੜ ਬਣਾਉਣ ਵਾਲੇ ਕਾਲਮ - **city_id** ਨੂੰ ਦਰਸਾਵਾਂਗੇ। ```sql SELECT cities.city rainfall.amount FROM cities INNER JOIN rainfall ON cities.city_id = rainfall.city_id ``` ਅਸੀਂ ਉਹ ਦੋ ਕਾਲਮ ਹਾਈਲਾਈਟ ਕੀਤੇ ਹਨ ਜੋ ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ, ਅਤੇ ਇਹ ਵੀ ਕਿ ਅਸੀਂ ਟੇਬਲਾਂ ਨੂੰ **city_id** ਨਾਲ ਜੋੜਨਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਹੁਣ ਅਸੀਂ ਸਿਰਫ ਸਾਲ 2019 ਲਈ ਫਿਲਟਰ ਲਗਾਉਣ ਲਈ `WHERE` ਬਿਆਨ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹਾਂ। ```sql SELECT cities.city rainfall.amount FROM cities INNER JOIN rainfall ON cities.city_id = rainfall.city_id WHERE rainfall.year = 2019 -- Output -- city | amount -- -------- | ------ -- Tokyo | 1874 -- Atlanta | 1111 -- Auckland | 942 ``` ## ਸਾਰ ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ ਕਈ ਟੇਬਲਾਂ ਵਿੱਚ ਜਾਣਕਾਰੀ ਵੰਡਣ 'ਤੇ ਕੇਂਦਰਿਤ ਹੁੰਦੇ ਹਨ, ਜੋ ਫਿਰ ਪ੍ਰਦਰਸ਼ਨ ਅਤੇ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਵਾਪਸ ਇਕੱਠੇ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਇਹ ਗਣਨਾਵਾਂ ਕਰਨ ਅਤੇ ਡਾਟਾ ਨੂੰ ਹੋਰ ਤਰੀਕਿਆਂ ਨਾਲ ਸੰਭਾਲਣ ਲਈ ਉੱਚ ਪੱਧਰ ਦੀ ਲਚਕੀਲਾਪਨ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਤੁਸੀਂ ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ ਦੇ ਮੁੱਖ ਸਿਧਾਂਤ ਵੇਖੇ ਹਨ, ਅਤੇ ਦੋ ਟੇਬਲਾਂ ਵਿਚਕਾਰ ਜੋੜ ਕਿਵੇਂ ਕਰਨਾ ਹੈ। ## 🚀 ਚੈਲੈਂਜ ਇੰਟਰਨੈੱਟ 'ਤੇ ਕਈ ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ ਉਪਲਬਧ ਹਨ। ਤੁਸੀਂ ਉਪਰ ਦਿੱਤੀਆਂ ਸਿੱਖਿਆਵਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡਾਟਾ ਦੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹੋ। ## ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼ ## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ds/quiz/9) ## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ-ਅਧਿਐਨ ਤੁਹਾਡੇ ਲਈ SQL ਅਤੇ ਰਿਲੇਸ਼ਨਲ ਡੇਟਾਬੇਸ ਸਿਧਾਂਤਾਂ ਦੀ ਖੋਜ ਜਾਰੀ ਰੱਖਣ ਲਈ [Microsoft Learn](https://docs.microsoft.com/learn?WT.mc_id=academic-77958-bethanycheum) 'ਤੇ ਕਈ ਸਰੋਤ ਉਪਲਬਧ ਹਨ - [ਰਿਲੇਸ਼ਨਲ ਡਾਟਾ ਦੇ ਸਿਧਾਂਤਾਂ ਦਾ ਵਰਣਨ ਕਰੋ](https://docs.microsoft.com//learn/modules/describe-concepts-of-relational-data?WT.mc_id=academic-77958-bethanycheum) - [Transact-SQL ਨਾਲ ਕਵੈਰੀ ਕਰਨ ਦੀ ਸ਼ੁਰੂਆਤ ਕਰੋ](https://docs.microsoft.com//learn/paths/get-started-querying-with-transact-sql?WT.mc_id=academic-77958-bethanycheum) (Transact-SQL SQL ਦਾ ਇੱਕ ਸੰਸਕਰਣ ਹੈ) - [Microsoft Learn 'ਤੇ SQL ਸਮੱਗਰੀ](https://docs.microsoft.com/learn/browse/?products=azure-sql-database%2Csql-server&expanded=azure&WT.mc_id=academic-77958-bethanycheum) ## ਅਸਾਈਨਮੈਂਟ [ਹਵਾਈ ਅੱਡੇ ਦਾ ਡਾਟਾ ਦਿਖਾਉਣਾ](assignment.md) --- **ਅਸਵੀਕਾਰੋਪੱਤਰ**: ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਮਰਥਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਉਤਪੰਨ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।