মাইএসকিউএল ইনসার্ট ইন টেবিল ভ্যালু .. বনাম ইনসার্ট ইন টেবিল সেট


252

INSERT INTO table VALUES ..এবং মধ্যে প্রধান পার্থক্য কি INSERT INTO table SET?

উদাহরণ:

INSERT INTO table (a, b, c) VALUES (1,2,3)

INSERT INTO table SET a=1, b=2, c=3

আর এই দুজনের পারফরম্যান্সের কী হবে?


12
কোড কমপ্লিট এবং ম্যাককনেলের পড়ার যোগ্যতার উপর জোর দিয়ে পড়া পড়ার পরে, এটি দুর্ভাগ্যজনক বলে মনে হচ্ছে এটি INSERT INTO table SETস্ট্যান্ডার্ড নয়। এটা অনেক পরিষ্কার মনে হচ্ছে। আমার ধারণা INSERT INTO table ([column name, column name b]) VALUES (['value a', 'value b']), পোস্টগ্রিসে বন্দরে রাখলে সমস্যা থেকে নিজেকে বাঁচাতে হলেও আমাকে সিনট্যাক্সটি ব্যবহার করতে হবে ।
cluelesscoder

উত্তর:


195

আমি যতদূর বলতে পারি উভয় বাক্য গঠন সমান। প্রথমটি এসকিউএল স্ট্যান্ডার্ড, দ্বিতীয়টি মাইএসকিউএল এর এক্সটেনশন।

সুতরাং তাদের সঠিক সমতুল্য পারফরম্যান্স অনুযায়ী হওয়া উচিত।

http://dev.mysql.com/doc/refman/5.6/en/insert.html বলেছেন:

INSERT একটি বিদ্যমান সারণীতে নতুন সারি সন্নিবেশ করিয়েছে। INSERT ... VALUES এবং INSERT ... বিবরণীর সেট ফর্মগুলি সুনির্দিষ্টভাবে নির্দিষ্ট মানগুলির উপর ভিত্তি করে সারি সন্নিবেশ করান। INSERT ... অন্য সারণী বা টেবিল থেকে নির্বাচিত ফর্ম সন্নিবেশ সারি নির্বাচন করুন।


4
আপনি কীভাবে একাধিক মান ব্যবহার করছেন INSERT INTO table SET? এটা কি সম্ভব?
পিক্সেলফ্রিয়াক

2
আপনি কি বোঝাতে চেয়েছেন? ওপির উদাহরণটি SET a = 1, b = 2, c = 3 বলেছে যা আমার বোঝার একাধিক মান।
ভিঙ্কো ভার্সালোভিক

9
আমি বলতে চাইছি, একাধিক সারি অন্তর্ভুক্ত করুন। পছন্দ: সারণির মধ্যে সারণি (ক, খ, গ) ভ্যালু (1,2,3), (4,5,6), (7,8,9);
পিক্সেলফ্রাইক

5
VALUES সিনট্যাক্স ব্যবহার করা কেবল INSERT স্টেটমেন্টগুলি একাধিক সারি সন্নিবেশ করতে পারে।
ভিঙ্কো ভার্সালোভিক

8
@ ভিঙ্কো ভার্সালোভিচ, সত্য নয়, সন্নিবেশ নির্বাচনগুলি একাধিক সারি নির্বাচন করা হলে একাধিক
সারিও

15

আমি মনে করি এক্সটেনশনটি সন্নিবেশ এবং আপডেটের জন্য অনুরূপ সিনট্যাক্সের অনুমতি দেওয়ার জন্য is ওরাকলে, অনুরূপ সিনট্যাকটিকাল ট্রিকটি হ'ল:

UPDATE table SET (col1, col2) = (SELECT val1, val2 FROM dual)

5
@ পেসারিয়ার যেমন? আমি দেখতে পেলাম একমাত্র সমস্যা হ'ল একটি বহনযোগ্যতা (যা অনেক প্রসঙ্গে সত্যই গুরুত্বপূর্ণ নয়); আমি কিছু অনুপস্থিত করছি?
মার্ক আমেরিকা

1
@ মার্ক অ্যামেরি, হ্যাঁ আপনি যখন এটি দেখেন তখন সত্যিকারের কোনও লাভ নেই। অসুবিধাগুলি অপ্রয়োজনীয় সময় নষ্ট , এই থ্রেডের পুরো অস্তিত্বই আমার বক্তব্য প্রমাণ করে।
পেসিয়ার

8
@ পেসারিয়্যার আমি নিশ্চিত নই যে আমি আপনার বক্তব্যটি দেখতে পাচ্ছি? কোন সময় নষ্ট? একটি সুবিধা রয়েছে, যা ইতিমধ্যে চিহ্নিত করা হয়েছে: একবার আপনার INSERT বিবৃতি তৈরি করতে একবার আপনার কী / মান জোড়ার একটি অ্যারে লুপের প্রয়োজন হবে, তার চেয়ে দ্বিগুণ পরিবর্তনের জন্য আপনাকে VALUES বাক্য গঠনটি ব্যবহার করতে হবে, যা সংক্ষিপ্ত, পরিষ্কার হয়ে যায় which এবং দ্রুত লেখার কোড write
মার্ক আমেরিকা

@MarkAmery কিন্তু এই ওরাকল কৌতুক নেই আছে যে উপকার। আপনি প্রথমে সমস্ত কলামের নাম দিন, তারপরে সমস্ত মান।
hobbs

12
@ পেসারিয়ার এটি একটি ন্যায্য পয়েন্ট এবং ওজন করার মতো একটি বাণিজ্য আছে। বৈশিষ্ট্য বিরুদ্ধে আপনি বহনযোগ্যতা সমস্যা ও সময় মধ্যে পার্থক্য নিয়ে গবেষণা বরবাদ আছে INSERT ... SET ...এবং INSERT ... VALUES ...। বৈশিষ্ট্যটির জন্য আপনার সংক্ষিপ্ত, দ্রুত-লেখার কোড, পাঠযোগ্যতা বৃদ্ধি এবং আপনার VALUESধারাটি লেখার সময় আপনার কলামের ক্রমটি মিশ্রিত করার কারণে টাইপস নির্মূলকরণ রয়েছে । আমার অন্ত্রে আমাকে বলে যে ভাল নেট ভাল খারাপ তুলনায় বেশি, কিন্তু আপনার রায় পৃথক হতে পারে।
মার্ক আমেরিকা

4

যেহেতু INSERT INTO table SET x=1, y=2বাক্যবিন্যাস সমান (মাইএসকিউএল তে যেভাবেই হোক), আমি বাক্য গঠনটি পছন্দ করি , যেহেতু বিবৃতিতে ত্রুটিগুলি ধরা সহজতর এবং সহজতর, বিশেষত প্রচুর কলাম সন্নিবেশ করার সময়। যদি আপনাকে 10 বা 15 বা আরও কলাম সন্নিবেশ করতে (x, y) VALUES (1,2)হয় তবে আমার মতে সিনট্যাক্স ব্যবহার করে কিছু মিশ্রিত করা সত্যিই সহজ ।

বিভিন্ন এসকিউএল মানের মধ্যে পোর্টেবিলিটি যদি একটি সমস্যা হয়, তবে সম্ভবত INSERT INTO table (x, y) VALUES (1,2)পছন্দ করা হবে be

এবং আপনি যদি একক ক্যোয়ারিতে একাধিক রেকর্ড সন্নিবেশ করতে চান তবে INSERT INTO ... SETসিনট্যাক্সটি কাজ করবে বলে মনে হয় না , অন্যদিকে এটি অন্যটি করবে। তবে বেশিরভাগ ব্যবহারিক ক্ষেত্রে, আপনি যে কোনওভাবে সন্নিবেশ করানোর জন্য রেকর্ডের একটি সেট দিয়ে লুপ করছেন, যদিও এমন কিছু ঘটনাও ঘটতে পারে যেখানে একটি ক্যোয়ারিতে একটি সারণীতে একটি সারির গুচ্ছ সন্নিবেশ করানোর জন্য একটি বৃহত ক্যোয়ারী তৈরি করা যেতে পারে, যার জন্য কোনও প্রশ্নের জন্য প্রতিটি সারি, একটি কর্মক্ষমতা উন্নতি হতে পারে। সত্যিই জানি না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.