sql >> データベース >  >> RDS >> SQLite

SQLiteチュートリアル:知っておくべきことすべて

    リレーショナルデータベースシステムを使用したことがある場合は、MySQL、SQL Server、PostgreSQLなどの一般的なデータベースシステムについて聞いたことがあると思います。 SQLiteは、セットアップと操作が非常に簡単なもう1つの非常に便利なRDBMSです。また、他のリレーショナルデータベースに比べて多くの異なる機能があります。このSQLiteチュートリアルでは、広範な実践的な実践の助けを借りて知っておく必要のある基本的な概念を学びます。

    この記事で説明するトピックは次のとおりです。

    • SQLiteとは何ですか?
      • SQLiteの機能
    • WindowsへのSQLiteのインストール
    • SQLiteコマンド
      • データベースコマンド
      • テーブルコマンド
      • CRUD操作
      • SQLiteの句/条件
      • SQLiteに参加する
    • SQLiteのデメリット

    SQLiteチュートリアル:SQLiteとは何ですか?

    SQLiteの業界標準の定義は次のとおりです。

    SQLiteは、アプリケーションに組み込むように設計された、オープンソースのゼロ構成の自己完結型のスタンドアロンのトランザクションリレーショナルデータベースエンジンです。

    SQLiteを検討できます 「ライター」として 」他の複雑なRDBMS(Oracle、SQLなど)のバージョン。データベースエンジンは独立した処理(インプロセスライブラリ)用に構成されています。 つまり、 サーバーレス、自己完結型、ゼロ構成、トランザクション型 。移植性、信頼性、および低メモリ環境でも強力なパフォーマンスで知られています。また、SQLiteは、クライアントサーバーDBエンジンが構成されている他のRDBMSとは異なり、エンドプログラムまたはアプリケーションのローカル/クライアントストレージ用の組み込みデータベースとして人気があります。

    SQLiteの機能

    SQLiteは、次のような多くの異なる機能を提供します:

    • サーバーレス: ほとんどのSQLデータベースは個別のサーバープロセスとして実装されていますが、SQLiteには個別のサーバープロセスがありません。サーバーレスデータベースエンジンです。通常のディスクファイルを直接読み書きします。
    • ゼロ構成: 実行するための構成は必要ありません。つまり、クライアント/サーバーシステムのように、開始、停止、または構成する必要のあるサーバープロセスはありません。
    • マニフェストの入力: SQLiteはマニフェスト型付けを使用します。これにより、列の宣言されたデータ型に関係なく、任意の量の任意のデータ型を任意の列に格納できます。この規則には特定の例外があることに注意してください。
    • 軽量: 名前が示すように、SQLiteライブラリは非常に軽量です。使用するスペースは、インストールされているシステムによって異なりますが、600KiB未満のスペースしか使用できません。
    • ポータブル: 他のDBMSとは異なり、SQLiteデータベース全体が1つのファイルに保存されます。このファイルは、リムーバブルメディアまたはファイル転送プロトコルを介して非常に簡単に共有できます。
    • 多様な選択肢: C、C ++、C#、Java、JavaScript、Ruby、Pythonなど、多くのプログラミング言語がSQLiteのバインディングを提供します。
    • 無料: SQLiteは無料でオープンソースです。 SQLiteを使用するには、商用ライセンスは必要ありません。

    上記のように、SQLiteはゼロ構成で知られているため、複雑なセットアップや管理は実際には必要ありません。このSQLiteチュートリアルの次のパートでは、システムにSQLiteをインストールする方法を見てみましょう。

    SQLiteチュートリアル:WindowsへのSQLiteのインストール

    従う手順は次のとおりです。

    ステップ1: SQLiteの公式Webサイトにアクセスし、適切なリンクをクリックして、コンパイル済みのバイナリをダウンロードします。

    ステップ2: SQLiteコマンドラインzipファイルをダウンロードします(ここ: sqlite-tools-win32-x86-3270200.zip) 選択したフォルダでこれらのファイルを展開します。

    このSQLiteコマンドラインツールには、次のSQLite製品が含まれます

    • SQLiteコア :SQLiteコアには、実際のデータベースエンジンとパブリックAPIが含まれています。
    • SQLite3コマンドラインツール :sqlite3アプリケーションは、SQLiteコアの上に構築されたコマンドラインツールです。
    • Tcl拡張機能 :このライブラリは基本的に、Tclバインディングが追加されたSQLiteコアのコピーです。
    • SQLiteアナライザーツール :SQLiteアナライザツールはデータベースファイルの分析に使用されます。

    ステップ3: その後、SQLiteコマンドラインを開始するのは、sqlite3アプリケーションをクリックするのと同じくらい簡単です。これにより、コマンドラインがポップアップ表示されます。

    さらにテストする場合は、 .helpと入力するだけです。 sqlite>からのコマンド sqlite3で使用可能なすべてのコマンドを表示するように求めるプロンプトが表示されます 以下のように。

    注: デフォルトでは、SQLiteセッションはインメモリデータベースを使用するため、セッションが終了するとすべての変更が失われます。

    簡単ですね。次に、SQLiteコマンドを使い始めましょう。

    SQLiteチュートリアル:SQLiteコマンド

    SQLiteチュートリアルのこのセクションでは、SQLiteで使用できる基本的なSQLステートメントを紹介します。

    注: SQLiteコマンドはセミコロン(;)で終わります )。コマンドが完了し、実行する必要があることをSQLiteに通知します。また、コマンドを複数の行に広げて、最後の行でセミコロンを使用することもできます。

    データベースコマンド

    このセクションは、データベースを処理するためのコマンドで構成されています。コマンドは次のとおりです。

    • SQLiteデータベースの作成

    SQLiteは、MySQL、SQL Serverなどの他のリレーショナルデータベース管理システムのようにCREATEDATABASEステートメントを使用しません。SQLiteで新しいデータベースを作成するには、次のようにsqlite3と入力します。データベースに使用するファイルの名前。次のコードは、 StudentDetails.db: というデータベースファイルを作成します。

    sqlite3 StudentDetails.db;
    
    sqlite> .databases 
    main: D:sqliteStudentDetails.db;
    
    • SQLiteAttachデータベース

    複数のデータベースがある場合、一度に使用できるのは1つだけです。 SQLiteでは、ATTACH DATABASEステートメントを使用して、現在の接続用に特定のデータベースを接続します。このコマンドの後、すべてのSQLiteステートメントは接続されたデータベースの下で実行されます。

     sqlite> ATTACH DATABASE 'DepartmentDetails.db' AS 'Department';
    
    sqlite> .databases
    main: D:sqliteStudentDetails.db;
    Department: D:sqliteDepartmentDetails.db
    • SQLiteデタッチデータベース

    SQLiteでは、DETACH DATABASEステートメントを使用して、ATTACHステートメントを使用して以前に接続されたデータベース接続からエイリアス名のデータベースを切り離します。同じデータベースファイルが複数のエイリアスで添付されている場合、このコマンドは指定された名前のみを切断し、残りの添付ファイルは引き続き存在します。インメモリデータベースまたは一時データベース内のデータベースは完全に破棄され、コンテンツは失われます。

    sqlite> .databases
    main: D:sqliteStudentDetails.db;
    Department: D:sqliteDepartmentDetails.db
    Student: D:sqliteStudentDetails.db
    DeptInformation: D:sqliteDepartmentDetails.db
    
    sqlite> DETACH DATABASE 'Department';
    
    sqlite> .databases
    main: D:sqliteStudentDetails.db;
    Student: D:sqliteStudentDetails.db
    DeptInformation: D:sqliteDepartmentDetails.db
    
    

    テーブルコマンド

    ここでは、SQLiteを使用するときにテーブルを処理する方法を学習します。

    • SQL作成テーブル

    SQLiteでは、CREATETABLEステートメントを使用して新しいテーブルを作成します。テーブルを作成するときに、テーブルに名前を付け、その列と各列のデータ型を定義する必要があります。

    構文:

    CREATE TABLE table_name(
             Column1 column_type [constraints]
             Column2 column_type [constraints]
             [.....]
              );

    
    CREATE TABLE StudentInfo(
    ID INT PRIMARY KEY NOT NULL,
    NAME TEXT NOT NULL,
    AGE INT NOT NULL,
    ADDRESS CHAR(50),
    DEPARTMENTID INTEGER NOT NULL,
    PHONE TEXT DEFAULT 'UNKNOWN',
    FOREIGN KEY(DEPARTMENTID) REFERENCES DepartmentInfo(DeptID)
    ); 

    テーブルが作成されたかどうかは、 .tablesを使用して確認できます。 以下に示すようなコマンド。 DepartmentInfoというテーブルをすでに作成していることに注意してください ここで、DeptIDは主キーです。 Departmentsテーブルには、Studentsテーブルに対する外部キー制約があります。

     
    
    sqlite> .tables
    StudentInfo Contacts Emp_Master
    
    
    • SQLiteドロップテーブル

    SQLiteでは、DROP TABLEステートメントを使用して、SQLiteデータベースからテーブルを削除または削除できます。テーブルが削除されると、テーブルに含まれるすべてのデータがデータベースから完全に削除されます。関連するインデックスとトリガーもすべて削除されます。そのテーブルで有効になっている外部キー制約がある場合、それはテーブルの各行に対して同等に削除され、テーブルに関連付けられているトリガーもすべて削除されます。

    構文

    DROP TABLE [ IF EXISTS ] table_name;

     DROP TABLE Department;
    Error: no such table: Department
    
    DROP TABLE Company;
    sqlite> .tables
    StudentInfo

    注: IF EXISTSは、オプションの句です。指定した場合、テーブルの1つが存在しない場合、DROPTABLEステートメントはエラーを発生させません。

    また、 SQLiteAlterTableステートメントがあります 、この記事の次のいくつかのセクションで理解します。テーブルを作成したので、データの挿入、削除、変更の方法を確認しましょう。

    SQLiteチュートリアル:CRUD操作

    • SQLite挿入クエリ

    テーブルを作成した後、SQLite Insert Intoコマンドを使用して、指定したテーブルに新しい行を作成できます。 SQLite挿入ステートメントには2つの意味のある形式があります。最初のフォームは、VALUES句を使用して、挿入する値のリストを指定します。

    構文

    
    INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
    VALUES (value1, value2, value3,...valueN);
    
    

    INSERT INTO StudentInfo ( ID, NAME, AGE, ADDRESS, DEPARTMENTID, PHONE)
    VALUES (1,'Dean', 20, 'California', 2, '934*******');
    >

    出力

    SELECT *from StudentInfo;
    ID          NAME        AGE         ADDRESS     DEPARTMENTID  PHONE
    ----------  ----------  ----------  ----------  ----------  ----------
    1           Dean        20          California  2  934*******

    ここでは、1つの新しい行が作成され、各値がそれぞれの列に記録されます。両方のリストに同じが必要であることに注意してください アイテムの数。ここでは、列のリスト オプションです。 列のリストを指定せずにテーブルにデータを挿入することもできます

    INSERT INTO StudentInfo 
    VALUES ( 2, 'SAM', 22, 'Texas', 2, '976*******');

    出力

     SELECT *from StudentInfo;
    ID          NAME        AGE         ADDRESS     DEPARTMENTID  PHONE
    ----------  ----------  ----------  ----------  ----------  ----------
    1           Dean        20          California  2  934*******
    2           SAM         22          Texas        2  976*******
    

    SQLiteには、複数の行を挿入する機能もあります。 単一のINSERTステートメントで。構文は次のとおりです。

    INSERT INTO StudentInfo
    VALUES (3,'John',23,'Norway',1,'923*******'),
    (4,'Mitch',22,'Houston',3,'934*******');

    出力

     Select *from StudentInfo;
    1|Dean|20|California|2|934*******
    2|SAM|22|Texas|2|976*******
    3|John|23|Norway|1|923*******
    4|Mitch|22|Houston|3|934*******

    ご覧のとおり、出力の形式は以前のものとまったく同じではありません。では、SQLiteの出力形式をどのように変更しますか?結果が少し読みやすくなるように、出力をフォーマットしてみましょう。

    • フォーマット

    。modeを使用して出力モードを変更できます。上記の例では、 .modeを使用しています リスト。結果をリストとして表示します。また、 .headersを使用することもできます 列ヘッダーを表示するかどうかを指定するステートメント。変更を加えたら、 .showを使用して設定を表示できます コマンド。

     sqlite>.mode 'column'
    sqlite> .headers on
    sqlite> .show
    echo: off
    eqp: off
    explain: auto
    headers: on
    mode: column
    nullvalue: ""
    output: stdout
    colseparator: "|"
    rowseparator: "n"
    stats: off
    width:
    filename: StudentDetails.db

    出力

     SELECT *FROM StudentInfo;
    
    ID NAME AGE ADDRESS DEPARTMENT PHONE
    ---------- ---------- ---------- ---------- ---------- ----------
    1 Dean 20 California 2 934*******
    2 SAM 22 Texas 2 976*******
    3 John 23 Norway 1 923*******
    4 Mitch 22 Houston 3 934*******
    • SQLite Select Query

    SQLiteでは、Selectステートメントを使用してテーブルからデータをフェッチし、結果テーブルの形式でデータを返します。これらの結果テーブルは、結果セットとも呼ばれます。 SQLite selectステートメントを使用すると、要件に基づいて簡単な計算または複数の式を実行できます。以前、データを挿入したときにSELECTステートメントを使用しました。

    構文

    SELECT [ALL | DISTINCT] result [FROM table-list]
    [WHERE expr]
    • DISTINCT – selectステートメントでdistinctキーワードを使用すると、データの個別の行のみが返されます。
    • すべて – selectステートメントでALLキーワードを使用すると、重複している場合でもデータのすべての行が返されます。
    • FROMテーブルリスト –データを取得するテーブルのリストです。
    • どこで表現するか – WHERE式は、テーブルから必要なデータを取得するためのカスタム条件を定義するために使用されます。

    例1

     SELECT ID, NAME FROM StudentInfo WHERE AGE < 21;

    出力

    ID NAME
    ---------- ----------
    1 Dean

    例2

    Select NAME FROM StudentInfo WHERE DEPARTMENTID
    = (SELECT DeptID FROM DepartmentInfo WHERE DeptName = 'Psychology');

    出力

    //fetches people from department whose id is 2
    
    NAME
    ----------
    Dean
    SAM
    • SQLite更新クエリ

    SQLiteでは、UPDATEステートメントを使用してテーブル内の既存のレコードを変更できます。 SQLiteのWHERE句を使用して、更新する行を正確に指定できます。 WHERE句によって適用されるフィルタリング条件に応じて、すべての行、一部の行、またはなしを簡単に更新できます。

    構文

    UPDATE table_name  
    SET column1 = value1, column2 = value2...., columnN = valueN  
    WHERE [condition];

    UPDATE StudentInfo SET DEPARTMENTID = 4 WHERE ID = '2';

    出力

     SELECT *FROM StudentInfo;
    ID          NAME        AGE         ADDRESS     DEPARTMENTID  PHONE
    ----------  ----------  ----------  ----------  ------------  ----------
    1           Dean        20          California  2             934*******
    2           SAM         22          Texas       4             976*******
    3           John        23          Norway      1             923*******
    4           Mitch       22          Houston     3             934*******
    • SQLite削除クエリ

    SQLiteでは、DELETEステートメントを使用してテーブルからレコードを削除できます。 WHERE句によって適用されるフィルタリング条件に応じて、すべての行、一部の行、またはなしを簡単に削除できます。

     DELETE FROM DepartmentInfo WHERE DeptName = 'Science';

    出力

     SELECT *FROM DepartmentInfo;
    DeptID DeptName
    ---------- -----------
    1 Mathematics
    2 Psychology
    3 Sports
    4 Music

    外部キーによって参照されているレコードを削除しようとすると、エラーが発生します。主キーレコードを削除する前に、まず外部キーレコードを削除する必要があります。学科の科学を削除してみましょう。

    DELETE FROM DepartmentInfo WHERE DeptName = 'Music';
    Error: FOREIGN KEY constraint failed

    したがって、主キーを削除する前に、外部キーレコードを削除する必要があります。

    DELETE FROM StudentInfo WHERE DEPARTMENTID = 4;
    
    sqlite> DELETE FROM DepartmentInfo WHERE DeptName = 'Music';
    
    sqlite> SELECT *FROM DepartmentInfo;
    DeptID      DeptName
    ----------  -----------
    1           Mathematics
    2           Psychology
    3           Sports
    
     SELECT *FROM StudentInfo;
    ID          NAME        AGE         ADDRESS     DEPARTMENTID  PHONE
    ----------  ----------  ----------  ----------  ------------  ----------
    1           Dean        20          California  2             934*******
    3           John        23          Norway      1             923*******
    4           Mitch       22          Houston     3             934*******

    これで、SQLiteデータベーステーブルのレコードを編集する方法がわかりました。このSQLiteチュートリアルブログでさらに進んで、SQLiteで最も頻繁に遭遇するさまざまな句と条件について説明しましょう。

    SQLiteの句/条件

    句を始める前に、SQLiteのSELECTステートメントの完全な構文を次に示します。

    構文

    SELECT [ALL | DISTINCT] result [FROM table-list]
    [WHERE expr]
    [GROUP BY expr-list]
    [HAVING expr]
    [compound-op select]*
    [ORDER BY sort-expr-list]
    [LIMIT integer [(OFFSET|,) integer]]

    注:以下に示すように、StudentInfoテーブルとDepartmentInfoテーブルを更新しました。

    //Student 
    Table ID          NAME        AGE         ADDRESS     DEPARTMENTID  PHONE
    ----------  ----------  ----------  ----------  ------------  ----------
    1           Dean        20          California  2             934*******
    3           John        23          Norway      1             923*******
    4           Mitch       22          Houston     3             934*******
    2           SAM         22          Texas       4             976*******
    5           Johny       23          Norway      2             945*******
    6           Robin       23          Norway      2             UNKNOWN
    
    //Department Details
    DeptID      DeptName
    ----------  -----------
    1           Mathematics
    2           Psychology
    3           Sports
    4           Music
    5           Science
    
    • SQLite WHERE

    SQLiteでは、WHERE句を使用して、データベース内のテーブルから必要なデータを取得するための1つ以上の条件を定義することにより、SELECTステートメントに制限を課します。指定された条件が満たされるか真である場合、テーブルから特定の値を返します。前に見たように、WHERE句はSELECTステートメントで使用されるだけでなく、UPDATE、DELETEステートメントなどでも使用されます。

    SELECT NAME FROM StudentInfo WHERE AGE = 23;NAME
    ----------
    John
    Johny
    Robin

    SQLiteには、WHERE句で使用できる関係演算子がいくつかあります。

    • SQLite GROUP BY

    SQLiteでは、GROUP BY句を使用して、指定された1つ以上の列の値が繰り返される単一の行にデータを集約します。この句は、SELECTステートメントのWHERE句とともに使用され、ORDERBY句の前にあります。

    構文

    SELECT result
    FROM [table-list]
    GROUP BY [expr-list]
    SELECT NAME, ADDRESS FROM StudentInfo GROUP BY NAME;
    
    NAME ADDRESS
    ---------- ----------
    Dean California
    John Norway
    Johny Norway
    Mitch Houston
    Robin Norway
    SAM Texas

    グループ化プロセスには2つのステップがあることに注意してください。まず、GROUP BY式を使用して、テーブルの行をさまざまなグループに配置します。グループが定義されると、SELECTステートメントはそれらのグループを単一の行にフラット化する方法を定義します。

    • SQLite ORDER BY

    通常、SQLiteテーブルはデータを不特定の順序で格納し、SQLite selectステートメントを使用してデータをフェッチしている間、同じ不特定の順序でレコードを返します。このような場合、ORDER BY句を使用して、列レコードを昇順または降順でソートできます。以下の例では、アドレスに基づいてデータをグループ化し、降順で並べ替えています。

    構文

    SELECT expressions
    FROM tables-list
    [WHERE conditions]
    ORDER BY column1, column2,... [ ASC | DESC ];

    SELECT ADDRESS, COUNT(ADDRESS) FROM StudentInfo GROUP BY ADDRESS ORDER BY ADDRESS DESC;
    ADDRESS COUNT(ADDRESS)
    ---------- --------------
    Texas 1
    Norway 3
    Houston 1
    California 1
    • SQLite HAVING BY

    SQLiteでは、 HAVING 句はWHEREと同じです 句。 HAVING句は、selectステートメントのgroupbyとともに集計が行われた後に適用される追加の条件です。一般的にSQLiteでは、どこで 句は、テーブル内の個々の要素と HAVINGに条件を適用するために使用されます 句は、GroupBy句によって作成されたグループに基づいてフィルター条件を追加するために使用されます。

    SELECT ADDRESS, COUNT(ADDRESS) FROM StudentInfo 
    GROUP BY ADDRESS 
    HAVING COUNT(*)>1;
    
    ADDRESS     COUNT(ADDRESS)
    ----------  --------------
    Norway      3
    • SQLite制限句

    SQLiteでは、LIMIT句を使用して、selectステートメントによって返されるレコードに制限を設定します。概念を理解するための例を考えてみましょう。

    構文

    SELECT expressions
    FROM tables-list
    [WHERE conditions]
    LIMIT number_rows OFFSET offset_value;

    SELECT NAME, ADDRESS FROM StudentInfo LIMIT 4 OFFSET 2;
    NAME        ADDRESS
    ----------  ----------
    Mitch       Houston
    SAM         Texas
    Johny       Norway
    Robin       Norway 

    OFFSETはオプションであり、 offset_value に基づいて、結果セットの先頭でスキップする行数を定義します。 。

    • SQLite AND&OR

    SQLiteでは、AND&OR演算子を使用して、要件に基づいて、select、insert、update、およびdeleteステートメントで複数の条件を実行します。 SQLite AND演算子は、AND演算子を使用して定義された条件を満たす行またはレコードを返します。

    例1

    SELECT NAME FROM StudentInfo WHERE AGE = 22 AND ADDRESS = 'Texas';
    NAME
    ----------
    SAM

    OR条件は、SQLiteステートメントで複数の条件を定義するために使用され、1つの条件のいずれかが満たされた場合、ステートメントから行またはレコードを返します。

    例2

    SELECT NAME FROM StudentInfo WHERE (AGE = 22 AND ADDRESS = 'Norway') OR ADDRESS = 'Norway';
    NAME
    ----------
    John
    Johny
    Robin
    • SQLiteGLOBオペレーター

    SQLiteでは、GLOB演算子を使用して、指定された文字列値が特定のパターンに一致するかどうかを確認します。文字列値がパターン値と一致する場合、 trueを返します LIKE演算子に似ています。また、GLOBは大文字と小文字を区別します。

    構文

    SELECT * FROM table_name
    WHERE column_name GLOB 'search-expression'

    SELECT *FROM StudentInfo WHERE NAME GLOB 'Joh*';
    ID NAME AGE ADDRESS DEPARTMENTID PHONE
    ---------- ---------- ---------- ---------- ------------ ----------
    3 John 23 Norway 1 923*******
    5 Johny 23 Norway 2 945*******
    • SQLite Distinct

    SQLiteでは、DISTINCTキーワードはSELECTステートメントの結果セットをスキャンし、重複する行を削除します。また、NULL値は重複と見なされるため、NULL値を持つ列でDISTINCT句を使用すると、NULL値の1行のみが保持されます。複数の列にDISTINCTを適用すると、ステートメントは coulnm1の一意の組み合わせを返します。 およびcolumn2。

    SELECT DISTINCT AGE FROM StudentInfo;
    AGE
    ----------
    20
    23
    22
    • SQLiteIN演算子

    SQLiteでは、IN演算子を使用して、指定された値が指定された値のリストまたはサブクエリによって返される結果と一致するかどうかを判断します。

    SELECT NAME FROM StudentInfo WHERE ADDRESS IN ('Texas', 'Houston');
    NAME
    ----------
    Mitch
    SAM
    • SQLite UNION&UNION ALL

    SQLiteでは、UNION演算子を使用して 2の結果セットを結合します 以上のSELECTステートメントを使用すると、さまざまなSELECTステートメント間の重複行が削除されます。 UNION演算子で使用したSELECTステートメントは、同様のデータ型の結果セットに同じ数のフィールドを持っている必要があることに注意してください。

    構文

    SELECT expression1, expression2,... expression_n
    FROM tables
    [WHERE conditions]
    
    UNION / UNION ALL
    
    SELECT expression1, expression2,... expression_n
    FROM tables
    [WHERE conditions];

     SELECT DEPARTMENTID FROM StudentInfo 
    UNION
    SELECT DeptId FROM DepartmentInfo ORDER BY DEPARTMENTID ASC;
    
    DEPARTMENTID
    ------------
    1
    2
    3
    4
    5
    

    UNION ALL演算子は、2つ以上のSELECTステートメントの結果セットを結合するために使用され、重複を含むすべての行を返します。

    SELECT DEPARTMENTID FROM StudentInfo UNION ALL SELECT DeptId FROM DepartmentInfo ORDER BY DEPARTMENTID ASC;
    DEPARTMENTID
    ------------
    1
    1
    2
    2
    2
    2
    3
    3
    4
    4
    5

    これで、SQLiteを操作するときに使用する必要のある最も基本的なコマンドについて説明しました。このSQLiteチュートリアルを進めて、SQLiteのjoinステートメントを確認しましょう。

    SQLiteに参加

    SQLiteでは、結合を使用して、データベース内の2つ以上のテーブルのレコードを結合し、要件に基づいてレコードを取得します。 SQLiteで使用できるさまざまなタイプのJOINSは次のとおりです。

    • 内部参加 – INNER JOINは、SQLiteステートメントで定義された条件に基づいて、複数のテーブルから一致するレコードのみを結合して返すために使用されます。
    • 外部参加 – SQLite外部結合は、内部結合と同じように、複数のテーブルから一致する行を選択します 関係外のその他の行。簡単に言えば、SQLiteOUTERJOINはINNERJOINの追加であると言えます。 一般に、SQL標準には、LEFT、RIGHT、およびFULL外部結合の3種類の外部結合がありますが、SQLiteはLEFTOUTERJOINのみをサポートします。
    • クロスジョイン –最初のテーブルの各行を2番目のテーブルのすべての行と照合することにより、行のデカルト積を取得するために使用されます。
    • 自己参加 –同じテーブルをそれ自体と結合するために使用されます。自己結合を使用するには、要件に基づいて操作を実行するために、同じテーブルに異なるエイリアス名を作成する必要があります。

    概念は、SQLなどの他のリレーショナルデータベースシステムの概念と似ています。したがって、詳細については、SQL結合に関するこの記事を参照してください。

    これで、基本的なSQLiteコマンドについて説明しました。高度な概念はここではカバーされていません。したがって、SQLiteの高度な概念に関する別の記事をお楽しみに。 SQLiteが提供しなければならないすべての優れた機能を備えていても、特定の欠点もあります。

    SQLiteチュートリアル:SQLiteのデメリット

    以下にリストされているのは、SQLiteを使用することのデメリットです。

    • クライアント/サーバーアーキテクチャではうまく機能しません。
    • SQLiteデータベースのサイズはほとんどの場合2GBに制限されています。
    • SQLiteはRIGHTOUTERJOINとFULLOUTERJOINを実装していません。 SQLiteでは、LEFTOUTERJOINのみを実装できます。
    • SQLiteのビューは読み取り専用です。ビューでDMLステートメント(挿入、更新、削除)を使用することはできません。
    • SQLiteでGRANTおよびREVOKEステートメントを使用することはできません。

    これで、このSQLiteチュートリアルは終了です。

    MySQLについて詳しく知り、このオープンソースのリレーショナルデータベースについて知りたい場合は、MySQLDBA認定トレーニングをご覧ください。 インストラクター主導のライブトレーニングと実際のプロジェクトの経験が付属しています。このトレーニングは、MySQLを深く理解し、主題をマスターするのに役立ちます。

    質問がありますか?このSQLiteチュートリアルのコメントセクションでそれについて言及してください。折り返しご連絡いたします。


    1. SQLiteExceptionそのようなテーブルはありません:コンパイル中のItemTable:Select_id、.... from ItemTable

    2. jdbcTimestampまたはDateを使用する場合のOracleとの無視できない実行プランの違い

    3. レコードが存在するかどうかを判断する最速の方法

    4. それぞれ1つのスキーマを持つ複数のデータベースを使用するのが良いですか、それとも複数のスキーマを持つ1つのデータベースを使用するのが良いですか?