MySQLとSQL

MySQLは、3段階層になっている
  • Database -> Table -> Data

SQL構文

  1. 予約語/関数は、大文字で書く。

  2. 特定の予約後の後は、改行する。

    • SELECT, FROM, WHERE, GROUP BY, ORDER BY

1,2 に関してだが、書き方を統一するのが大切。

SELECT 
  name
FROM
  companies;

or

SELECT name
  FROM companies;
  • DROP DATABASE <データベース名>;

意味:そのDatabase内の全てのテーブルを削除して、そのDatabase そのものも削除する。

  • USE <データベース名>;:Database名を指定する。

  • SHOW TABLES <データベース名>;

もし、USE 構文で、Database名を指定したらSHOW TABLES;
指定したDBのテーブルを表示する。つまり、<データベース名> を省略できる。

データの型
  • INTEGER:整数
データの制約
  • NOT NULL:無記入は、ダメ!って意味


mysql>  CREATE TABLE companies
    -> (id INTEGER NOT NULL,
    -> name VARCHAR(100) NOT NULL,
    -> establishment_date DATE,
    -> PRIMARY KEY(id));
Query OK, 0 rows affected (0.15 sec)

mysql> SHOW TABLES;
+-------------------------+
| Tables_in_test_database |
+-------------------------+
| companies               |
+-------------------------+
1 row in set (0.02 sec)

mysql> SHOW COLUMNS FROM companies;
+--------------------+--------------+------+-----+---------+-------+
| Field              | Type         | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| id                 | int          | NO   | PRI | NULL    |       |
| name               | varchar(100) | NO   |     | NULL    |       |
| establishment_date | date         | YES  |     | NULL    |       |
+--------------------+--------------+------+-----+---------+-------+
3 rows in set (0.06 sec)

mysql> SHOW COLUMNS FROM companies\G
*************************** 1. row ***************************
  Field: id
   Type: int
   Null: NO
    Key: PRI
Default: NULL
  Extra:
*************************** 2. row ***************************
  Field: name
   Type: varchar(100)
   Null: NO
    Key:
Default: NULL
  Extra:
*************************** 3. row ***************************
  Field: establishment_date
   Type: date
   Null: YES
    Key:
Default: NULL
  Extra:
3 rows in set (0.01 sec)


ALTER TABLE 構文:テーブルの修正
  • ALTER TABLE <テーブル名> ADD COLUMN <列の定義>;:列の追加
例:
ALTER TABLE companies 
  ADD COLUMN capital INTEGER NOT NULL;
  • ALTER TABLE <テーブル名> DROP COLUMN <列名>;:列の削除
例:
ALTER TABLE companies 
  DROP COLUMN capital;

※注意点:ALTER TABLE 構文で、削除(DROP)すると、その列に保存されていたデータも消える。見た目上だけではなく、その列に入っていたデータも消えるので注意!

INSERT 構文:データの追加。1回の実行で、1行分のみを追加するのが、通説
  • INSERT INTO <テーブル名> (列1, 列2, ...) VALUES (値1, 値2, ...);
INSERT INTO companies (id, name) 
  VALUES (1, 'Yahoo株式会社');
SELECT 構文:検索
  • SELECT 列1, 列2, ... FROM <テーブル名>;
SELECT id, name, establishment_date, 
  FROM companies;

・全ての列を出力する
SELECT * 
  FROM <テーブル名>;
UPDATE 構文:更新
  • UPDATE <テーブル名> SET <列名> = <式>;
UPDATE companies
  SET name = '任天堂株式会社';

ただし、このSQL文だと、companies テーブルの全ての name (列名)が、任天堂株式会社 に変更されてしまう。

DELETE 構文:テーブルの「行」を削除
  • DELETE FROM <テーブル名>;
mysql> SELECT * FROM companies\G
*************************** 1. row ***************************
                id: 1
              name: 任天堂株式会社
establishment_date: 1996-01-31
1 row in set (0.00 sec)

mysql> DELETE FROM companies;
Query OK, 1 row affected (0.04 sec)

mysql> SELECT * FROM companies\G
Empty set (0.01 sec)

mysql> SHOW TABLES;
+-------------------------+
| Tables_in_test_database |
+-------------------------+
| companies               |
+-------------------------+
1 row in set (0.04 sec)