MySQLでは、SERIALとAUTO_INCREMENTの違いは何ですか?
MySQLでは、SERIALとAUTO_INCREMENTの両方を使用して、フィールドのデフォルト値としてシーケンスを定義します。ただし、技術的には異なります。
AUTO_INCREMENT属性は、BITおよびDECIMALを除くすべての数値データ型でサポートされています。テーブルごとに存在できるAUTO_INCREMENTフィールドは1つだけであり、1つのテーブルのAUTO_INCREMENTフィールドによって生成されたシーケンスは、他のテーブルでは使用できません。
この属性では、シーケンスに重複がないことを確認するために、フィールドにUNIQUEインデックスが存在する必要があります。シーケンスはデフォルトで1から始まり、挿入ごとに1ずつ増加します。
mysql> Create Table Student(Student_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Name Varchar(20)); Query OK, 0 rows affected (0.18 sec)
上記のクエリは、Student_idAUTO_INCREMENTを宣言しています。
mysql> Insert Into Student(Name) values('RAM'),('SHYAM'); Query OK, 2 rows affected (0.06 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Select * from Student; +------------+-------+ | Student_id | Name | +------------+-------+ | 1 | RAM | | 2 | SHYAM | +------------+-------+ 2 rows in set (0.00 sec) mysql> Show Create Table Student\G *************************** 1. row *************************** Table: Student Create Table: CREATE TABLE `student` ( `Student_id` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(20) DEFAULT NULL, PRIMARY KEY (`Student_id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 1 row in set (0.00 sec)
一方、SERIAL DEFAULT VALUEは、NOT NULL AUTO_INCREMENTUNIQUEKEYの省略形です。 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINTなどの整数型は、SERIALDEFAULTVALUEキーワードをサポートしています。
mysql> Create Table Student_serial(Student_id SERIAL, Name VArchar(20)); Query OK, 0 rows affected (0.17 sec) mysql> Insert into Student_serial(Name) values('RAM'),('SHYAM'); Query OK, 2 rows affected (0.12 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Select * from Student_serial; +------------+-------+ | Student_id | Name | +------------+-------+ | 1 | RAM | | 2 | SHYAM | +------------+-------+ 2 rows in set (0.00 sec) mysql> Show Create Table Student_serial\G *************************** 1. row *************************** Table: Student_serial Create Table: CREATE TABLE `student_serial` ( `Student_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `Name` varchar(20) DEFAULT NULL, UNIQUE KEY `Student_id` (`Student_id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 1 row in set (0.00 sec)
-
MySQLのTINYINT(1)とブール値の違いは何ですか?
TINYINT(1)とブール値の間に違いはありません。キーワードBoolまたはBooleanは内部でTINYINT(1)に変換されます。または、BoolまたはBooleanはTINYINT(1)と同義であると言えます。 まずテーブルを作成しましょう- mysql> create table DemoTable ( isMarried Boolean ); Query OK, 0 rows affected (1.77 sec) 表の説明を確認しましょう- mysql> desc DemoTable; これにより、次の出力が生成されます- +-----
-
MySQLでは、!=NULLとISNOT NULLの違いは何ですか?
値を!=NULLと比較すると、NULLが返されます。したがって、!=NULLは無意味です。 !=NULLとISNOT NULLの違いを確認するために、最初にテーブルを作成しましょう。 まずテーブルを作成しましょう- mysql> create table DemoTable1970 ( Value int ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTa