アットウィキロゴ
note4recurrent @ ウィキ
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

note4recurrent @ ウィキ

SQL(self study)

最終更新:

note4recurrent

- view
だれでも歓迎! 編集

基本命令

練習用サイト

検索

SELECT 列名(*で全部) FROM 表名 WHERE 条件 (以下にオプション指定をすることがある)
SELECT 都道府県名 FROM 都道府県表 WHRE 県コード = 27 // コードが27の県の都道府県名を表示
SELECT 都道府県名 FROM 都道府県表 WHRE 都道府県名 LIKE '%川' //件名の最後の文字が川
SELECT * FROM 気象観測 WHRE 月 in (3,7,8) //3がつ、7月、8月の全項目
SELECT * FROM 気象観測 WHRE 月 between 4 and 8 //4月から8月までの全項目

登録

INSERT INTO 表名 VALUES('S01','hoge',5000)
  • 表の定義に沿った値を記述することが必要
  • ゼロなのかNullなのかも

更新

UPDATE 表名 SET 列名1 =’文字’ 列名2= 289 WHERE 条件(更新する対象を特定する)//条件を入れずに実行すると全レコードが更新されるので注意

削除

DELETE FROM 表名 WHERE 条件 //条件を書かずに実行するとレコードが全部消えるので注意

条件の書き方

項目= 50 //イコール
項目 > 50 //50より大きい
項目 < 50 //50より小さい
項目 >= 50 //50以上
項目 <= 50 //50以下
項目<> 50 //50ではない
  • Nullは特別なので要注意
    • 項目=Nullは使えない
    • 項目 is Null または 項目 is not Null

演算子

  • LIKE
    % 文字列
    _ 一文字
    SELECT * FROM 家計簿 WHERE メモ LIKE '%1月%' //1月が入っているもの
    SELECT * FROM 家計簿 WHERE メモ LIKE '1月%' //1月から始まる
    SELECT * FROM 家計簿 WHERE メモ LIKE '第__期' //第35期はヒットするが第9期や第102期はヒットしない。
    
  • between 5 and 9 //5~9
  • IN: どれかと一致(不一致)
    項目 in('a','b','c') // a,b,c が選ばれる
    項目 not in ('a','b','c') //a,b,cを除く全て
    
  • ANYとALL 数値の大小で判定
    • 書式: WHERE 基本演算子 ANY (値1,値2,値3)
    • 書式: WHERE 基本演算子 ALL (値1,値2,値3)
    • 基本演算子は=,<,>,<>,>= ,<=
SELECT * FROM 家計簿 WHERE 出金額 in (1000,2000,3000) // 1000,2000,3000のいずれかだけが選ばれる 2500は選ばれない
SELECT * FROM 家計簿 WHERE 出金額 <ANY (1000,2000,3000) // 出金額が3000未満は全て選ばれる 2500は選ばれる
SELECT * FROM 家計簿 WHERE 出金額 <ALL (1000,2000,3000) // 出金額が1000未満は全て選ばれる 2500は選ばれない

条件の組み合わせ

  • AND と OR で条件を組み合わせることもできる。カッコで優先順位を明示するとよい。  (項目 = 'a' or 項目 = 'b') and (項目b = 'x' or 項目b = 'y')

検索結果の加工

  • SELECT だけで使われる

DISTINCT:重複の削除

SELECT DISTINCT 列名 FROM 表名

 Excelの重複削除と同じと考えればOK

ORDER BY:結果のソート

SELECT 列名 FROM 表名 ORDER BY キー //全件を並べて出力
SELECT 列名 FROM 表名 WHERE 条件 ORDER BY キー //条件に合致するものを並べて出力:普通これを使う
SELECT 列名 FROM 表名 WHERE 条件 ORDER BY キー DESC //降順オプション
SELECT 列名 FROM 表名 ORDER BY キー, キー2
SELECT 列名 FROM 表名 ORDER BY 需要家コード  , 金額 DESC// 需要家コードを昇順、金額を降順で並べる(昇順は各必要がない)

OFFSET /FETCH>LiMIT OFFSET

  • MySQL では offset rech は使えないので代わりに limit offset を使う
    limit レコード数 offset 抜き取るレコードの位置( select 結果リストの上位から数えて。なので、 order by は必須)
    

P481 第5章

34

select 商品コード,単価,
trunc(単価*0.95) as キャンペーン価格
from 商品 
where 商品区分 = '9' order by 商品コード

35

update 注文
set クーポン割引料 = クーポン割引料 - 300
where 注文日 between '2022-03-12' and '2022-03-14'
and クーポン割引料 is not null
and 数量 >1 

36

update 注文
set 数量 = 数量 -1 
where 注文番号 = '202202250126' and 商品コード = 'W0156'

37

select 注文番号|| '-' ||注文枝番 as 注文番号・枝番
from 注文
where 注文番号 between '202110010001' and '202110319999' 

38

 select distinct
 case 商品区分
   when '1' then '1:衣類'
   when '2' then '2:靴'
   when '3' then '3:雑貨'
   when '9' then '9:その他'
   end as 区分
   from 商品 order by 区分

39

 select 商品コード,商品名,単価,
 case 
   when 単価 < 3000 then 'S'
   when 単価 < 10000 then 'M'
   else 'L'
   end as 販売価格ランク,
 case 商品区分
   when '1' then '1:衣類'
   when '2' then '2:靴'
   when '3' then '3:雑貨'
   when '9' then '9:その他'
   end as 商品区分
 from 商品 order by 単価, 商品コード

40

select 商品名,length(商品名) as 文字数
from 商品
where length(商品名) >= 10
order by 文字数

41  select 注文日,substring(注文番号,9,4)  from 注文 order by 注文日 42

update 商品
set 商品コード = replace(商品コード,'M','E')
where substring(商品コード,1,1) = 'M'

43

select substring(商品コード,2,4) from 商品
where
cast(substring(商品コード,2,4) as int) between 1000 and 2000 order by 1

44

update 廃番商品 set 廃番日 current_Date where 商品コード ='S1990'

45

select 商品コード,商品名,単価, trunc(単価*0.7) as 値下げした単価
from 商品
where 単価 >= 10000 order by 1
+ タグ編集
  • タグ:
  • 自習
  • データベース
最近更新されたスレッド
ウィキ募集バナー