ITと創作でねこを飼いたい

プログラミングやITで勉強したこと、疑問をまとめます。

SQL文の基本(自分用のメモ)

今回はどうしても忘れてしまう自分のために、空で書けるようSQL文についてまとめたいと思います(ほぼ自分用です)

 

データベースの確認

SHOW DATABASES;

 

データベースの作成

CREATE DATABASE データベース名;

 

データベースの接続(正確にはSQL文ではない)

CONNECT データベース名

USE データベース名

注)SQL文ではないので「;」はつけない。

 

テーブルの確認

SHOW TABLES;

 

テーブルの作成

CREATE TABLE テーブル名(

  列名 データ型 [制約]

);

CREATE TABLE USER_INFO (

   LOGIN_ID VARCHAR(100) NOT NULL PRIMARY KEY,

  PASSWORD VARCHAR(100) NOT NULL,

  NAME VARCHAR(100) NOT NULL

);

 注)フィールドの定義を続けて書く場合は「,」で区切る。ただし最後のフィールド定義の後には必要ない。

([]で囲った部分は省略可能)

 

テーブルに新しいレコードを挿入する場合

・全てのフィールドを挿入する

INSERT INTO テーブル名 VALUES( 値 [, 値, ・・・] );

例)

INSERT INTO USER_INTO VALUES('123','abcd','aiu');

 

・一部のフィールドを挿入する

INSERT INTO テーブル名 ( 列名 [, 列名, ・・・] ) VALUES ( 値 [,  値, ・・・] );

 

テーブルのレコードを更新する

UPDATE テーブル名 SET 列名=値 [,列名=値] [WHERE 条件];

 

レコードの削除

DELETE FROM テーブル名 [WHERE 条件] ;

 

ファイルに記述されたSQLを実行する

SOURCE ファイル名

注)SQL文ではないので「;」はつけない。

 

<<レコードの検索>>

・一つのフィールド(列)に対するレコード

SELECT 列名 FROM テーブル名;

 

・二つのフィールドに対するレコード

SELECT 列名, 列名, FROM テーブル名;

 

 ・全てのフィールドのデータの取得

SELECT * FROM テーブル名;

 

・重複するレコードを除外する

SELECT DISTINCT 列名 FROM テーブル名;

 

・クエリによって抽出されるレコード件数を取得したい場合

SELECT COUNT(*) FROM テーブル名;

 

・クエリによって抽出するレコードのフィールドに対して別名をつける

SELECT 列名 AS 別名 FROM テーブル名;

 

・検索条件を指定してレコードを絞り込む

SELECT 列名 FROM テーブル名 [WHERE 条件]

 

例)EMPテーブルから給料(sal)が1250以上,2500以下であるレコードの抽出

SELECT * FROM EMP WHERE SAL <= 1250 AND SAL >= 2500;

SELECT * FROM EMP WHERE SAL BETWEEN 1250 AND 2500;

BETWEENの前にNOTをつけると否定になる。

 

その他

・列挙した値を含むレコードを抽出する→IN

例)SELECT * FROM EMP WHERE DEMPTNO IN (10, 30);

 

・文字のパターンマッチングに利用→LIKE

例)SELECT * FROM EMP WHERE ENAME LIKE 'A%';

 

・SELECT文の結果をソートして表示する→ORDER BY 列名 [DESC | ASC]

デフォルトはAscending(昇順)

 

・フィールドをグループ化する→GROUP BY 列名

↑グループ化した場合の条件→HAVING(WHEREではない)

 

ポイント

ほぼほぼテーブル名の記述が必要。

テーブル名書いてなかったら、「間違えたかも」と思った方あ良さそう。