টিনিনেন্ট (এন) এর অর্থ কী?


17

আমরা যখন সংখ্যাসূচক তথ্য প্রকারের সাথে একটি আর্গুমেন্টের দৈর্ঘ্য ব্যবহার করি, যতদূর আমি জানি এটি প্রদর্শন প্রস্থ নির্দিষ্ট করে।
আমি নিম্নলিখিত চেষ্টা করেছিলাম:

mysql> create table boolean_test (var1 boolean, var2 tinyint);    
Query OK, 0 rows affected (0.10 sec)   

mysql> show create table boolean_test;   
+--------------+-------------------------   
| Table        | Create Table
+--------------+-------------------------  
| boolean_test | CREATE TABLE `boolean_test` (  
  `var1` tinyint(1) DEFAULT NULL,  
  `var2` tinyint(4) DEFAULT NULL  
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |   
+--------------+---------------------------  
1 row in set (0.00 sec)  

সবার আগে টিনিন্যান্টের একটি 1 বাইট মান। তাহলে এর অর্থ কী tinyint(4)? 4 টি সংখ্যা থাকতে পারে না।

mysql> insert into boolean_test values(101,112);  
Query OK, 1 row affected (0.03 sec)   

mysql> select * from boolean_test;  
+------+------+  
| var1 | var2 |  
+------+------+  
|   10 |  112 |  
|  101 |  112 |  
+------+------+  
2 rows in set (0.00 sec)  

আমি দেখতে পাচ্ছি যে টিনিনেন্টে আমি একটি 10 ​​এবং 101 সংরক্ষণ করেছি এবং এটি মানগুলি (1) হিসাবে সংজ্ঞায়িত করা সত্ত্বেও আমি এই মানগুলি ফিরে পেতে পারি।
আমি কি 1 এর জন্য দেখতে পাচ্ছি না var1? অর্থাৎ মাত্র 1 টি প্রদর্শন অঙ্ক?


কেন একটি সন্নিবেশ করানোর পরে আপনার দুটি সারি থাকবে? আমি এই কোডটি পুরোপুরি বুঝতে পারি না।
উড্রোশিগেরু

উত্তর:


24

ডেটা প্রজ্ঞাময়, tinyint(1), tinyint(2),tinyint(3) ইত্যাদি সব ঠিক একই। এগুলি সবগুলিই -128 থেকে 127 SIGNEDবা 0-255 এর জন্য রয়েছেUNSIGNED । অন্যান্য উত্তর হিসাবে উল্লিখিত হয়েছে যে প্রথম বন্ধনীর সংখ্যাটি কেবলমাত্র একটি প্রস্থের ইঙ্গিত int

আপনি হয়ত খেয়াল করতে চাইতে পারেন, যদিও এই অ্যাপ্লিকেশন = বুদ্ধিমান জিনিসগুলি ভিন্ন দেখাচ্ছে। এখানে, tinyint(1)একটি বিশেষ অর্থ গ্রহণ করতে পারেন। উদাহরণস্বরূপ, সংযোগকারী / জে (জাভা সংযোগকারী) tinyint(1)একটি বুলিয়ান মান হিসাবে বিবেচনা করে , এবং প্রয়োগের ক্ষেত্রে একটি সংখ্যাসূচক ফলাফল ফিরিয়ে দেওয়ার পরিবর্তে, এটি মানগুলিকে trueএবং তে রূপান্তর করে false। এটি tinyInt1isBit=falseসংযোগের প্যারামিটারের মাধ্যমে পরিবর্তন করা যেতে পারে ।


13

একটি টিনিন্যান্ট (1) -128 থেকে 127 এর পরিসরে নম্বর ধরে রাখতে পারে, ডেটাটাইপটি 8 বিট (1 বাইট) হওয়ার কারণে - অবশ্যই স্বাক্ষরযুক্ত স্বাক্ষরকারী মানচিত্র 0-255 রাখতে পারে।

এটি নিঃশব্দে সীমার মানগুলি ছাড়িয়ে যাবে:

mysql> create table a
    -> (
    ->    ttt tinyint(1)
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> insert into a values ( 127 );
Query OK, 1 row affected (0.00 sec)

mysql> insert into a values ( -128 );
Query OK, 1 row affected (0.00 sec)

mysql> insert into a values ( 128 );
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> insert into a values ( -129 );
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * from a;
+------+
| ttt  |
+------+
|  127 |
| -128 |
|  127 |
| -128 |
+------+
4 rows in set (0.00 sec)

mysql>

... যদি না আপনি sql_modeসার্ভার কনফিগারেশন পরিবর্তন করেন বা পরিবর্তন না করেন:

mysql> set sql_mode=STRICT_ALL_TABLES;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into a values ( -129 );
ERROR 1264 (22003): Out of range value for column 'ttt' at row 1
mysql>

ডেটাটাইপের (যেমন: টিনিন্যান্ট (1)) জন্য ডিডিএলে ব্যবহৃত মান হ'ল ডিসপ্লে প্রস্থের সন্দেহ। তবে এটি alচ্ছিক এবং ক্লায়েন্টদের এটি ব্যবহার করতে হবে না। আদর্শ মাইএসকিউএল ক্লায়েন্ট এটি ব্যবহার করে না, উদাহরণস্বরূপ।

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