MySQL入門
レッスン終了。以下メモ
フィールド | フィールド | フィールド | フィールド | |
---|---|---|---|---|
レコード | ||||
レコード | ||||
レコード | ||||
レコード |
この表1つがテーブル
その表をまとめて保存しているものがデータベース
MySQLの操作
コマンド | 内容 |
---|---|
mysql | |
-u ユーザー名 | ユーザー名でログインする |
-p | パスワードを使ってログインする |
set password for username@localhost=passwrod(''); | パスワードをセットする。 |
mysql -u username -p dbname < 外部ファイル | 外部ファイルのコマンド実行 |
mysqldump | バックアップ、復元のためのコマンド 不当記号で分ける |
バックアップ mysqldump -u username -p dbname > 保存先ファイル名 |
|
復元 mysqldump -u username -p dbname < バックアップファイル名 |
ここまでlinux上でのコマンド
MySQLログイン後のコマンド
grant all on tablename to username@localhost identified by 'password'; | ユーザーにデータベースの操作の権限をパスワード付きで与える。rootログイン時のみ可 |
exit | MySQLからログアウトする quit, \q でもログアウト可能 |
データベースの操作 | |
---|---|
create | 作成 |
show | 一覧を表示。 ここだけdatabases, tablesなど複数形になる |
drop | 削除 |
use dbname | データベース切り替え |
if exists | もし既に存在していた時の為のコマンド drop table if exists tablename; create table tablename(); みたいな形で使う |
like | 構造のコピー create table newtable like oldtable; oldtableと同じ構造のテーブルをnewtableという名前で作る |
desc | 構造の表示 |
select * from tablename | レコードを表示 select * from tablename \G レコードを縦に表示 |
where | 条件指定 |
insert into tablename (field,..,..) values (value,..,..); |
レコードに値を挿入 |
update tablename set field1=value1, field2=value2,.. | レコードの値を更新 |
delete from tablename | レコードの削除 |
like | % 任意の文字列 _ 任意の一文字 条件指定で抽出できる |
between | 指定した範囲内のレコードを取得 select * from tablename where fieldname between value1 and value2; |
in | 条件意当てはまるレコードを取得 select * from tablename where fieldname in ('value1', 'value2'); |
order by | asc 昇順 desc 降順 ソートして表示 |
group by | グループを昇順にソートして表示 group by fieldname order by null ソートが発生しない |
limit | limit offset,max 開始行位置指定と件数最大値指定 limit 2, 2なら3行目から2行表示 |
select*fromでは必ずしもidの昇順に取得するとは限らない。limitを使う場合などはorder byを使うのがよろし | |
alter table | 構造の変更 |
add | フィールドの追加 |
キーの追加 alter table tablename add key fieldname(fieldname); |
|
after | フィールドの位置の指定 |
change | フィールドの設定変更 |
drop | フィールドの削除 |
キーの削除 alter table tablename drop key fieldname; |
|
rename | テーブル名の変更 |
複数のテーブルをまたぐ場合 table.field とテーブルとフィールドを.つなぎにする。
MySQLの型、設定
数値 | |
---|---|
int | 整数(integer) |
double | 浮動少数 おそらくfloatあたりも使えると思う |
文字列 | |
char | 文字列 型の大きさが決まっているときなどに |
varchar | 文字列 型の大きさが不明瞭なときなどに |
text | 文字列 大量の文字列のときなどに。ただし使いすぎると重くなる |
日付 | |
date | 日付を表示 |
datetime | 日時を表示 |
それ以外 | |
enum | 選択肢形式 すでに値を格納しておく |
フィールドの設定 | |
not null | 入力必須 |
default | デフォルトの値を設定 |
auto_increment | 自動連番 |
索引(インデックス) | そのフィールドで検索するときに動作が速くなる。 反面、挿入では動作が重くなる |
主キー | primarykey テーブルの中で1つしか設定できない |
キー | 何個でも設定できる。 key field (filed) |
ユニークキー | unique 重複した値の時に、はじく |
MySQL関数関連
count(*) | レコード総件数を調べる select count(*) from tablename; |
distinct | レコードにどのような値が入っているかを調べる select distinct fieldname from tablename; |
max(fieldname) | フィールドの最大値を調べる select max(fieldname) from tablename; |
min(fieldname) | フィールドの最小値を調べる select min(fieldname) from tablename; |
avg(fieldname) | フィールドの平均値を調べる select avg(fieldname) from tablename; |
sum(fieldname) | フィールドの合計値を調べる select sum(fieldname) from tablename; |
rand() | 乱数 0<値<1の値をランダムで表示 select * from tablename order by rand() limit 1; |
length() | 文字列の長さを取得 select length(fieldname) from tablename; |
concat() | 文字列の連結 select concat(fieldname1, '(', fieldname2, ')') from tablename; この記述だとfieldname1(fieldname2)と表示される |
as | フィールドの表示名の変更 select concat(fieldname1, '(', fieldname2, ')') as label from tablename; この記述ならconcat(fieldname1, '(', fieldname2, ')')と表示されてたところがlabelに |
substring | 部分文字列の取得 select substring(fieldname,1,1) from tablename; フィールドネーム1の1文字を取得 |
now() | 現在時刻の取得 select now(); |
manth() | 月だけを表示 select manth(fieldname) from tablename; |
datediff() | 日付の差分を表示 select datediff(now(), fieldname1) from tablename; 現在時刻からfieldname1の時刻を引いた日数を表示 |