DB基礎②データ検索
目標
SELECT文
表の照会
射影:列を取り出す
選択:行を取り出す
グループ:行を取り出してグルーピング
射影
表の中から必要な列を取り出すこと
SELECT {column,column | *} FROM 表名
①employees表から2つの列を取り出す
>SELECT emp_name dept_id FROM employees
②emloyees表からすべての列を取り出す
>SELECT * FROM employees
選択
表の中の参照したい行を取り出す
SELECT {column,column | *} FROM 表名 [Where 検索条件]
>SELECT emp_name dept_id FROM employees WHERE dept_id = 10
[where 列名 演算子 値また式]
SELECT文
表の照会
射影:列を取り出す
選択:行を取り出す
グループ:行を取り出してグルーピング
射影
表の中から必要な列を取り出すこと
SELECT {column,column | *} FROM 表名
①employees表から2つの列を取り出す
>SELECT emp_name dept_id FROM employees
②emloyees表からすべての列を取り出す
>SELECT * FROM employees
選択
表の中の参照したい行を取り出す
SELECT {column,column | *} FROM 表名 [Where 検索条件]
>SELECT emp_name dept_id FROM employees WHERE dept_id = 10
[where 列名 演算子 値また式]
比較:=,>,<
BETWEEN:BETWEEN 5 AND 10
IN: IN (1 3 7)
LIKE: LIKE '文字列'
NULL:NULL
①emp表からdept_id が40未満を取り出す
Select * from emp where dept_id < 40;
②prod表からpriceが50,000以上180,000未満のデータを取り出す
select * from products where between 50000 and 180000;
③prod表からwarehouse_idが101,201以外のデータを取り出す
select * from prod where warehouse_id not in (101,201);
④emp表からemp_nameに'木'を含むデータを検索する
select * from emp where emp_name like '%木%';
⑤prod表からstockがnullのデータを検索する
select * from prod where stock is null;
論理演算子
AND:条件をすべて満たす
OR:いずれかの条件を満たす
NOT:否定の意味を表す
選択した行の並び替え
>SELECT emp_name dept_id FROM employees where 検索条件 [order by 対象列[asc,desc]]
①exam表のデータをpriceで降順に並び替える
>select * from exam order by price desc;
②exam表のデータをproduct_id列で昇順で並べ替える
>select product_id,product_name from exam order by product_id asc;
グループ化
- count
- sum
- avg
- max
- min
select count( * ) from salaly;
select sum (salaly) from salaly;
select avg(salaly) from salaly;
select (salaly) from salaly;
列ごとの集計処理と要約
>select column from table where 検索 group by dept_id
①prodからwarehouse_idごとのstockの合計、priceの最高額を検索する
>select warehouse_id, sum(stock), max(price) from prod group by warehouse_id:
②上記結果からstock合計が60より大きいwarehouse_idを検索する
集合関数の条件はhavingを使う
> select warehouse_id,sum(stock),max(price) from prod group by warehouse_id having sum(stock) > 60;