[TIL] SQL, Database


What is SQL?


sql is structured query language
=構造化クエリ言語
  • データベースプログラミング言語
  • What is Query?

  • query is「クエリー」
  • クエリクエリ
  • 記憶する情報をフィルタリングする問題
  • .
    =>必要なデータを取得するためにqueryをデータベースに送信します.

    なぜデータベースが必要ですか?

  • In-memory
    =>サーバもクライアントもシャットダウン時にデータが消失する
  • サーバのファイルシステムへの書き込み(File I/O)は消えませんか?
    =>目的のデータのみをインポートすることはできません.また、すべてのデータをインポートした後にサーバからフィルタリングする必要があります.(サーバ負荷が大きい)
    データベース(データ専用サーバ)

    基本クエリーコマンド


    Select
    Where
    And, Or, Not
    Order By
    Insert Into
    Null Values
    Update
    Delete
    Count
    Like
    Wildcards
    Aliases
    Joins
    Inner Join
    Left Join
    Right Join
    Group By

    データベース関連


    SQL Create DB
    SQL Drop DB
    SQL Create Table
    SQL Drop Table
    SQL Alter Table
    SQL Not Null
    SQL Unique
    SQL Primary Key
    SQL Foreign Key
    SQL Default
    SQL Auto Increment
    SQL Dates

    データベース関連コマンド


    データベースの作成
    CREATE DATABASE 데이터베이스_이름;
    データベースの使用
    USE 데이터베이스_이름;
    テーブルの作成
    CREATE TABLE user (
      id int PRIMARY KEY AUTO_INCREMENT,
      name varchar(255),
      email varchar(255)
    );
    フィールド名フィールドタイプその他の属性id数値プライマリキー、名前文字列(最大255文字)email文字列(最大255文字)を自動的に増加
    表情報の表示
    DESCRIBE user;
    mysql> describe user;
    +-------+--------------+------+-----+---------+----------------+
    | Field | Type         | Null | Key | Default | Extra          |
    +-------+--------------+------+-----+---------+----------------+
    | id    | int          | NO   | PRI | NULL    | auto_increment |
    | name  | varchar(255) | YES  |     | NULL    |                |
    | email | varchar(255) | YES  |     | NULL    |                |
    +-------+--------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)

    SQLコマンド


    SELECT
    -必要なコンテンツを検索するために使用しますが、単独で使用するよりも複数のコマンドの組み合わせを使用して、検索に必要なコンテンツのみをフィルタ処理します.
    たとえば、
    SELECT *(특성_1)
    FROM DB01(테이블_이름)
    「*」はワイルドカード(ワイルドカード)として使用されます.
    DB 01テーブルからすべての特性を出力します.
    WHERE
    -フィルタの役割
    SELECT 특성_1, 특성_2
    FROM 테이블_이름
    WHERE 특성_1 = "특정 값"
    select * from user where name = 'duhyunkim'
    テーブルuserからnameが「duhyunjim」のすべてのプロパティを出力します.
    `select * from user where name <> 'duhyunkim'`
    テーブルuserからnameを出力するのは「duhyunjim」のすべてのプロパティではありません.
    <>代替!=使用しても同様の効果があります.(違いはわかりませんが)
  • 特定の値より大きい、またはそれより小さいデータをフィルタリングする場合、"<"、">"、"より大きい"、"より小さい"は"<="、">="を使用します.
  • SELECT 특성_1, 특성_2
    FROM 테이블_이름
    WHERE 특성_1 > "특정 값"
    
    SELECT 특성_1, 특성_2
    FROM 테이블_이름
    WHERE 특성_1 <= "특정 값"
  • 文字列で特定の値に似た値をフィルタする場合は、LIKEと"%"または"*"を使用します.
  • SELECT 특성_1, 특성_2
    FROM 테이블_이름
    WHERE 특성_2 LIKE "%특정 문자열%"
    INを使用して、
  • リストの値に一致するデータをフィルタします.
  • SELECT 특성_1, 특성_2
    FROM 테이블_이름
    WHERE 특성_2 IN ("특정값_1", "특정값_2")
    値が
  • でない場合、NULLの検索時にISとして使用されます.
  • SELECT *
    FROM 테이블_이름
    WHERE 특성_1 IS NULL
    値が
  • でない限り、NOTを追加できます.
  • SELECT *
    FROM 테이블_이름
    WHERE 특성_1 IS NOT NULL
    ORDER BY
    返されるデータ結果をソートする方法に関するオプション.
    (デフォルトは昇順です.)
    SELECT *
    FROM 테이블_이름
    ORDER BY 특성_1
    降順で並べ替えますか?
    SELECT *
    FROM 테이블_이름
    ORDER BY 특성_1 DESC
    LIMIT
    返されるデータ結果の数を決定します.クエリ文で使用する場合は、最後に追加する必要があります.
    データ結果の数を200個に制限できます.
    SELECT *
    FROM 테이블_이름
    LIMIT 200
    DISTINCT
    ユニークな価格が欲しい場合は、SELECTの後ろに貼って使うことができます.
    属性1のみに基づいてユニークな値を選択します.
    SELECT DISTINCT 특성_1
    FROM 테이블_이름
    プロパティ1、プロパティ2、およびプロパティ3のユニークな「組合せ」値を選択します.
    SELECT
      DISTINCT
        특성_1
        ,특성_2
        ,특성_3
    FROM 테이블_이름
    INNER JOIN or JOIN
    共通の部分にのみ接続します.
    https://sql-joins.leopard.in.ua/
    (を参照)
    SELECT *
    FROM 테이블_1
    JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
    OUTER JOIN
    「left inclusive」「right inclusion」「fullouterjoin」には3つの基本的な選択があります.(上のリンクを参照して、どの部分が参照図に適用されるかを確認してください)
    AS
    必要な文字列に名前を変更
    SELECT COUNT(name) AS ContentCount 
    FROM user 
    JOIN content ON user.id = content.userId 
    WHERE user.name = 'duRiCha'`

    Count
    結果を数値に戻す
    SELECT user.name, COUNT(content.title) AS ContentCount 
    FROM content RIGHT JOIN user ON content.userId = user.id 
    group by user.name

    Groub by
    必要な結果値のみを選択して出力
    https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_groupby