こんにちは、ラクシュミです。
今回もMySQLについてインドよりお届けしていきます!
データセットを触っていて、フラグや要素を追加したいなどで列を追加したくなることは頻繁にあると思います。
しかし、サクッと検索しただけでも「列」なのか「カラム」なのか「縦に追加する」のか「横に追加する」のか混乱している人も多いかと思います。
今回はmySQLを使用してデータセットへの列の追加方法を紹介していきます。
また図を多めに使用して説明していきますので、安心してくださいね。
目次
そもそも「列」と「カラム」って何が違うの
まず、列と行も混乱しやすいですが、私は線形代数の定義に従って以下のように呼び分けています。
線形代数では行は横の列のことを言い、列は縦の列のことを言います。(定義されています。)
英語的にはカラム(column)というのは列のことを指しています。また、行のことはロウ(Row)と言います。
ただ明確に定義をしていない書籍やサイトでは列と言っても、縦の列なのか横の列なのか曖昧なこともあり、混乱を招いています。
ここでは横の列を「行」、縦の列を「列」と定義して、行や列の追加について紹介していきます。
行:横の列、Row
列:縦の列、column
列の追加の種類
MySQLでできる列(カラム)の操作は以下です。
行の追加
行の追加は細かく指定することができます。
最終行に追加することができます。
列を追加
列の操作は最後の行に列を追加、先頭に列を追加、任意の位置に列を追加ができます。
実際にmySQLで列を追加しよう
今回はこんな表を作って、操作していきましょう。
今回基本構文を紹介する際に、一般的な表の形式を以下のようにします。
基本構文はこの表をベースに紹介しますので、参考にしてください。
表を作る
表を作るために以下のコードを入力します。
1 2 3 4 5 6 7 8 |
create database Indian_actor; use Indian_actor; create table actor(Num INT,Name VARCHAR(255),BirthYear INT,famous_movie VARCHAR(255)); insert into actor(Num,Name,BirthYear,famous_movie) values (1,'Salman Khan',1965,'Dabangg'); insert into actor(Num,Name,BirthYear,famous_movie) values (2,'Aamir Khan',1965,'3 idiots'); insert into actor(Num,Name,BirthYear,famous_movie) values (3,'Amitabh Bachchan',1942,'Deewar'); insert into actor(Num,Name,BirthYear,famous_movie) values (4,'Akshay Kumar',1967,'PAD MAN'); |
表を出力します。
1 |
select*from actor; |
希望通りのデータセットができました!
行の追加(一番最後)
いつも新しい行を挿入するときにやっている命令ですので、なんとなく使い方は理解されていると思いますが念のために説明します。
【基本構文】
n行目に新しい行を追加するとき
insert into [テーブル名] ( 属性1,属性2,属性3,・・・) values (n行目1,n行目2,n行目3,・・・);
今回は5行目に新しい行を追加します。
1 |
insert into actor(Num,Name,BirthYear,famous_movie) values (5,'Sushant Singh Rajput',1986,'PK'); |
MySQLは大文字と小文字の区別がありません。私は小文字の方がかわいくて好きなので、文字型の指定以外は小文字を使用していますが、以下のように書いても問題ありません。
1 |
INSERT INTO ACTOR(Num,Name,BirthYear,famous_movie) VALUES (5,'Sushant Singh Rajput',1986,'PK'); |
無事に5行目に追加できています。
また
insert into [テーブル名] (属性2,・・・) values (n行目2,・・・);
のように一部のみ書くと言及されていないところは空欄になります。
以下はNumとBirthYearのみを宣言して追加しています。
1 |
insert into actor(Num,BirthYear) values (5,1986); |
5行目のNameとfamous_movieが空欄(NULL)になっています。
列の追加(一番最後)
今度は表の最終列に列を追加します。
【基本構文】
最終列に新しい列を追加する
alter table [テーブル名] add [追加する列の属性名] [追加する列のデータ型];
データ型はその属性に格納するデータの型です。
整数型、浮動小数点、文字型などがあり基本的に他のプログラミング言語とほとんど同じです。
1 |
alter table actor add BirthPlace VARCHAR(255); |
actorというテーブルにBirthPlaceという列を最終列の後に追加しています。
1 |
select*from actor; |
表を出力して見てみましょう。
列の追加(先頭)
表の一番最初の列に列を追加します。
【基本構文】
最終列に新しい列を追加する
alter table [テーブル名] add [追加する列の属性名] [追加する列のデータ型] first;
先ほどと違って一番最後に、firstと書く必要があります。
1 |
alter table actor add BirthPlace VARCHAR(255) first; |
actorというテーブルにBirthPlaceという列を一番最初の列に追加しています。
1 |
select*from actor; |
表を出力して見てみましょう。
列の追加(指定した行のあと)
表の一番最初の列に列を追加します。
【基本構文】
最終列に新しい列を追加する
alter table [テーブル名] add [追加する列の属性名] [追加する列のデータ型] after [列を追加したい場所の一個前の属性];
最終列に列を追加する構文の後ろに after [列を追加したい場所の一個前の属性] を加えます。
1 |
alter table actor add BirthPlace VARCHAR(255) After BirthYear; |
actorというテーブルの属性「BirthYear」の後ろに属性「BirthPlace」を挿入しています。
1 |
select*from actor; |
表を出力して見てみましょう。
上手に更新できています!
まとめ
今回は色々な列の方法を紹介しました。構文自体は簡潔でとても分かりやすいです。しかし、行と列自体がややこしいので、初めは「どっちのことだっけ?」となると思います。
回数を重ねれば行と列も迷わなくなりますし、列の入れる場所によって構文も迷わなくなります。
あきらめずに回数をこなして慣れてくださいね!