SQL
日本語 | 構造化問合せ言語 |
英語 | Structured Query Language |
ふりがな | えすきゅーえる |
フリガナ | エスキューエル |
データベースを操作するための言語。
データベースにテーブルを作成したり、データを追加したり、データを取得したり(クエリー)するための言語。
SELECT、INSERT、DELETE、UPDATEといった単語を使用する。
基本的に共通の仕様があり、多くのデータベースはANSI SQL 92と呼ばれる仕様に準拠している。そのため、SQLが使用できればほとんど全てのデータベースを操作できる。
ただし、ユーザー管理や設定関連を初めとして、データベース毎の細かい差異は存在するため、必ずしもあるSQLが全てのデータベースで使用できるとは限らない。
JavaではJDBCを使用することでSQLを実行できる。
SQLは共通言語のため、Javaが分からない人にも分かるというメリットがある反面、Javaのプログラムの中にSQLのプログラムが混じる、という「二重言語」の問題があり、メンテナンス性を下げる可能性もある。また、SQLには「コンパイル」がないため、実行しなければ構文が正しいかチェックできないというデメリットもある。
そういった面を考慮して、最近ではEJB等の異なる形でのデータベース操作方法も存在する。
しかし、それらの代替案がまだ発展途上であり、また現在ではSQLは修得が必須の言語であり多くの技術者が知っていること、また開発者の可用性、つまり「Javaが分からなくてもSQLが分かれば開発に参加できる」というメリットがあるため、当分の間は、最も一般的なデータベース操作方法の地位を保つだろう。
本辞書では、導入の簡易さからサンプルコードではhsqldbを使用する。SQL関連のサンプルコードの使用例については、下記使用例を参考のこと。
また、SQL関連の単語は全て大文字で記述する。
データベースにテーブルを作成したり、データを追加したり、データを取得したり(クエリー)するための言語。
SELECT、INSERT、DELETE、UPDATEといった単語を使用する。
基本的に共通の仕様があり、多くのデータベースはANSI SQL 92と呼ばれる仕様に準拠している。そのため、SQLが使用できればほとんど全てのデータベースを操作できる。
ただし、ユーザー管理や設定関連を初めとして、データベース毎の細かい差異は存在するため、必ずしもあるSQLが全てのデータベースで使用できるとは限らない。
JavaではJDBCを使用することでSQLを実行できる。
SQLは共通言語のため、Javaが分からない人にも分かるというメリットがある反面、Javaのプログラムの中にSQLのプログラムが混じる、という「二重言語」の問題があり、メンテナンス性を下げる可能性もある。また、SQLには「コンパイル」がないため、実行しなければ構文が正しいかチェックできないというデメリットもある。
そういった面を考慮して、最近ではEJB等の異なる形でのデータベース操作方法も存在する。
しかし、それらの代替案がまだ発展途上であり、また現在ではSQLは修得が必須の言語であり多くの技術者が知っていること、また開発者の可用性、つまり「Javaが分からなくてもSQLが分かれば開発に参加できる」というメリットがあるため、当分の間は、最も一般的なデータベース操作方法の地位を保つだろう。
本辞書では、導入の簡易さからサンプルコードではhsqldbを使用する。SQL関連のサンプルコードの使用例については、下記使用例を参考のこと。
また、SQL関連の単語は全て大文字で記述する。
参考サイト
// Sample.java
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Sample
{
public static void main( String[] args )
{
Connection conn = null;
PreparedStatement psCreate = null;
PreparedStatement psInsert = null;
Statement stmt = null;
ResultSet rs = null;
try
{
// ■JavaA2Z内の、SQL関連のサンプルコードの試し方。
// 1. まず「参考サイト」の「hsqldb」からhsqldb_1_*_*_*.zip(*はバージョン番号)
// をダウンロードして適当な場所に解凍してください。
// 2. 次に、解凍したディレクトリの中のlibディレクトリ内のhsqldb.jarに
// クラスパスを通してください。Eclipseであれば、プロジェクトのプロパティの
// 「Java のビルド・パス」-「ライブラリー」で「外部 JAR の追加」で
// hsqldb.jarを選択してください。
// 3. 以上で準備は完了です。以下のサンプルコードが試せることを
// 確認してください。
// まずJDBCドライバを読み込みます。
Class.forName( "org.hsqldb.jdbcDriver" );
// JDBCに接続してコネクションを取得します。
String url = "jdbc:hsqldb:mem:aname";
String user = "sa";
String password = "";
conn = DriverManager.getConnection( url, user, password );
// テスト用テーブルを作ります。
psCreate = null;
final String SQL_CREATE = "CREATE TABLE TABLE_TEST( NAME VARCHAR, VALUE INT );";
psCreate = conn.prepareStatement( SQL_CREATE );
psCreate.execute();
// そのテーブルに3行INSERTします。
final String SQL_INSERT = "INSERT INTO TABLE_TEST VALUES( ?, ? );";
psInsert = conn.prepareStatement( SQL_INSERT );
for( int iF1 = 0; iF1 < 3; ++iF1 )
{
psInsert.setString( 1, "ネーム" + iF1 );
psInsert.setInt( 2, iF1 );
psInsert.execute();
}
// INSERTしたデータをSELECTでクエリーします。
stmt = conn.createStatement();
final String SQL_SELECT = "SELECT NAME, VALUE FROM TABLE_TEST;";
rs = stmt.executeQuery( SQL_SELECT );
while( rs.next() )
{
String name = rs.getString( "NAME" );
int value = rs.getInt( "VALUE" );
System.out.println( name + ", " + value );
}
// ネーム0, 0
// ネーム1, 1
// ネーム2, 2
// ここまでのSQL_CREATE、SQL_INSERT、SQL_SELECTがSQLです。
}
catch( SQLException e )
{
// SQLの実行で問題があった場合に投げられます。
e.printStackTrace();
}
catch( ClassNotFoundException e )
{
// JDBCドライバが存在しなかった場合に投げられます。
e.printStackTrace();
}
finally
{
if( rs != null )
{
try
{
rs.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( stmt != null )
{
try
{
stmt.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( psInsert != null )
{
try
{
psInsert.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( psCreate != null )
{
try
{
psCreate.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( conn != null )
{
try
{
conn.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
}
}
}
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Sample
{
public static void main( String[] args )
{
Connection conn = null;
PreparedStatement psCreate = null;
PreparedStatement psInsert = null;
Statement stmt = null;
ResultSet rs = null;
try
{
// ■JavaA2Z内の、SQL関連のサンプルコードの試し方。
// 1. まず「参考サイト」の「hsqldb」からhsqldb_1_*_*_*.zip(*はバージョン番号)
// をダウンロードして適当な場所に解凍してください。
// 2. 次に、解凍したディレクトリの中のlibディレクトリ内のhsqldb.jarに
// クラスパスを通してください。Eclipseであれば、プロジェクトのプロパティの
// 「Java のビルド・パス」-「ライブラリー」で「外部 JAR の追加」で
// hsqldb.jarを選択してください。
// 3. 以上で準備は完了です。以下のサンプルコードが試せることを
// 確認してください。
// まずJDBCドライバを読み込みます。
Class.forName( "org.hsqldb.jdbcDriver" );
// JDBCに接続してコネクションを取得します。
String url = "jdbc:hsqldb:mem:aname";
String user = "sa";
String password = "";
conn = DriverManager.getConnection( url, user, password );
// テスト用テーブルを作ります。
psCreate = null;
final String SQL_CREATE = "CREATE TABLE TABLE_TEST( NAME VARCHAR, VALUE INT );";
psCreate = conn.prepareStatement( SQL_CREATE );
psCreate.execute();
// そのテーブルに3行INSERTします。
final String SQL_INSERT = "INSERT INTO TABLE_TEST VALUES( ?, ? );";
psInsert = conn.prepareStatement( SQL_INSERT );
for( int iF1 = 0; iF1 < 3; ++iF1 )
{
psInsert.setString( 1, "ネーム" + iF1 );
psInsert.setInt( 2, iF1 );
psInsert.execute();
}
// INSERTしたデータをSELECTでクエリーします。
stmt = conn.createStatement();
final String SQL_SELECT = "SELECT NAME, VALUE FROM TABLE_TEST;";
rs = stmt.executeQuery( SQL_SELECT );
while( rs.next() )
{
String name = rs.getString( "NAME" );
int value = rs.getInt( "VALUE" );
System.out.println( name + ", " + value );
}
// ネーム0, 0
// ネーム1, 1
// ネーム2, 2
// ここまでのSQL_CREATE、SQL_INSERT、SQL_SELECTがSQLです。
}
catch( SQLException e )
{
// SQLの実行で問題があった場合に投げられます。
e.printStackTrace();
}
catch( ClassNotFoundException e )
{
// JDBCドライバが存在しなかった場合に投げられます。
e.printStackTrace();
}
finally
{
if( rs != null )
{
try
{
rs.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( stmt != null )
{
try
{
stmt.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( psInsert != null )
{
try
{
psInsert.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( psCreate != null )
{
try
{
psCreate.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( conn != null )
{
try
{
conn.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
}
}
}
// Sample.java import java.sql.DriverManager; import java.sql.Connection; import java.sql.Statement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Sample { public static void main( String[] args ) { Connection conn = null; PreparedStatement psCreate = null; PreparedStatement psInsert = null; Statement stmt = null; ResultSet rs = null; try { // ■JavaA2Z内の、SQL関連のサンプルコードの試し方。 // 1. まず「参考サイト」の「hsqldb」からhsqldb_1_*_*_*.zip(*はバージョン番号) // をダウンロードして適当な場所に解凍してください。 // 2. 次に、解凍したディレクトリの中のlibディレクトリ内のhsqldb.jarに // クラスパスを通してください。Eclipseであれば、プロジェクトのプロパティの // 「Java のビルド・パス」-「ライブラリー」で「外部 JAR の追加」で // hsqldb.jarを選択してください。 // 3. 以上で準備は完了です。以下のサンプルコードが試せることを // 確認してください。 // まずJDBCドライバを読み込みます。 Class.forName( "org.hsqldb.jdbcDriver" ); // JDBCに接続してコネクションを取得します。 String url = "jdbc:hsqldb:mem:aname"; String user = "sa"; String password = ""; conn = DriverManager.getConnection( url, user, password ); // テスト用テーブルを作ります。 psCreate = null; final String SQL_CREATE = "CREATE TABLE TABLE_TEST( NAME VARCHAR, VALUE INT );"; psCreate = conn.prepareStatement( SQL_CREATE ); psCreate.execute(); // そのテーブルに3行INSERTします。 final String SQL_INSERT = "INSERT INTO TABLE_TEST VALUES( ?, ? );"; psInsert = conn.prepareStatement( SQL_INSERT ); for( int iF1 = 0; iF1 < 3; ++iF1 ) { psInsert.setString( 1, "ネーム" + iF1 ); psInsert.setInt( 2, iF1 ); psInsert.execute(); } // INSERTしたデータをSELECTでクエリーします。 stmt = conn.createStatement(); final String SQL_SELECT = "SELECT NAME, VALUE FROM TABLE_TEST;"; rs = stmt.executeQuery( SQL_SELECT ); while( rs.next() ) { String name = rs.getString( "NAME" ); int value = rs.getInt( "VALUE" ); System.out.println( name + ", " + value ); } // ネーム0, 0 // ネーム1, 1 // ネーム2, 2 // ここまでのSQL_CREATE、SQL_INSERT、SQL_SELECTがSQLです。 } catch( SQLException e ) { // SQLの実行で問題があった場合に投げられます。 e.printStackTrace(); } catch( ClassNotFoundException e ) { // JDBCドライバが存在しなかった場合に投げられます。 e.printStackTrace(); } finally { if( rs != null ) { try { rs.close(); } catch( SQLException e ) { // 各close()メソッドからもSQLException例外が // 投げられるので、拾っておきます。 e.printStackTrace(); } } if( stmt != null ) { try { stmt.close(); } catch( SQLException e ) { // 各close()メソッドからもSQLException例外が // 投げられるので、拾っておきます。 e.printStackTrace(); } } if( psInsert != null ) { try { psInsert.close(); } catch( SQLException e ) { // 各close()メソッドからもSQLException例外が // 投げられるので、拾っておきます。 e.printStackTrace(); } } if( psCreate != null ) { try { psCreate.close(); } catch( SQLException e ) { // 各close()メソッドからもSQLException例外が // 投げられるので、拾っておきます。 e.printStackTrace(); } } if( conn != null ) { try { conn.close(); } catch( SQLException e ) { // 各close()メソッドからもSQLException例外が // 投げられるので、拾っておきます。 e.printStackTrace(); } } } } }