http://kaya-soft.com/sqlserver2008-toranomaki/page/2/
http://kaya-soft.com/sqlserver2008-toranomaki/
詳しく書いてあるので、ちょっと長いので、少しまとめてみました。
1、SQLServer Management Studioの使い方
SQLServerにアクセスするためには、「SQLServer Management Studio」を介してデータベースを操作します。
(1) 起動
「スタート」メニュー → 「すべてのプログラム」 → 「SQLServer 2008」 → 「SQLServer Management Studio」を選択
(2) テーブルを開いてデータを入力
オブジェクトエクスプローラに表示しているテーブルを選択しながら右クリックし、「上位200行の編集」をクリックする。あとはセルを選択して、値を入力します。Enter/Tabで入力キーの確定処理が行われます。
(3) テーブルを参照モードで開く
「オブジェクトエクスプローラ」で当該テーブルを選択しながら右クリックし、表示されたメニューの「上位1000行の選択」をクリックします。
右上は、「クエリエディタ」と言って、SQLを記述するエリアになります。
右下にテーブルのレコードが表示されていますが、要するにクエリエディタで記述したSQLを実行した結果を下に表示していることになります。
2、SQL
Management Studio で、ログインに成功したら、画面左上の「新しいクエリ」ボタンをクリックします。
左上のドロップダウンには接続先のデータベースが表示されており、変更したいDBを選択します。
クエリエディタでクエリ入力して、下のようなのSQLを記述し、「!実行(X)」ボタンをクリックして実行する(「F5」や「Ctrl + E」 で可能)。
※F5を押して実行される時に、マウスで範囲選択している場合は、その選択されている部分だけが実行される。クエリを2つ書いておいて、使い分けたい時とか、WHEREを書いている場合に、WHEREを指定しなかった場合はどういう結果かを見たいときとかに便利です。
(1) テーブルにデータを追加(INSERT文を使う)
INSERT
INTO
テーブル名(列名1, 列名2, ・・・)
VALUES
(値1, 値2, ・・・)
⇒(例)
INSERT
INTO
TableA(社員番号, 名前, 年齢, 性別, 生年月日, 給料)
VALUES
(
'00001'
,
'木村太郎'
,
'36'
,
'男'
,
'1977/05/04'
, 360000)
(2) データを参照する(SELECT文を使う)
SELECT
*
FROM
テーブル名
WHERE
絞り込む条件
SELECT
*
FROM
TableA
WHERE
性別 =
'男'
・「SELECT
列名
AS
表示する列名」で指定した
AS の後ろに書いた文字は、SELECT結果の表示列名(見出し)になります・SELECTした結果を並び替えるには「ORDER BY」句を使用します
・[ASC]の場合は昇順、[DESC]の場合は降順に並べ替えられます(省略は「ASC」)。
・テーブル内に重複するデータがある場合「DISTINCT」を使用すれば重複を取り除けます
・SELECTで取得するデータに条件を指定して絞り込む場合、WHERE句を使用します
・数値や日付をFrom~Toで範囲指定する場合は「BETWEEN」を使用します
・ある列が、複数の値の中からどれか一つに該当するかどうか、という条件を指定する場合は、「IN」を使います。例えば、社員番号が「00001」か「00002」か「00003」のどれかに該当するデータを抽出するには、「
WHERE
社員番号
IN
(
'00001'
,
'00002'
,
'00003'
)」と記述する(「WHERE
社員番号 =
'00001'
OR
社員番号 =
'00002'
OR
社員番号 =
'00003'」と同じ意味)
。
・NULLを含むデータがある場合、NULLを検索条件で指定する場合は「IS NULL」を使用します(「= NULL」ではない)。・文字列であいまい検索する場合は、「LIKE」を使います。「%」は0文字以上の任意の文字列を表し、「_」は任意の1文字を表すことができます。
⇒(例)
SELECT
*
FROM
TableA
WHERE
名前
LIKE
'%鈴木%'
(3) 上位 N 件の取得SELECT
TOP
N 列名1, 列名2, ・・・
FROM
テーブル名
(4) データを更新する (UPDATE文を使う)
UPDATE
テーブル名
SET
更新する列名1 = 更新する値1, 更新する列名2 = 更新する値2, ・・・
WHERE
更新するレコードを特定する為の条件
⇒(例)
UPDATE
TableA
SET
給料 = 300000
WHERE
社員番号 =
'00001'
DELETE
FROM
テーブル名
WHERE
削除するレコードを特定する為の条件
⇒(例)
DELETE
FROM
TableA
WHERE
社員番号 =
'00002'
オブジェクトエクスプローラから、「ビュー」というところを選択し、右クリックメニューから「新しいビュー」をクリックする。
「テーブルの追加」画面が開きますので、対象テーブルします。
クエリ作成対象の[TableA]を選択して「追加」ボタンをクリックすると、Management Studio 本体の方に追加されます。
あとは、ペインを使って、選択作業を行って、実行でViewを作成します。
3、関数
SELECTやWHEREで関数が使用できます。
(1) 【文字列】RIGHT ある文字列の右端から、指定した文字数分だけ取得する
SELECT RIGHT
(
'ABCDEF'
, 3) ⇒ 'DEF'
(2) 【文字列】LEFT ある文字列の左端から、指定した文字数分だけ取得する
SELECT LEFT
(
'ABCDEF'
, 3) ⇒ 'ABC DEFGHI'
(3) 【文字列】RTRIM ある文字列の右端から空白を取り除く
SELECT RTRIM(
' ABC DEF '
) +
'GHI' ⇒ ' ABC DEFGHI'
(4) 【文字列】LTRIM ある文字列の左端から空白を取り除く
SELECT LTRIM(
' ABC DEF '
) +
'GHI' ⇒ 'ABC DEF GHI'
(5) 【文字列】REPLACE ある文字列の中で、特定の文字列を別の文字列に置換する
SELECT REPLACE
(
'ABCDE'
,
'BCD'
,
'BCDBCD'
)⇒ 'ABCDBCDE'
(6) 【文字列】SUBSTRING ある文字列の中で、特定の位置から指定した文字数分だけ取得する
SELECT SUBSTRING
(
'ABCDE'
, 3, 2)⇒ 'CD'
(7) 【文字列】UPPER ある文字列を大文字に変換する
SELECT UPPER
(
'abcあいう012')⇒ 'ABCあいう012'
(8) 【文字列】LOWER ある文字列を小文字に変換する
SELECT LOWER
(
'ABCあいう012')⇒ 'abcあいう012'
(9) 【文字列】LEN ある文字列の文字数を取得する
SELECT LEN(
'ABCあいう012'
) ⇒ 9
(10) 【日付・時刻】GETDATE / SYSDATETIME システム日付(SQL Serverがインストールされたマシンの日付)を取得する
(戻り値の型がGETDATEの場合はDATETIME型で、SYSDATETIMEの場合はDATETIME2型)
SELECT GETDATE(), SYSDATETIME()⇒ 2016-01-04 15:49:32.380 2016-01-04 15:49:32.38
(11) 【日付・時刻】YEAR ある日付の年の部分だけ取得する
SELECT YEAR
(GETDATE())⇒ 2016
(12) 【日付・時刻】MONTH ある日付の月の部分だけ取得する
SELECT MONTH
(GETDATE()) ⇒ 1
(13) 【日付・時刻】DAY ある日付の日の部分だけ取得する
SELECT DAY
(GETDATE()) ⇒ 4
(14) 【日付・時刻】DATEPART ある日付の一部だけを取得する
SELECT
DATEPART(
YEAR
, GETDATE())
AS
年
,DATEPART(
MONTH
, GETDATE())
AS
月
,DATEPART(
DAY
, GETDATE())
AS
日
,DATEPART(
HOUR
, GETDATE())
AS
時
,DATEPART(
MINUTE
, GETDATE())
AS
分
,DATEPART(
SECOND
, GETDATE())
AS
秒
,DATEPART(MILLISECOND , GETDATE())
AS
ミリ秒
,DATEPART(NANOSECOND , GETDATE())
AS
ナノ秒
⇒
年 月 日 時 分 秒 ミリ秒 ナノ秒
2014 1 4 16 34 52 40 40000000
(15) 【日付・時刻】DATEADD 日付を加算したり減算したりする
SELECT
DATEADD(d, 1,
'2014/01/01'
)
,DATEADD(d, -1,
'2014/01/01'
)
⇒ 2014-01-02 00:00:00.000 2013-12-31 00:00:00.000
(16) 【日付・時刻】DATEDIFF 2つの日付の差を求める
SELECT
DATEDIFF(d,
'2014/01/01'
,
'2014/01/01'
)
,DATEDIFF(d,
'2014/01/01'
,
'2014/01/02'
)
,DATEDIFF(d,
'2014/01/02'
,
'2014/01/01'
)
⇒ 0 1 -1
(17) 【変換】CAST データ型を変換する
SELECT
CAST
(
'012'
AS
INT
)
,
CAST
(12
AS
VARCHAR
) ⇒ 12(INT型) 12(VARCHAR型)
(18) 【変換】CONVERT データ型を変換する
SELECT
CONVERT
(
VARCHAR
, GETDATE(),111) AS 'yyyy/mm/dd'
,CONVERT(
VARCHAR
, GETDATE(),112) AS 'yyyymmdd'
,CONVERT(
VARCHAR
, GETDATE(),120) AS 'yyyy-mm-dd hh:mi:ss'
,CONVERT(
VARCHAR
, GETDATE(),121) AS 'yyyy-mm-dd hh:mi:ss.mmm'
⇒
yyyy/mm/dd yyyymmdd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.mmm
2014/01/02 20140102 2014-01-02 21:21:06 2014-01-02 21:21:06.383
※書式(スタイル):111(年/月/日(yyyy/mm/dd)),112(年月日(yyyymmdd)),120(年-月-日 時:分:秒(yyyy-mm-dd hh:mi:ss)),121(年-月-日 時:分:秒.ミリ秒(yyyy-mm-dd hh:mi:ss.mmm))
(19) 【数値】ROUND 四捨五入する
有効桁数は、正の値を指定した場合は小数点以下の桁数に、負の値を指定した場合は、小数点から左の桁数にまで丸めます。
SELECT
ROUND(123.445, 2)
,ROUND(123.445, -2)
,ROUND(153.445, -2)
⇒ 123.450 小数点以下第三位を四捨五入し、第二までを求めている
100.000 小数点の左二桁目を四捨五入し、2の為繰り上がらず100となる
200.000 小数点の左二桁目を四捨五入し、5の為繰り上がり200となる
(20) 【数値】POWER 階乗を求める
SELECT POWER(2, 3) ⇒ 8
(21) 【数値】RAND 0から1までの範囲のランダムな数字を求める
SELECT RAND(), RAND(), RAND()
⇒ 0.273604264024087 0.949061768386125 0.880059316061561
(22) 【数値】CEILING 小数点以下を切り上げる
SELECT
CEILING(1)
,CEILING(1.1)
,CEILING(1.9)
⇒ 1 2 2
(23) 【数値】FLOOR 小数点以下を切り捨てる
SELECT
FLOOR(1)
,FLOOR(1.1)
,FLOOR(2.1)
⇒ 1 1 2
(24) 【数値】SQRT 平方根を求める
SELECT SQRT(2) ⇒ 1.4142135623731
4、集計を行う
(1) SUM 合計を求める
SELECT
SUM
(給料)
FROM
TableA
(2) AVG 平均を求める
SELECT
AVG
(給料)
FROM
TableA
・集計対象がNULLを許容する列の場合は「IS NULL(NULLを指定値に置換)」をしておく
・GROUP BYを使用して、「性別毎の平均年齢」とかなら集計する
SELECT
性別,
AVG
(年齢)
FROM
TableA
GROUP
BY
性別
・HAVINGを使って、「平均年齢が30才未満の性別」で絞り込みます
SELECT
性別,
AVG
(年齢)
FROM
TableA
GROUP
BY
性別
HAVING
AVG
(年齢) < 30
(3) MAX 最大値を求める
SELECT
MAX
(給料)
FROM
TableA
(4) MIN 最小値を求める
SELECT
MIN
(給料)
FROM
TableA
(5) COUNT 個数(行数)をカウントする
SELECT
COUNT
(*)
FROM
TableA
0 件のコメント:
コメントを投稿