SQLとは
えすきゅーえる
関係データベースで、表の定義、データの検索・追加・更新・削除、権限の制御などを行うための標準の言語。ISO/IECとJISで規格化されている。SELECT、INSERT、UPDATE、DELETE、CREATE TABLE、GRANTなどの文がある。
「SQL」は、3分野の15問の練習問題に出てきます(データベースの基礎, 情報セキュリティの基礎, LSI設計フロー・EDAなど)。
この用語の分野: データベースの基礎
えすきゅーえる
関係データベースで、表の定義、データの検索・追加・更新・削除、権限の制御などを行うための標準の言語。ISO/IECとJISで規格化されている。SELECT、INSERT、UPDATE、DELETE、CREATE TABLE、GRANTなどの文がある。
「SQL」は、3分野の15問の練習問題に出てきます(データベースの基礎, 情報セキュリティの基礎, LSI設計フロー・EDAなど)。
この用語の分野: データベースの基礎
SQLの文は、役割によって大きく3つに分けられます。データ定義言語(DDL)は、CREATE、ALTER、DROPのように、表やビュー、インデックスなどの構造を定義します。データ操作言語(DML)は、SELECT、INSERT、UPDATE、DELETEのように、表の中のデータを扱います。データ制御言語(DCL)は、GRANTやREVOKEのように権限を制御します。トランザクションを確定するCOMMITや取り消すROLLBACKは、DCLに含めることも、トランザクション制御文として別に分けることもあります。
SELECT文は、SELECT 列 FROM 表 WHERE 条件 GROUP BY 列 HAVING 条件 ORDER BY 列 のように句を並べて書きます。書く順番とは異なり、処理は FROM(表を決め、結合する)、WHERE(行を選ぶ)、GROUP BY(グループにまとめる)、HAVING(グループを選ぶ)、SELECT(列を取り出し、集約関数を計算する)、ORDER BY(並べ替える)の順と考えると理解しやすくなります。WHEREに集約関数を書けず、グループの条件をHAVINGに書くのはこのためです。
SQLは、どんな結果がほしいかを書く宣言的な言語で、結果を得るための手順はDBMSのオプティマイザが決めます。値が未知であることを表すNULLの扱いには注意が必要です。NULLとの比較は真にも偽にもならず(不明)、= NULL ではなく IS NULL で調べます。SUMやAVGなどの集約関数はNULLを無視し、COUNT(*)は行の数を、COUNT(列)はその列がNULLでない行の数を数えます。
正解:B. CREATE TABLE 部署 (部署ID INTEGER PRIMARY KEY, 部署名 CHAR(10))
DDL(Data Definition Language)は、表やビュー、インデックスといったデータベースの構造を定義する文で、CREATE、ALTER、DROPがあります。DML(Data Manipulation Language)は、表の中のデータを扱う文で、SELECT、INSERT、UPDATE、DELETEがあります。DCL(Data Control Language)は、権限などを制御する文で、利用者に権限を与えるGRANT、権限を取り消すREVOKEがあります。トランザクションを確定するCOMMITや取り消すROLLBACKは、DCLに含めることも、トランザクション制御文として別に分けることもあります。選択肢のうち、表を作るCREATE TABLEがDDLです。
正解:A. 社員表のすべての行が削除され、空の表が残る
DELETEは、表から行を削除するDMLの文です。WHERE句で条件を付けるとその条件に合う行だけが削除されますが、WHERE句を省略すると、すべての行が削除の対象になります。DELETEで行がなくなっても、表の定義(列の名前や型、制約)は残るので、その後もINSERTで行を追加できます。表そのものを定義ごと削除するのは、DDLの DROP TABLE 社員 です。UPDATEも同じで、WHERE句を付け忘れるとすべての行が書き換わるので、実行する前に条件を確かめることが大切です。トランザクションの中であれば、COMMITする前にROLLBACKで取り消せます。
WHERE句は、グループにまとめる前の1行ずつに対する条件で、集約関数は書けません。HAVING句は、GROUP BYでまとめたあとのグループに対する条件で、HAVING SUM(金額) >= 1000 のように集約関数を使えます。
WHERE 列 IS NULL と書きます。WHERE 列 = NULL は、NULLとの比較が真にならないので、1行も選ばれません。NULLでない行は IS NOT NULL で選びます。
SQLの処理は、FROMの表から WHERE で行を選び、GROUP BY でグループにまとめ、HAVING でグループを選ぶ、という順に考えます。
社員表(社員番号, 部署, 給与)から、部署ごとの平均給与が300以上の部署と、その平均給与を求めたい。正しいSQL文…SQLの標準規格は、分離レベルを、防ぐ現象の少ない順に READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE の4つと定めています。
SQLの標準規格が定める分離レベルのうち、READ COMMITTED で起こりうる現象の組み合わせとして正しいものは…HTMLはWebページの記述言語、SQLはデータベースの問い合わせ言語で、回路は記述できません。
RTL設計で主に使われるハードウェア記述言語はどれか。SQLインジェクションは、Webアプリケーションが、利用者の入力をそのまま文字列としてつなげてデータベースへの命令(SQL文)を組み立てていることを悪用する攻撃です。
ログインの画面で、パスワードの欄に ' OR '1'='1 のような文字列を入力されると、パスワードを知らなくてもログ…AND password = ?」のように、値の部分を記号(プレースホルダ)にしたSQL文をデータベースに渡して構造を確定させ、そのあとで入力を値としてだけ結び付けます(バインド)。
SQLインジェクションへの対策として、プレースホルダを使うプリペアドステートメント(パラメータ化クエリ)が、入力の中の…Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。
トランザクション 分離レベル 主キー SQLインジェクション 関係データベース ビュー インデックス RTL(レジスタ転送レベル) ハードウェア記述言語 Verilog