毎日約2.5兆バイトのデータが生成される今日の市場では、このような膨大な量のデータを処理する方法を理解することが非常に重要です。さて、ここで構造化クエリ言語またはSQLが登場します。そのため、SQLチュートリアルに関するこの記事では、データベース管理者になるための必需品である次の重要な概念について説明します。
- SQLの概要
- SQLとは何ですか?
- SQLのアプリケーション
- SQLデータ型
- SQL演算子
- 上位のSQLコマンド
- 作成
- ドロップ
- 後
- 切り捨て
- 説明
- 挿入
- 更新
- SELECT
- いいね
- 許可
- データベースのキー
- SQLの制約
- 正規化
- SQL結合
- ビュー
SQLチュートリアル:SQLの概要
SQLとは何ですか?
1970年代にDonaldD.Chamberlinによって開発された、構造化クエリ言語または最も一般的にSQLとして知られている言語は、データの操作、保存、更新、取得に使用される最も一般的な言語の1つです。リレーショナルデータベース。 SQLは、データベース内のデータを操作するために、DDL、DML、DCL、およびTCLの4つのカテゴリに分類されたさまざまなコマンドで構成されています。また、MySQLデータベース、Oracle、MS SQL Server、Sybaseなどのリレーショナルデータベースは、SQLを使用してデータを変更します。
SQLのアプリケーション
SQLのアプリケーションは次のとおりです。
- SQLを使用すると、テーブルとデータベースを作成および削除できます。
- これにより、ユーザーはデータベース内のデータを定義および操作できます。
- SQLを使用すると、ユーザーはRDBMSのデータにアクセス、変更、および記述できます。
- SQLを使用すると、テーブル、ビュー、プロシージャに権限を設定し、さまざまなユーザーに特定の権限を付与できます。
- SQLを使用すると、SQLライブラリとモジュールを使用して他の言語に埋め込むことができます。
SQLの基本がわかったので、次のSQLチュートリアルでは、さまざまなSQLデータ型について理解しましょう。
SQLデータ型
SQLデータ型は次のカテゴリに分類されます:
- 数値 –数値データ型では、符号付き整数と符号なし整数の両方を使用できます。これらはさらに、正確なデータ型と近似データ型に分けることができます。ここで、exactは整数の形式の整数を許可し、approxは浮動整数を許可します。
- 文字列 –このデータ型では、固定長および可変長の文字を使用できます。このデータ型は、Unicode文字にさらに分類することもできます。これにより、固定長および可変長のUnicode文字が可能になります。
- バイナリ –バイナリデータ型を使用すると、固定長および可変長のデータをバイナリ値の形式で保存できます。
- 日付と時刻 –このデータ型を使用すると、データをさまざまな形式の日付と時刻で保存できます。
- その他 –データ型のこのセクションには、テーブル、XML、カーソル、uniqueidentifier、sql_variantなどのデータ型があります。
さまざまなSQLデータ型について詳細に理解したい場合は、SQLデータ型に関する詳細なガイドを参照してください。
SQL演算子
演算子は、オペランドの値を操作できる構造です。式4+6 =10について考えてみます。ここで、4と6はオペランドであり、+は演算子と呼ばれます。
SQLは、次のタイプの演算子をサポートしています。
- 算術演算子
- ビット演算子
- 演算子の比較
- 複合演算子
- 論理演算子
SQLでサポートされているさまざまな演算子を詳しく知るには、ここをクリックしてください。では、SQLとその基本について理解したところで、SQLの主要なコマンドまたはステートメントについて理解しましょう。
SQLチュートリアル:上位のSQLコマンド
SQLは、データベース内のデータを追加、変更、削除、または更新するためのさまざまなコマンドまたはステートメントで構成されています。 SQLチュートリアルに関するこの記事では、次のステートメントについて説明します。
-
- 作成
- ドロップ
- 後
- 切り捨て
- 説明
- 挿入
- 更新
- SELECT
- いいね
- 許可
このSQLチュートリアルでは、以下のデータベースを例として検討し、これらのSQLコマンドを使用してクエリを作成する方法を示します。
CustomerID | CustomerName | PhoneNumber | 住所 | 都市 | 国 |
1 | Simon | 9876543210 | Donald Street 52 | ハイデラバード | インド |
2 | Akash | 9955449922 | Queens Road 74 | ムンバイ | インド |
3 | パトリック | 9955888220 | シルクボード82 | デリー | インド |
4 | 同じ | 9647974327 | IG Road 19 | ハイデラバード | インド |
5 | ジョン | 9674325689 | Brigade Road Block 9 | バンガロール | インド |
作成
CREATEステートメントは、次の方法でテーブル、ビュー、またはデータベースを作成するために使用されます。
データベースの作成
データベースの作成に使用されます。
構文
CREATE DATABASE DatabaseName;
例
CREATE DATABASE CustomerInfo;
テーブルを作成
このステートメントは、テーブルを作成するために使用されます。
構文
CREATE TABLE TableName ( Column1 data type, Column2 data type, .... ColumnN data type );
例
CREATE TABLE Customers ( CustomerID int, CustomerName varchar(255), PhoneNumber int, Address varchar(255), City varchar(255), Country varchar(255) );
作成ビュー
ビューの作成に使用されます。
構文
CREATE VIEW OR REPLACE ViewName AS SELECT Column1, Column2, ..., ColumnN FROM TableName WHERE Condition;
例
CREATE VIEW OR REPLACE HydCustomers AS SELECT CustomerName, PhoneNumber FROM Customers WHERE City = "Hyderabad";
注: テーブルの作成と値の入力を開始する前に、USEステートメントを[ USE CustomersInfo; ]として使用して、データベースを使用する必要があります。 ]
ドロップ
DROPステートメントは、既存のテーブル、ビュー、またはデータベースを削除するために使用されます。
データベースの削除
データベースを削除するために使用されます。このステートメントを使用すると、データベースに存在する完全な情報が失われます。
構文
DROP DATABASE DatabaseName;
例
DROP DATABASE CustomerInfo;
ドロップテーブル
テーブルを削除するために使用されます。このステートメントを使用すると、表にある完全な情報が失われます。
構文
DROP TABLE TableName;
例
DROP TABLE Customers;
ドロップビュー
ビューを削除するために使用されます。このステートメントを使用すると、ビューに表示されている完全な情報が失われます。
構文
DROP VIEW ViewName;
例
DROP VIEW HydCustomers;
後
ALTERステートメントは、既存のテーブルの制約または列を追加、削除、または変更するために使用されます。
代替テーブル
ALTERステートメントは、既存のテーブルの列を削除、追加、変更するために使用されます。 ADD /DROP列でALTERTABLEを使用して、テーブルに列を追加または削除できます。これとは別に、特定の列をALTER/MODIFYすることもできます。
構文
ALTER TABLE TableName ADD ColumnName Data Type; ALTER TABLE TableName DROP COLUMN ColumnName; ALTER TABLE TableName ALTER COLUMN ColumnName Data Type;
例
--ADD Column Gender: ALTER TABLE Customers ADD Gender varchar(255); --DROP Column Gender: ALTER TABLE Customers DROP COLUMN Gender ; --Add a column DOB and change the data type from Date to Year. ALTER TABLE DOB ADD DOB date; ALTER TABLE DOB ALTER DOB year;
切り捨て
TRUNCATEステートメントは、テーブル自体ではなく、テーブルに存在する情報を削除するために使用されます。したがって、このコマンドを使用すると、情報は失われますが、テーブルはデータベースに存在しません。
構文
TRUNCATE TABLE TableName;
例
TRUNCATE Table Customers;
説明
EXPLAINステートメントとDESCRIBEステートメントは、それぞれクエリ実行プランとテーブル構造に関する情報を取得するために使用される同義語です。このステートメントは、INSERT、DELETE、SELECT、UPDATE、およびREPLACEステートメントで使用できます。
構文
--Syntax for DESCRIBE DESCRIBE TableName; --Sample syntax for EXPLAIN EXPLAIN ANALYZE SELECT * FROM TableName1 JOIN TableName2 ON (TableName1.ColumnName1 = TableName2.ColumnName2);の構文例
例
DESCRIBE Customers; EXPLAIN ANALYZE SELECT * FROM Customers1 JOIN Orders ON (Customers.CustomerID = Orders.CustomerID);
INSERT INTO
INSERT INTOステートメントは、新しいレコードをテーブルに挿入するために使用されます。
構文
INSERT INTO TableName (Column1, Column2, Column3, ...,ColumnN) VALUES (value1, value2, value3, ...); --If you do not want to mention the column names then use the below syntax, but the order of values entered should match the column data types : INSERT INTO TableName VALUES (Value1, Value2, Value3, ...);
例
INSERT INTO Customers(CustomerID, CustomerName, PhoneNumber, Address, City, Country) VALUES ('06', 'Sanjana', '9654323491', 'Oxford Street House No 10', 'Bengaluru', 'India'); INSERT INTO Customers VALUES ('07', 'Himani','9858018368', 'Nice Road 42', 'Kolkata', 'India');
更新
UPDATEステートメントは、テーブルにすでに存在するレコードを変更するために使用されます。
構文
UPDATE TableName SET Column1 = Value1, Column2 = Value2, ... WHERE Condition;
例
UPDATE Customers SET CustomerName = 'Aisha', City= 'Kolkata' WHERE EmployeeID = 2;
選択
SELECTステートメントは、データベースからデータを選択し、それを result-setと呼ばれる結果テーブルに格納するために使用されます。 。
構文
SELECT Column1, Column2, ...ColumN FROM TableName; --(*) is used to select all from the table SELECT * FROM table_name; -- To select the number of records to return use: SELECT TOP 3 * FROM TableName;
例
SELECT CustomerID, CustomerName FROM Customers; --(*) is used to select all from the table SELECT * FROM Customers; -- To select the number of records to return use: SELECT TOP 3 * FROM Customers;
これとは別に、SELECTキーワードをDISTINCT、ORDER BY、GROUP BY、HAVING句、およびINTOで使用できます。
いいね
この演算子は、テーブルの列で指定されたパターンを検索するためにWHERE句とともに使用されます。 LIKE演算子と組み合わせて使用されるワイルドカードは主に2つあります。
- % –0個以上の文字に一致します。
- _ –正確に1文字に一致します。
構文
SELECT ColumnName(s) FROM TableName WHERE ColumnName LIKE pattern;
例
SELECT * FROM Customers WHERE CustomerName LIKE 'S%';
許可
GRANTコマンドは、データベースとそのオブジェクトに対する特権またはアクセスをユーザーに提供するために使用されます。
構文
GRANT PrivilegeName ON ObjectName TO {UserName |PUBLIC |RoleName} [WITH GRANT OPTION];
where、
- PrivilegeName –ユーザーに付与された特権/権利/アクセス。
- ObjectName – TABLE / VIEW /STOREDPROCなどのデータベースオブジェクトの名前。
- ユーザー名 –アクセス権/権利/特権を与えられたユーザーの名前。
- 公開 –すべてのユーザーにアクセス権を付与するため。
- RoleName –グループ化された一連の特権の名前。
- 付与オプション付き –他のユーザーに権限を付与するためのアクセス権をユーザーに付与するため。
例
-- To grant SELECT permission to Customers table to admin GRANT SELECT ON Customers TO admin;
これで、上位のSQLコマンドがわかったので、データベースで使用されるさまざまなタイプのキーについて理解しましょう。この概念は、リレーショナルデータベース管理システムで各テーブルが他のテーブルとどのように関連しているかを理解するのに役立ちます。
SQLチュートリアル:キー
データベースで検討できる7種類のキーは次のとおりです。
- 候補キー– テーブルを一意に識別できる属性のセットは、候補キーと呼ばれます。テーブルには複数の候補キーを含めることができ、選択した候補キーのうち、1つのキーを主キーとして選択できます。
- スーパーキー– タプルを一意に識別できる属性のセットは、スーパーキーと呼ばれます。したがって、候補キー、主キー、および一意キーはスーパーキーですが、その逆は当てはまりません。
- 主キー– すべてのタプルを一意に識別するために使用される一連の属性も主キーです。
- 代替キー– 代替キーは候補キーであり、主キーとして選択されていません。
- 一意キー– 一意キーは主キーに似ていますが、列に1つのNULL値を許可します。
- 外部キー– 他の属性の値として存在する値のみをとることができる属性は、それが参照する属性への外部キーです。
- 複合キー– 複合キーは、各タプルを一意に識別する2つ以上の列の組み合わせです。
データベース内のさまざまなタイプのキーについて理解していただければ幸いです。次のSQLチュートリアルに関するこの記事では、データベース内の制約について説明します。 SQL制約は、テーブルを介してデータベースに入力されるデータの精度と信頼性を高めるために使用されます。
SQLチュートリアル: 制約
SQL制約により、データのトランザクションに関して違反がないことが確認され、見つかった場合、アクションは終了します。次の制約の主な用途は、テーブルに入れることができるデータのタイプを制限することです。
- NOT NULL –この制約は、列がNULL値を格納できないようにするために使用されます。
- UNIQUE – UNIQUE制約は、列またはテーブルに入力されたすべての値が一意であることを確認するために使用されます。
- チェック –この制約は、1つまたは複数の列が特定の条件を満たすことを確認するために使用されます。
- デフォルト – DEFAULT制約は、値が指定されていない場合に列のデフォルト値を設定するために使用されます。
- インデックス –この制約は、テーブル内のインデックスに使用されます。これにより、データベースからデータを非常に迅速に作成および取得できます。
構文と例を使用して次の制約について詳しく知りたい場合は、SQLに関する他の記事を参照してください。それでは、データベースのキーと制約について説明したので、次のSQLチュートリアルに関するこの記事では、興味深い概念の正規化を見てみましょう。
SQLチュートリアル:正規化
正規化は、重複や冗長性を回避するためにデータを整理するプロセスです。正規化には多くの連続したレベルがあり、それらは正規形と呼ばれます。 。また、連続する各通常の形式は、前の形式に依存します。存在する正規形は次のとおりです。
上記の正規形を理解するために、次の表を検討してみましょう。
上記の表を確認することで、データの冗長性とデータの重複を明確に把握できます。それでは、このテーブルを正規化しましょう。データベースの正規化を開始するには、常に最も低い正規形、つまり1NFから始めて、最終的にはより高い正規形に進む必要があります。
次に、上記の表の最初の正規形を実行する方法を見てみましょう。
第一正規形(1NF)
データベースが1NFである必要があることを確認するには 、各テーブルセルには単一の値が必要です。したがって、基本的にすべてのレコードは一意である必要があります 。上記の表は、次のように1NFに正規化されます。
上記の表を見ると、すべてのレコードが一意です。しかし、それでも多くのデータの冗長性と重複があります。したがって、それを回避するために、データベースを第2正規形に正規化しましょう。
第2正規形(2NF)
データベースが 2NFである必要があることを確認するには 、データベースは1NFである必要があります また、単一列の主キーが必要です 。上記の表は、以下のように2NFに正規化されます。
上記の表を確認すると、各表には単一列の主キーがあります。しかし、多くのデータの冗長性といくつかの列の重複があります。それを避けるために、データベースを第3正規形に正規化しましょう。
第3正規形(3NF)
データベースが 3NFである必要があることを確認するには 、データベースは2NFにある必要があります および推移的な機能依存性があってはなりません 。上記の表は、以下のように3NFに正規化されます。
上記の表を確認すると、データベースには推移的な依存関係はありません。したがって、このステップの後、データベースをさらに正規化する必要はありません。ただし、異常が存在するか、複数の候補キーが存在する場合は、次に高い正規形、つまりBCNFに進むことができます。
Boyce-Codd Normal Form(BCNF)
データベースがBCNFにあることを確認するには、データベースが3NFに存在し、テーブルをさらに分割して、候補キーが1つだけ存在するようにする必要があります。
>これで、正規化は終了します。次に、このSQLチュートリアルでは、SQLの重要な概念である結合について説明します。
SQLチュートリアル:結合
結合は、2つ以上のテーブル間の関連する列に基づいて、またいくつかの条件に基づいて、2つ以上のテーブルの行を結合するために使用されます。結合には主に4つのタイプがあります:
- 内部結合: この結合により、両方のテーブルで値が一致するレコードが返されます。
- 完全参加: FULL JOINは、左側または右側のテーブルに一致するすべてのレコードを返します。
- LEFT JOIN: この結合は、左側のテーブルのレコードと、右側のテーブルの条件を満たすレコードを返します。
- 正しい参加: この結合は、右側のテーブルのレコードと、左側のテーブルの条件を満たすレコードを返します。
つまり、これはJOINSの簡単な説明でしたが、詳細な例を含むJOINSの詳細な説明が必要な場合は、SQLJOINSに関する私の記事を参照してください。次に、このSQLチュートリアルでは、この記事の最後の概念、つまりビューについて説明します。
SQLチュートリアル:ビュー
SQLのビューは、他のテーブルから派生した単一のテーブルです。ビューには、実際のテーブルと同様の行と列が含まれ、1つ以上のテーブルのフィールドがあります。下の画像を参照してください:
ビューを作成および削除する方法を理解するには、上記のCREATEステートメントとDROPステートメントを参照してください。これで、SQLチュートリアルに関するこの記事は終わりです。この記事がお役に立てば幸いです。また、データベース管理者の面接の準備をしていて、質問の包括的なリストを検索している場合は、SQL面接の質問に関する記事を参照してください。
MySQLについて詳しく知り、このオープンソースのリレーショナルデータベースについて知りたい場合は、インストラクター主導のライブトレーニングと実際のトレーニングが付属するMySQLDBA認定トレーニングを確認してください。 -ライフプロジェクトの経験。このトレーニングは、MySQLを深く理解し、主題をマスターするのに役立ちます。
質問がありますか?このSQLTutorialのコメントセクションにその旨を記載してください。折り返しご連絡いたします。