MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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)

  1. 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; これにより、次の出力が生成されます- +-----

  2. 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