-
MySQL CASTはどのようにオーバーフローを処理できますか?
MySQL CASTは、数値式の評価中に発生するオーバーフローを処理できます。数値式の評価でオーバーフローが発生した場合、MySQLはエラーメッセージを反映するとします。このオーバーフローを処理するために、CASTを使用してその数値をUNSIGNEDに変更できます。 たとえば、BIGINTの最大値に1を追加すると、MySQLは次のようにオーバーフローが原因でエラーを生成します- mysql> Select 9223372036854775807 + 1; ERROR 1690 (22003): BIGINT value is out of range in '(922337203
-
MySQLのどの関数がBIN()関数と同じ出力を返しますか?
BIN()関数は、バイナリ値に変換した後、DECIMALベースの数値のバイナリ文字列を返すことがわかっています。このように、CONV(N、10,2)関数と同じと見なすことができます。これは、CONV(N、10,2)の出力がBIN()関数の出力と同じになることを意味します。 CONV(N、10,2)関数では、「N」は変換される数値です。10はNの基数、つまりDECIMALを表し、2はNを2進文字列に変換することを表します。 例 以下の例は、BIN()による出力リターンがCONV(N、10,2)と同じであることを示しています。 mysql> Select BIN(15); +------
-
MySQLの正確な値の算術演算はどのようにオーバーフローを処理できますか?
MySQLの正確な値の算術演算は、オーバーフローが発生するのはオペランドの範囲に依存するため、数式の評価中に発生するオーバーフローを処理できます。算術式で使用される値を他のデータ型に変更すると、オーバーフローが解消される可能性があります。 たとえば、BIGINTの最大値をDECIMALに変換し、それに1を加算すると、次のようにオーバーフローを処理できます- mysql> Select 9223372036854775807.0 + 1; +---------------------------+ | 9223372036854775807.0 + 1 | +---------------
-
オーバーフローの処理におけるNO_UNSIGNED_SUBTRACTSQLモードの使用は何ですか?
SQL strictモードが有効になっている場合、1つがUNSIGNEDタイプである整数値を減算すると、デフォルトで符号なしの結果が生成されます。ただし、結果が負の場合、MySQLはエラーを生成します。次の例で観察できます- mysql> SET sql_mode = ''; Query OK, 0 rows affected (0.00 sec) mysql> Select CAST(0 AS UNSIGNED) -1; ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in '(cast
-
パラメータが指定されていない場合、どのMySQL ASCII()関数が返されますか?
この場合、ASCII()関数の引数として空の文字列を提供していることを意味します。空の文字列を指定すると0が返されます。 例 mysql> Select ASCII(''); +-----------+ | ASCII('') | +-----------+ | 0 | +-----------+ 1 row in set (0.00 sec)
-
MySQL AUTO_INCREMENT列がデータ型の上限に達するとどうなりますか?
AUTO_INCREMENT列がデータ型の上限に達すると、シーケンス番号を生成するための後続の作業は失敗します。そのため、AUTO_INCREMENT列には、必要な最大シーケンス値を保持するのに十分な大きさの整数データ型を使用することをお勧めします。たとえば、TINYINTを使用する場合、AUTO_INCREMENTは127のシーケンス番号しか生成できず、UNSIGNED TINYINTの場合、この値は最大255まで拡張できます。
-
MySQL AUTO_INCREMENTの開始番号を変更するにはどうすればよいですか?
MySQL AUTO_INCREMENT値は1から始まりますが、次の2つの方法で変更できます- ALTERTABLEクエリを使用 ALTER TABLEクエリを使用して、AUTO_INCREMENTの開始値を次のように変更できます- ALTER TABLE table_name AUTO_INCREMENT = value; 例 列「id」をAUTO_INCREMENTとして持つテーブルを作成したとします。ここで値を挿入すると、次のクエリで確認できるように、シーケンス番号は1から始まります- mysql> Create Table EMP(id int NOT NULL PRIMARY
-
NULLを提供した場合、どのMySQL ASCII()関数が返されますか?
この場合、ASCII()関数の出力は、文字列としてNULLを提供するか、単にNULLを提供するかという条件によって異なります。次の例は違いを示します- mysql> SELECT ASCII(null); +-------------+ | ASCII(null) | +-------------+ | NULL | +-------------+ 1 row in set (0.00 sec) mysql> SELECT ASCII('null'); +---------------+ | ASCII(
-
MySQL WHERE句でASCII()関数を使用するにはどうすればよいですか?
WHERE句でASCII()関数を使用している場合、それによって返される出力は、WHERE句で指定された条件によって異なります。たとえば、「Student」という名前のテーブルがあり、学生の名前の最初の文字の65より大きい番号コードを取得したいとします。このためのクエリは次のように書くことができます- mysql> Select * from student; +------+---------+---------+-----------+ | Id | Name | Address | Subject | +------+-----
-
MySQL WHERE句でCHAR_LENGTH()関数を使用するにはどうすればよいですか?
CHAR_LENGTH()またはCHARACTER_LENGTH()文字列関数がWHERE句で使用される場合、それによって返される出力は、WHERE句で指定された条件に依存します。たとえば、「Student」という名前のテーブルがあり、文字数が6未満の名前のみを取得したい場合は、次のクエリを記述できます- mysql> Select * from Student; +------+---------+---------+-----------+ | Id | Name | Address | Subject | +------+--
-
MySQLで指定された文字列の長さを取得するにはどうすればよいですか?
MySQLのCHAR_LENGTH()またはCHARACTER_LENGTH()文字列関数は、指定された文字列の長さを取得するために使用されます。この関数は単に文字数をカウントし、文字がシングルバイトかマルチバイトかを無視します。 例 mysql> Select CHAR_LENGTH('New Delhi'); +--------------------------+ | CHAR_LENGTH('New Delhi') | +--------------------------+ | 9 &nbs
-
現在のシーケンス番号よりも小さいAUTO_INCREMENT値を変更すると、MySQLは何を返しますか?
MySQL列でAUTO_INCREMENTを使用すると、シーケンス番号は常にデフォルト値1または指定した値から昇順で増加します。 これが理由で、MySQLはAUTO_INCREMENT値を現在のシーケンス番号よりも小さい値に変更することを許可していません。次の例の助けを借りて理解することができます- 例 この例では、「emp1」という名前のテーブルがあり、テーブルの作成中にAUTO_INCREMENT VALUEを100に指定するとします。したがって、テーブルに値を挿入した後、シーケンスは100から開始します。次のクエリの出力から見た- mysql> Select * from emp
-
パラメータが指定されていない場合、MySQL CHAR_LENGTH()関数は何を返しますか?
この場合、CHAR_LENGTH()関数への引数として空の文字列を提供していることを意味します。 CHAR_LENGTH()関数でカウントされる文字がないため、空の文字列を指定すると0が返されます。 例 mysql> Select CHAR_LENGTH(''); +-----------------+ | CHAR_LENGTH('') | +-----------------+ | 0 | +-----------------+ 1 row in set
-
AUTO_INCREMENT MySQL列に値「NULL」を挿入するとどうなりますか?
AUTO_INCREMENT列にNULL値を挿入すると、MySQLはシーケンス番号を返します。 例 mysql> Create table employee(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Name Varchar(10)); Query OK, 0 rows affected (0.16 sec) mysql> Insert into employee(id, Name) values(NULL, 'Gaurav'); Query OK, 1 row affected (0.07 sec) mysql&g
-
特定のMySQLデータベースの列名とともにすべてのテーブルの文字セットを確認するにはどうすればよいですか?
次のMySQLクエリを使用して、特定のデータベース内のすべてのテーブルの文字セットを確認できます- mysql> Select Column_name, TABLE_NAME, CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.Columns Where TABLE_SCHEMA = 'db_name'; 例 たとえば、以下のクエリは、「Alpha」という名前のデータベースの列名とともに、すべてのテーブルの文字セットを返します。 mysql> Select Column_nam
-
文字列データ型にCHARACTERSETバイナリ属性を指定すると、MySQLはどのように反応しますか?
文字列データ型にCHARACTERSETバイナリ属性を指定すると、MySQLはその列を後続のバイナリ文字列型として作成します。 CHAR、VARCHAR、およびBLOBデータ型の変換は次のように行われます- CHARはBINARYになります VARCHARはVARBINARYになります TEXTはBLOBになります 上記の種類の変換は、ENUMおよびSETデータ型では発生せず、両方ともテーブルの作成中に宣言されたとおりに作成されます。 例 以下の例では、次のようにすべてCHARACTERSETバイナリとして指定された4つの列を持つ「EMP」という名前のテーブルを作成しました- mysq
-
MySQLでのNCHARの使用は何ですか?
MySQLは、CHAR列が事前定義された文字セットを使用する必要があることを示す方法としてNCHARを定義しています。 Utf8は、MySQLによって事前定義された文字セットとして使用されます。 例 以下の例では、「Student1」という名前のテーブルを作成しています。この表では、3つの列のデータ型を、互いに同等の3つの異なる宣言スタイルで宣言しています。それはすべてNCHARによるものです。 mysql> Create table Student1(Name Char(10) character set utf8, Address NATIONAL CHARACTER(10), Fa
-
列に「NULL」、「0」、または値なしを挿入すると、MySQLはAUTO_INCREMENT列にシーケンス番号を割り当てますか?
MySQLは、テーブルの列にNULL、0、または値なしを挿入した場合でも、AUTO_INCREMENT列にシーケンス番号を自動的に割り当てます。 例 mysql> create table test123(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Name Varchar(10)); Query OK, 0 rows affected (0.15 sec) 上記のクエリは、「id」と「Name」という名前の列を持つ「test123」という名前のMySQLテーブルを作成しました。列「id」はAUTO_INCREMENTとして宣言されています。
-
MySQLテーブルからすべての行を削除するにはどうすればよいですか?
TRUNCATEステートメントまたはDROPステートメントのいずれかを使用して、テーブルからすべての行を削除できます。 DELETEステートメントを使用して実行することもできますが、その場合、WHERE句はテーブルのすべての行を識別する必要があります。 TRUNCATEステートメントとDELETEステートメントの両方がテーブルの構造を削除しないことはわかっていますが、それでもDELETEステートメントよりもTRUNCATEステートメントを使用する方が適切です。 DROPステートメントはテーブルの構造も削除します。 構文 TRUNCATEステートメント TRUNCATE table tabl
-
MySQLテーブルにデータを挿入するにはどうすればよいですか?
MySQLテーブルにデータを挿入するには、INSERTINTOコマンドを使用する必要があります。 INSERTINTOコマンドでテーブルのすべての列に値を指定する必要があります。 構文 INSERT INTO table_name values(value1,value2,…) 例 「RollNo」、「Name」、「Class」の3つの列を持つ「Student」という名前のテーブルがあるとします。次のクエリを使用して、テーブルに新しい行を追加できます- mysql> INSERT INTO Student values(50,'Harshit',&rsqu