Hatena::ブログ(Diary)

crazyuplog このページをアンテナに追加 RSSフィード

2009-04-17

Database vol.2

  • 列に別名を付ける
  • 列の値に対して演算を行う
  • 列同士で演算を行う
  • 文字列の連結を行う

列に別名を付ける

AS句を使って別名を設定する。

SELECT
	ProductName AS "商品名"
	, Price AS "単価"
FROM
	Products
;

別名が日本語だった時、"で囲まないとなぜか文字化けを起こしました。

理由はわからないが、つけておいた方が無難。

実行結果
$ mysql5 -uroot sql_drill < 041701.sql 
商品名	単価
まぐろ	500
金魚	35
ぶり	350
あじ	200
あなご	150
ねずみ肉	120
(以下略)

問題3-2

テーブルCustomersのCustomerCodeを顧客コード、

CustomerNameを顧客名という別名で取り出しなさい。

SELECT
	CustomerCode AS "顧客コード"
	,CustomerName AS "顧客名"
FROM
	Customers
;
実行結果
$ mysql5 -uroot sql_drill < 041702.sql 
顧客コード	顧客名
2001	タマ
2002	ハナ
2003	ミケ
2004	キク
1005	ウメ
1006	トラネコ商会
(以下略、これからは以下略も省略します。)

問題3-4

テーブルCustomersのCustomerNameを顧客名、得意先名という別名で取り出しなさい。

SELECT
	CustomerName AS "顧客名"
	,CustomerName AS "得意先名"
FROM
	Customers
;

問題3-5

テーブルEmployeesのEmployeeNameを社員名、Emailをメールアドレス、連絡先という別名で取り出しなさい。

SELECT
	EmployeeName AS "社員名"
	,Email AS "メールアドレス"
	,Email AS "連絡先"
FROM
	Employees
;
実行結果
$ mysql5 -uroot sql_drill < 041713.sql
社員名	メールアドレス	連絡先
シマゴロー	simagoro@nekoyasudo	simagoro@nekoyasudo
ゴッチン	gochin@nekoyasudo	gochin@nekoyasudo
マキ子	maki@nekoyasudo	maki@nekoyasudo
マル	maru@nekoyasudo	maru@nekoyasudo
ミチロー	michiro@nekoyasudo	michiro@nekoyasudo
チー	coo@nekoyasudo	coo@nekoyasudo
サラ	sara@nekoyasudo	sara@nekoyasudo
みなみ	minami@nekoyasudo	minami@nekoyasudo
プリン	prin@nekoyasudo	prin@nekoyasudo
ぴー子	pko@nekoyasudo	pko@nekoyasudo
実行結果
$ mysql5 -uroot sql_drill < 041703.sql 
顧客名	得意先名
タマ	タマ
ハナ	ハナ
ミケ	ミケ
キク	キク
ウメ	ウメ
  • AS句が使えず、空白を使う物もある。

列の値に対して演算を行う

テーブルから取り出した値を加工して出力する。

SELECT
	列名 演算子 値
FROM
	テーブル名
;

実際に行ってみた。

SELECT
	ProductName AS "商品名"
	,Price * 1.05 AS "税込価格"
FROM
	Products
;
実行結果
$ mysql5 -uroot sql_drill < 041704.sql 
商品名	税込価格
まぐろ	525.00
金魚	36.75
ぶり	367.50
あじ	210.00
あなご	157.50
ねずみ肉	126.00

問題4-2

テーブルEmployeesで、Heightの半分を求めなさい。

SELECT
	Height / 2 AS "Heightの半分"
FROM
	Employees
;
実行結果
$ mysql5 -uroot sql_drill < 041705.sql 
Heightの半分
84.0000
80.5000
77.5000
79.0000
85.0000

問題4-3

テーブルEmployeesで、Weightの3倍から50を引いた物を求めなさい。

SELECT
	(Weight * 3) - 50 AS "Weightの3倍から50を引いた物を求めなさい。"
FROM
	Employees
;
実行結果
$ mysql5 -uroot sql_drill < 041706.sql 
Weightの3倍から50を引いた物を求めなさい。
166
130
106
85
160
178
100

問題4-5

テーブルSalesで、Quantityに200を加え、3で割ったものを求めなさい。

SELECT
	Quantity
	,(Quantity + 200) / 3 AS "Quantityに200を加え、3で割ったものを求めなさい。"
FROM
	Sales
;
実行結果
$ mysql5 -uroot sql_drill < 041707.sql 
Quantity	Quantityに200を加え、3で割ったものを求めなさい。
5	68.3333
1	67.0000
1	67.0000
6	68.6667
2	67.3333
3	67.6667
24	74.6667
12	70.6667
10	70.0000
1	67.0000
  • ()で括ってもよい。

列同士で演算を行う

SELECT
	列名 演算子 列名
FROM
	テーブル名
;

BMIで計算して表示する。

SELECT
	Weight
	,Height
	,Weight / (Height/100) / (Height/100) AS BMI
FROM
	Employees
;
実行結果
$ mysql5 -uroot sql_drill < 041708.sql
Weight	Height	BMI
72	168	25.51020408
60	161	23.14725512
52	155	21.64412071
45	158	18.02595738
70	170	24.22145329
76	173	25.39343112
50	162	19.05197378

問題15-

テーブルEmployeesで、Heightの3倍からWeightの2.5倍を引いたものを求めなさい。

別名は結果とします。

SELECT
	(Height * 3) - (Weight * 2.5) AS "結果"
FROM
	Employees
;
実行結果
$ mysql5 -uroot sql_drill < 041709.sql
結果
324.0
333.0
335.0
361.5
335.0
329.0
361.0
354.0
324.0
338.0
345.0
317.5
316.0
389.0

問題5-3

テーブルSalesで、CustomerID、ProductID、EmployeeIDの積を加えたものを求めなさい。

別名は結果とします。

SELECT
	Quantity + (CustomerID * ProductID * EmployeeID) AS "結果"
FROM
	Sales
;
実行結果
$ mysql5 -uroot sql_drill < 041710.sql
結果
1202
1121
721
1986
9242
9353
3424
1712
44
571
7905
8515
10711
13468
14995
2526

問題5-4

テーブルProductsで、PriceからProductCode、CategoryIDの積を引いたものを求めなさい。

SELECT
	Price - (ProductCode * CategoryID) AS "結果"
FROM
	Products
;
実行結果
$ mysql5 -uroot sql_drill < 041711.sql
結果
-501
-967
-653
-804
-855
-3892
-3814
-3716
  • カンマを忘れやすいので忘れないように気をつける。

文字列の連結を行う

SELECT
	CONCAT(列名 , 列名または文字列)
FROM
	テーブル名
;
SELECT
	列名 || 列名または文字列
FROM
	テーブル名
;

でもできる。

  • SQLServerの場合、||は使用できず+を使う。

お客様の名前に「様」を付ける。

SELECT
	CustomerName
	,CONCAT(CustomerName , "様") AS "お名前"
FROM
	Customers
;
Copyright © crazyup. All rights reserved.