SQL

SQLはデータベースへの問い合わせに使われる機能豊富な言語で、これらのSQLクエリはステートメントと呼ばれる。 

 

SQLの構文は、大文字と小文字を区別しないことに注意 

 

◆SELECT 

 ・データベースからデータを所得するために使用するSELECTクエリのタイプ。 

  #SELECT * FROM users; 

id 

Username 

Password 

1 

jon 

pass123 

2 

admin 

P4ssword 

3 

martin 

secret123 

 

SELECT:あるデータを取得したいことをDBに伝える。 

*     :データからすべてのcolumnを受信したいことをデータベースに伝える。 

  上記のテーブルには3つのcolumn(id、Username、Password)が含まれる。 

FROM users:usersという名前のテーブルからデータを取得することを意味する。 

;         :クエリの最後であることをデータベースに伝える。 

 

 

・次のクエリは*を使うのではなく、すべてのcolumnを取得するのではなく、 

 Usersという名前のテーブルから、「Username」と「Password」のcolumnのみ 

 を取得する構文となる。 

 # SELECT Username,Password FROM users; 

Username 

Password 

jon 

pass123 

admin 

P4ssword 

martin 

Secret123 

 

・「LIMIT 1」句によって、データベースが1行分のデータのみを返すように強制 

 このクエリをLIMIT 1,1に変更すると、最初の結果がスキップされる。 

 LIMIT 2,1にすると最初の2つの結果、といった具合にスキップされる。 

 最初の数字のスキップしたい結果の数を2番目の数字は返すべき行数を、 

 それぞれデータベース側に伝えるということを覚えておく必要がある。 

 

# SELECT * FROM user LIMIT 1; 

id 

Username 

Password 

1 

jon 

pass123 

 

# SELECT * FROM user LIMIT 1,1; 

Username 

Password 

admin 

P4ssword 

 

# SELECT * FROM user LIMIT 2,1; 

Username 

Password 

martin 

Secret123 

 

・WHERE節を利用する。 

 特定の節にマッチしたデータを返すことで、必要なデータをきめ細かく 

 ピックアップできる。 

・ユーザ名がadminと等しい行のみを返す。 

 

# SELECT * FROM users WHRER Username='admin'; 

id 

Username 

Password 

2 

admin 

P4ssword 

 

・ユーザ名がadminと等しくない行だけを返す。 

# SELECT * FROM users WHERE Username !='admin'; 

id 

Username 

Password 

1 

jon 

pass123 

3 

martin 

secret123 

 

・ユーザ名がadminかjonのどちらかである行だけを返す。 

# SELECT * FROM users WHERE Username ='admin' or username='jon'; 

id 

Username 

Password 

1 

jon 

pass123 

2 

admin 

P4ssword 

 

・ユーザ名がadmin、パスワードがP4sswordと等しい行のみを返す。 

# SELECT * FROM users WHERE Username='admin' and Password='P4ssword'; 

id 

Username 

Password 

2 

admin 

P4ssword 

 

・like節を使うと、完全一致ではなく、特定の文字で始めるか、含めるか、 

 終わるかのデータを、パーセント記号%で表せるワールドワイドカード文字 

 を配置する場所を選択することでしていることができる。 

 

・ユーザ名がアルファベットのaで始まる行をすべて返す。 

# SELECT * FROM users WHERE Username like '%a'; 

id 

Username 

Password 

2 

admin 

P4ssword 

 

・ユーザ名にmiという文字が含まれる行をすべて返す。 

#SELECT * FROM users WHERE Username like '%mi%'; 

id 

Username 

Password 

2 

admin 

P4ssword 

 

◆UNION 

 UNION文は、2つ以上のSELECT文の結果を組み合わせて、単一または複数の 

 テーブルからデータを取得する。 

 このクエリのルールは、以下のものがある。 

  ・各SELECT文で同じ数の例を取得すること。 

  ・列は同様のデータ型であること。 

  ・列の順序が同じであること。 

   

・解説の前提、以下のcustomersというテーブルがある。columnとデータは以下の通り 

id 
 

name 
 

address 
 

city 
 

postcode 
 

1 
 

Mr John Smith 
 

123 Fake Street 
 

Manchester 
 

M2 3FJ 
 

2 
 

Mrs Jenny Palmer 
 

99 Green Road 
 

Birmingham 
 

B2 4KL 
 

3 
 

Miss Sarah Lewis 
 

15 Fore Street 
 

London 
 

NW12 3GH 
 
 

 

・もう一つはsuppliersというテーブル。 

id 
 

company 
 

address 
 

city 
 

postcode 
 

1 
 

Widgets Ltd 
 

Unit 1a, Newby Estate 
 

Bristol 
 

BS19 4RT 
 

2 
 

The Tool Company 
 

75 Industrial Road 
 

Norwich 
 

N22 3DR 
 

3 
 

Axe Makers Ltd 
 

2b Makers Unit, Market Road 
 

London 
 

SE9 1KK 
 
 

 

・以下のSQLステートメントを使用すると、2つのテーブルから結果を収集し、1つの 

 結果セットにすることができる。 

# SELECT name,address,city,postcode FROM customers UNION SELECT company,address,city,postcode FROM suppliers; 

name 
 

address 
 

city 
 

postcode 
 

Mr John Smith 
 

123 Fake Street 
 

Manchester 
 

M2 3FJ 
 

Mrs Jenny Palmer 
 

99 Green Road 
 

Birmingham 
 

B2 4KL 
 

Miss Sarah Lewis 
 

15 Fore Street 
 

London 
 

NW12 3GH 
 

Widgets Ltd 

Unit 1a, Newby Estate 

Bristol 

BS19 4RT 

The Tool Company 

75 Industrial Road 

Norwich 

N22 3DR 

Axe Makers Ltd 

2b Makers Unit, Market Road 

London 

SE9 1KK 
 
 

 

◆INSERT 

  INSERT文は、データベースに新しいデータ行をテーブルに挿入することを 

 指示する。 

 "into users"はデータを挿入したいテーブルをデータベースに伝え、 

  "(username,password)'はデータを提供するcolumnを、 

  そして"values ('bob',password');"は先にしていたcolumnにデータを提供する。 

 

# insert into users (Username,password) values ('bob','password'); 

id 
 

username 
 

password 
 

1 
 

jon 
 

pass123 
 

2 
 

admin 
 

p4ssword 
 

3 
 

martin 
 

secret123 
 

4 
 

bob 
 

password123 

 

◆UPDATE 

 UPDATE文は、データベースに対して、テーブル内の1つ以上のデータ行を更新する 

 ことを指定する。 

# UPDATE users SET username='root',password='pass123' WHERE username='admin'; 

id 
 

username 
 

password 
 

1 
 

jon 
 

pass123 
 

2 
 

root 
 

pass123 
 

3 
 

martin 
 

secret123 
 

4 
 

bob 
 

password123 

 

・UPDATE:UPDATE <テーブル名>で更新したいテーブルを指定。 

・username=root,password=pass123:カンマ区切りのリストで更新したいフィールドを 

 選択。 

・WHERE username='admin';などのWHERE節を使って更新する行を正確に指定する 

 ことができる。 

 

◆DELETE 

 1つまたは複数のデータ行を削除することをデータベースに伝える。 

 返したい列がないことを除けば、クエリのフォーマットのフォーマットはSELECTと 

 よく似ている。 

 WHERE節で削除するデータを正確に指定し、LIMIT節で削除する行数をしていること 

 ができる。 

# DELETE FROM users WHERE username="matin"; 

id 
 

username 
 

password 
 

1 
 

jon 
 

pass123 
 

2 
 

root 
 

pass123 
 

4 
 

bob 
 

password123 

 

#DELETE FROM users; 

id 
 

username 
 

password