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 列名 演算子 値また式]
比較:=,>,<
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;
Next Post Previous Post
No Comment
Add Comment
comment url