SQLのテーブルのカラムについてまとめています。
SQLのカラム操作をするサンプルコード集
サンプルには、MySQLのサンプルデータベースEmployeesを使用しています。
カラムの追加はalter table
サンプルデータベースemployeesテーブルのコピーを作り、alter tableにてdept_noとdept_nameという2つのカラムを追加している例です。
最後に、show columnsでカラム追加したテーブルのカラム情報を確認しています。
mysql>create table employees_copy like employees; Query OK, 0 rows affected (0.11 sec) mysql>alter table employees_copy add dept_no char(4) NOT NULL; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>alter table employees_copy add dept_name varchar(40) NOT NULL; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>show columns from employees_copy; +------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------+------+-----+---------+-------+ | emp_no | int | NO | PRI | NULL | | | birth_date | date | NO | | NULL | | | first_name | varchar(14) | YES | | NULL | | | last_name | varchar(16) | NO | | NULL | | | gender | enum('M','F') | NO | | NULL | | | hire_date | date | NO | | NULL | | | dept_no | char(4) | NO | | NULL | | | dept_name | varchar(40) | NO | | NULL | | +------------+---------------+------+-----+---------+-------+ 8 rows in set (0.00 sec)
【関連記事】
▶MySQLのカラム追加 サンプルコード集 一括で複数追加する方法は?
複数のカラムの値を取得するには、カンマで区切ってカラム名を指定
select文で、複数のカラムの値を取得するにはカンマで区切ってカラムを複数指定します。
SELECT employees.emp_no, first_name, last_name, dept_name FROM `employees` left join dept_emp on employees.emp_no = dept_emp.emp_no left join departments on dept_emp.dept_no = departments.dept_no limit 10; +--------+------------+-----------+--------------------+ | emp_no | first_name | last_name | dept_name | +--------+------------+-----------+--------------------+ | 10001 | xGeorgi | Facello | Development | | 10002 | Bezalel | Simmel | Sales | | 10003 | Parto | Bamford | Production | | 10004 | Chirstian | Koblick | Production | | 10005 | Kyoichi | Maliniak | Human Resources | | 10006 | Anneke | Preusig | Development | | 10007 | Tzvetan | Zielinski | Research | | 10008 | Saniya | Kalloufi | Development | | 10009 | Sumant | Peac | Quality Management | | 10010 | Duangkaew | Piveteau | Production | +--------+------------+-----------+--------------------+ 10 rows in set (0.13 sec)
【関連記事】
▶SQL select文のサンプル集 結合、ソート、別テーブル生成の記述方法は?
カラム情報を取得するには show columns(MySQL)
show columnsで対象テーブルのカラム情報を取得できます。このコマンドはMySQL独自のもので、Oracleなどはシステムテーブルに対してselectを発行する必要があります。
SHOW columns FROM employees; +------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------+------+-----+---------+-------+ | emp_no | int | NO | PRI | NULL | | | birth_date | date | NO | | NULL | | | first_name | varchar(14) | YES | | NULL | | | last_name | varchar(16) | NO | | NULL | | | gender | enum('M','F') | NO | | NULL | | | hire_date | date | NO | | NULL | | +------------+---------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)
【関連記事】
▶MySQL テーブル一覧取得 全カラム情報も取得するには?
複数カラムの条件指定には、inを使う
冗長になりがちな複数カラムの条件指定は、複数のカラム条件をカッコとカンマで区切り、配列のように指定するとスッキリ記述できます。
以下の例では、部署番号d001で部署名Marketing もしくは、部署番号d004で部署名Productionのデータを抽出しています。パッと見て条件が理解できるためコードの視認性も抜群です。
SELECT * FROM `departments` where (dept_no,dept_name) in ( ("d001","Marketing"), ("d004","Production") ) +---------+------------+ | dept_no | dept_name | +---------+------------+ | d001 | Marketing | | d004 | Production | +---------+------------+ 2 rows in set (0.00 sec)
【関連記事】
▶SQL in句のサンプルコード集 複数カラムの指定方法とは?
まとめ
- カラム追加はalter database
- カラム情報取得はデータベースエンジンにより方法が異なる。MySQLではshow columns
- 複数カラムの条件指定は、inを使って簡潔に記述することができる