05 SQLの添削


05 SQLの添削
ラベル:データベース、SQL
1.INSERT——データを追加
①INSERTの基本的な使い方
INSERT INTO Customers
VALUES('1000000006',
		'Toy Land',
        '123 Any Street',
        'New York', 
        'NY', 
        '11111', 
        'USA', 
        NULL,
        NULL);

 VALuES句では、各列に値を指定する必要があります.カラムに値がない場合は、上のcust_のようにcontactとcust_Email列の場合は、NULL値を使用します(テーブルに空の値を指定できると仮定します).VALuESの数はすべて正しい必要があります.前述のSQL文は、テーブル内の列の定義順序に大きく依存し、入手しやすい順序情報にも依存します.INSERT文を記述する方が安全です(ただし、より煩雑です).
INSERT INTO Customers(cust_id, 
					cust_name,
                    cust_address,
                    cust_city, 
                    cust_state, 
                    cust_zip, 
                    cust_country,
                    cust_contact, 
                    cust_email)
VALUES('1000000006', 
		'Toy Land', 
		'123 Any Street', 
		'New York',
        'NY', 
        '11111',
        'USA',
        NULL, 
        NULL);

②INSERT SELECT——検索したデータを挿入
INSERT INTO Customers(cust_id,
					cust_contact, 
					cust_email,
                    cust_name,
                    cust_address, 
                    cust_city, 
                    cust_state, 
                    cust_zip, 
                    cust_country) 
SELECT cust_id, 
	cust_contact, 
	cust_email, 
	cust_name, 
	cust_address, 
	cust_city,
    cust_state,
    cust_zip, 
    cust_country 
FROM CustNew;

この文の基本的な組み合わせはINSERT SELECTです.
複数行挿入のヒント:INSERTは通常1行のみ挿入されます.複数行を挿入するには、複数のINSERT文を実行する必要があります.INSERT SELECTは例外で、1つのINSERTで複数の行を挿入することができ、SELECT文が何行を返してもINSERTに挿入されます.
③SELECT INTO——あるテーブルから別のテーブルへコピー
説明:INSERT SELECTとSELECT INTOの重要な違いは、前者がデータをエクスポートし、後者がデータをインポートすることです.
SELECT * 
INTO CustCopy 
FROM Customers;

一方、Oracle、MySQLでは、構文が少し異なります.
CREATE TABLE CustCopy AS 
SELECT * 
FROM Customers;

2.UPDATE——データの更新
警告:WHERE句は省略せず、UPDATEを使うときは注意してください.少し注意しないと、テーブルのすべてのローが更新されます.
UPDATE Customers 
SET cust_email = '[email protected]' ,
	cust_email = '[email protected]'
WHERE cust_id = '1000000005';

3.DELETE——データの削除
警告:WHERE句を省略しないDELETEを使用するときは注意してください.少し注意しないと、テーブルのすべてのローが誤って削除されます.
DELETE FROM Customers 
WHERE cust_id = '1000000006';

4.CREATE TABLE——表の作成
CREATE TABLE Products ( prod_id       CHAR(10)          NOT NULL, 
						vend_id       CHAR(10)          NOT NULL, 
						prod_name     CHAR(254)         NOT NULL, 
						prod_price    DECIMAL(8,2)      NOT NULL, 
						prod_desc     VARCHAR(1000)     NULL,
                        quantity      INTEGER      NOT NULL   DEFAULT 1)

ここでテーブルを作成するために使用されるフォーマットに注意し、最後の文ではDEFAULT 1を使用します.これによりデフォルト値が設定されます.
5.DROP TABLE——削除表
DROP TABLE CustCopy;

6.システム日付の取得
ここでは、異なるDBMSの異なるシステム日付を取得する関数をリストします.
DBMS
関数/変数
Oracle
SYSDATE
Access
NOW()
DB2
CURRENT_DATE
MySQL
CURRENT_DATE()
PostgreSQL
CURRENT_DATE
SQL Server
GETDATE()
SQLite
date(‘now’)
7.ALTER——表の構造を変更する
①新しい列の追加
ALTER TABLE Vendors 
ADD vend_phone CHAR(20);

②1列削除
ALTER TABLE Vendors 
DROP COLUMN vend_phone;