MySQLは、3段階層になっている
- Database -> Table -> Data
SQL構文
予約語/関数は、大文字で書く。
特定の予約後の後は、改行する。
- 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)