【SAS言語】SQLを用いたCRUD操作|作成・読込・更新・削除

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • SASプログラムの開発環境でSQLを実行する方法が知りたい。
  • SQLを用いてテーブルのCRUD操作を実施する方法が知りたい。
目次

【SAS実践】SQLを用いたテーブルのCRUD操作

SAS環境にSQLを記述し、テーブルの作成・読込・更新・削除する方法についてそれぞれ解説します。

テーブル作成

SASプログラムを用いてテーブルを作成する場合、次のようなコードを記述します。

コード

/* テーブル作成 */
PROC SQL;
    CREATE TABLE test_db (
        id CHAR(4),
        product VARCHAR(20),
        price NUMERIC,
        store VARCHAR(20),
        date DATE
    );
QUIT;

出力イメージ

id product price store date

【参考】様々なテーブルの作成方法

SAS言語を用いてテーブルを作成する際、様々な記述方法があります。詳しく知りたい方向けに以下の記事もご紹介します。

あわせて読みたい
【SAS言語】SQLを用いたテーブル作成方法 SAS環境にSQLを記述し、新規テーブルを作成する方法について解説します。

テーブル更新|レコード挿入

前述で作成したテーブルに対してレコードを挿入する場合、次のようなコードを記述します。

挿入方法(1)テーブル形式で挿入

コード

/* 挿入用データ作成 */
DATA test_db2;
   INPUT id$ product$ price store$ date date9.;
   DATALINES;
   1000 apple 100 TOKYO 4Mar1985
   1001 orange 250 TOKYO 4Mar1985
   1002 lemon 300 OSAKA 4Mar1985
   1003 grape 400 OSAKA 4Mar1985
   1004 banana 300 FUKUOKA 4Mar1985
   1005 peach  900 FUKUOKA 4Mar1985  
;
RUN;


/* SQL操作 */
PROC SQL;
   INSERT INTO test_db SELECT * FROM test_db2;  /* テーブル挿入 */
   SELECT * FROM test_db;                       /* 結果出力 */
QUIT;

出力イメージ

id	  product	price	  store	  date  
1000	apple	  100	  TOKYO	  9194	 
1001	orange	  250	  TOKYO	  9194	
1002	lemon	  300	  OSAKA	  9194	
1003	grape	  400	  OSAKA	  9194	    
1004	banana	  300	FUKUOKA	  9194	
1005	peach	  900	FUKUOKA	  9194	
挿入方法(2)レコード形式で挿入

コード

/* SQL操作 */
PROC SQL;
	/* レコード挿入 */
	INSERT INTO test_db
		(id, product, price, store, date)
	VALUES
		("1006", "melon", 700, "FUKUOKA", "4Mar1985"d);
	
	/* 結果出力 */
	SELECT * FROM test_db;
QUIT;

出力イメージ

id	  product	price	  store	  date  
1000	apple	  100	  TOKYO	  9194	 
1001	orange	  250	  TOKYO	  9194	
1002	lemon	  300	  OSAKA	  9194	
1003	grape	  400	  OSAKA	  9194	    
1004	banana	  300	FUKUOKA	  9194	
1005	peach	  900	FUKUOKA	  9194	  
1006	melon	  700	FUKUOKA	  9194

テーブル更新|レコード更新

前述で作成したテーブルにある特定のレコードを更新する場合、次のようなコードを記述します。

コード

PROC SQL;

   /* レコードを指定し値を更新 */
   UPDATE test_db
   SET id="9999", store = "NAGOYA"
   WHERE product = "grape";
  
   /* 結果出力 */
   SELECT * FROM test_db;
  
QUIT;

出力イメージ

id	  product	price	  store	  date  		
9999	grape	  400	 NAGOYA	  9194	    
1004	banana	  300	FUKUOKA	  9194	
1005	peach	  900	FUKUOKA	  9194	  
1006	melon	  700	FUKUOKA	  9194	

テーブル更新|レコード削除

前述で作成したテーブルから特定のレコードを削除する場合、次のようなコードを記述します。

コード

PROC SQL;
	/* レコード削除 */
	DELETE FROM test_db
	WHERE product in ("apple", "orange", "lemon");
	
	/* 結果出力 */
	SELECT * FROM test_db;
QUIT;

出力イメージ

id	  product	price	  store	  date  		
1003	grape	  400	  OSAKA	  9194	    
1004	banana	  300	FUKUOKA	  9194	
1005	peach	  900	FUKUOKA	  9194	  
1006	melon	  700	FUKUOKA	  9194	

テーブル更新|新規カラム追加

前述で作成したテーブルに対して新規のカラムを追加する場合、次のようなコードを記述します。

コード

todayという新規のカラムを追加した場合の例を以下に示します。

/* 新規カラム追加 */
PROC SQL;
	ALTER TABLE test_db        /* 更新先 */
	ADD today                  /* カラム名 */
		date                   /* データ型 */
		label="basic date"     /* ラベル */
		format=date9.;         /* フォーマット */


/* カラムの値更新 */
PROC SQL;
	UPDATE test_db             /* 更新先データ*/
	SET today = today();       /* 更新するカラム */
	SELECT * FROM test_db;     /* 出力 */
QUIT;

出力イメージ

id	  product	price	store	  date   basic date
1003	grape	  400	OSAKA	  9194	  20JAN2024
1004	banana	  300	FUKUOKA	  9194	  20JAN2024
1005	peach	  900	FUKUOKA	  9194	  20JAN2024
1006	melon	  700	FUKUOKA	  9194	  20JAN2024

テーブル更新|既存カラム削除

前述で作成したテーブルから指定のカラムを削除する場合、次のようなコードを記述します。

コード

PROC SQL;
	/* カラムの削除 */
    ALTER TABLE test_db
    DROP COLUMN store, date, today;
	
	/* 結果出力 */   
    SELECT * FROM test_db;
QUIT;

出力イメージ

id	  product	price
1003	grape	  400
1004	banana	  300
1005	peach	  900
1006	melon	  700

テーブル読込

既存のテーブルを参照したい場合、単純なSELECT文で実現できます。SQLを用いたデータ参照の基礎についてはこちらの記事をご覧ください。

あわせて読みたい
【SAS言語】SQLのSELECT文によるデータ参照・集計方法 SASプログラム内にSQLのSELECT文を記述し、データ参照・集計する方法について解説します。

【参考】SASプログラミング記事一覧

当サイトではSASを用いたプログラミング解説記事を多数掲載しております。

SASはデータ処理・分析をはじめ、高度な統計解析や機械学習・AIによる予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次