05 SQLの添削
3434 ワード
05 SQLの添削
ラベル:データベース、SQL
1.INSERT——データを追加
①INSERTの基本的な使い方
VALuES句では、各列に値を指定する必要があります.カラムに値がない場合は、上のcust_のようにcontactとcust_Email列の場合は、NULL値を使用します(テーブルに空の値を指定できると仮定します).VALuESの数はすべて正しい必要があります.前述のSQL文は、テーブル内の列の定義順序に大きく依存し、入手しやすい順序情報にも依存します.INSERT文を記述する方が安全です(ただし、より煩雑です).
②INSERT SELECT——検索したデータを挿入
この文の基本的な組み合わせはINSERT SELECTです.
複数行挿入のヒント:INSERTは通常1行のみ挿入されます.複数行を挿入するには、複数のINSERT文を実行する必要があります.INSERT SELECTは例外で、1つのINSERTで複数の行を挿入することができ、SELECT文が何行を返してもINSERTに挿入されます.
③SELECT INTO——あるテーブルから別のテーブルへコピー
説明:INSERT SELECTとSELECT INTOの重要な違いは、前者がデータをエクスポートし、後者がデータをインポートすることです.
一方、Oracle、MySQLでは、構文が少し異なります.
2.UPDATE——データの更新
警告:WHERE句は省略せず、UPDATEを使うときは注意してください.少し注意しないと、テーブルのすべてのローが更新されます.
3.DELETE——データの削除
警告:WHERE句を省略しないDELETEを使用するときは注意してください.少し注意しないと、テーブルのすべてのローが誤って削除されます.
4.CREATE TABLE——表の作成
ここでテーブルを作成するために使用されるフォーマットに注意し、最後の文ではDEFAULT 1を使用します.これによりデフォルト値が設定されます.
5.DROP TABLE——削除表
6.システム日付の取得
ここでは、異なるDBMSの異なるシステム日付を取得する関数をリストします.
DBMS
関数/変数
Oracle
SYSDATE
Access
NOW()
DB2
CURRENT_DATE
MySQL
CURRENT_DATE()
PostgreSQL
CURRENT_DATE
SQL Server
GETDATE()
SQLite
date(‘now’)
7.ALTER——表の構造を変更する
①新しい列の追加
②1列削除
ラベル:データベース、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;