0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SQL・Databeseを基本からまとめてみた【MySQL / CREATE TABLE・INSERT・UPDATE・DELETE】

Last updated at Posted at 2023-03-10

CREATE TABLE で新しいテーブルを作成する

MySQL で新しいテーブルを作成するには CREATE TABLE 文を使う。
いろんなオプションが指定できるが、一番基本の CREATE 文の構文は下記になる。

Basic.sql
CREATE TABLE テーブル名 (
    カラム名1 データ型 [NOT NULL | NULL],
    カラム名2 データ型 [NOT NULL | NULL],
    カラム名3 データ型 [NOT NULL | NULL],
   ....
);
Sample.sql
CREATE TABLE SAMPLE_3_1_1 (
  ID                INT          NOT NULL PRIMARY KEY                 COMMENT 'ペットID'             ,
  NAME              VARCHAR(30)  NOT NULL                             COMMENT '名前'                 ,
  GENDER            CHAR(1)      NOT NULL                             COMMENT '性別(男:M/女:F)' ,
  BIRTHDAY          DATE         NOT NULL                             COMMENT '生年月日'             ,
  WEIGHT            DECIMAL(4,1)                                      COMMENT '体重'                 ,
  REGIST_TIMESTAMP  DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP   COMMENT '登録日時' 
);

INSERT 文でデータを 1 行挿入する

MySQL でテーブルにデータを挿入するには INSERT 文を使う。
1 レコードを挿入する、基本の INSERT 文の構文は次の通り。

Basic.sql
INSERT INTO テーブル名 
        (カラム名1, カラム名2, カラム名3, ...) 
    VALUES 
        (1, 2, 3, ...);
Sample.db
INSERT INTO SAMPLE_3_1_1 (ID , NAME     , GENDER                , WEIGHT , REGIST_TIMESTAMP      )
                  VALUES (6  , 'ERA'    , 'M'                   , 10.9   , '2020-08-01 00:00:00' ) ;

カラム1 に値1 が、カラム2 に値2 が、と順番に挿入される。

NULL のカラムや、NOT NULL でもデフォルト値の指定されているカラムや AUTO_INCREMENT が指定されているカラムは指定しなくてもよい。

UPDATE 文でテーブルのデータを更新する

MySQL でテーブルのデータを更新するには UPDATE 文を使る。
テーブルのレコードを更新する、基本の UPDATE 文の構文は次の通り。

UPDATE  テーブル名
SET     カラム名1 = 値1,
        カラム名2 = 値2,
        カラム名3 = 値3,
        ...
WHERE   条件文;
Sample.db
PDATE SAMPLE_3_1_1
   SET NAME   = 'MOCOMOCO' ,
       WEIGHT = 4.5
 WHERE ID     = 1 ;

条件文に合致するレコードのカラム1 の値が値1 に、カラム2 は値2 に ... と更新される。
デフォルトでは Safe Updates モードが有効化されていて、WHERE 句をつけなかったり、WHERE 句の条件文にキーカラムを使わないとエラーになる。

WHERE 句は必須ではないが、WHERE 句をつけないと、Safe Updates モードを OFF にしている場合は、テーブルの全レコードが更新されるのでお気をつける。

DELETE 文でテーブルのデータを削除する

MySQL でテーブルのデータを削除するには DELETE 文を使う。
テーブルのレコードを更新する、基本の DELETE 文の構文は次の通り。

DELETE
FROM    テーブル名
WHERE   条件文;
Sample.db
DELETE FROM SAMPLE_3_1_1
 WHERE ID = 2 ;

テーブルの条件文に合致するレコードを削除する。
デフォルトでは Safe Updates モードが有効化されていて、WHERE 句をつけなかったり、WHERE 句の条件文にキーカラムを使わないとエラーになる。

WHERE 句は必須ではありませんが、WHERE 句をつけないと、Safe Updates モードを OFF にしている場合は、テーブルの全レコードが削除されるので気をつける。

DELETEの特徴
  • 条件付き削除が可能
  • 処理スピードが速い
  • DML(データ操作言語)
  • やり直し(ROLLBACK)できる
  • DELETE権限が必要
  • ログや処理情報が残る

ALTER TABLE でテーブルにカラムを追加する

シンプルに ALTER TABLE を使ってテーブルに新しいカラムを追加するには、ALTER TABLE と ADD [COLUMN] を使った、次のようなスクリプトを実行します。

ALTER TABLE テーブル名
ADD [COLUMN] カラム名 データ型 [NOT NULL | NULL];
Sample.db
//カラムの追加
ALTER TABLE SAMPLE_3_1_1
  ADD COLOR VARCHAR(15) NOT NULL DEFAULT 'WHITE' COMMENT '毛色' AFTER WEIGHT ;

//カラム名の変更
ALTER TABLE SAMPLE_3_1_1
  RENAME COLUMN COLOR TO FUR_COLOR ;

//カラム定義(型+オプション)の変更
ALTER TABLE SAMPLE_3_1_1
  MODIFY FUR_COLOR VARCHAR(30) DEFAULT 'BROWN' ;

//カラム名+カラム定義(型+オプション)の変更
ALTER TABLE SAMPLE_3_1_1
  CHANGE FUR_COLOR DOGS_FUR_COLOR VARCHAR(30) NOT NULL DEFAULT 'BROWN' COMMENT '犬の毛色' ;

TRUNCATEで表内のデータを全削除する

SQLのTRUNCATE文を使うことで、表内のデータを全削除することができる。

TRUNCATE  TABLE  テーブル名;
TRUNCATEの特徴
  • 全件削除しかできない
  • 処理スピードが速い
  • DDL(データ定義言語)
  • やり直し(ROLLBACK)できない
  • DROP権限が必要
  • ログや処理情報が残らない

DROP TABLE でテーブルを削除する

MySQL でテーブルを作成するには DROP TABLE 文を使う。
基本の DROP TABLE 文の構文は次の通り。

DROP TABLE テーブル名;

テーブル名をカンマで続けて、複数のテーブルを同時に削除することもできる。

参考サイト

【SQL】未経験者もこれ一本でOK!MySQLで学ぶ「SQL」「データベース基礎」講座【プログラミング初心者向け】
MySQL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?